| Index: src/hydrogen-uint32-analysis.cc
|
| diff --git a/src/hydrogen-uint32-analysis.cc b/src/hydrogen-uint32-analysis.cc
|
| index 835a198d4d8b53f42d06542806f3381116ea1869..8de887d6f805271aa355f782fddc1987932e3738 100644
|
| --- a/src/hydrogen-uint32-analysis.cc
|
| +++ b/src/hydrogen-uint32-analysis.cc
|
| @@ -35,8 +35,17 @@ bool HUint32AnalysisPhase::IsSafeUint32Use(HValue* val, HValue* use) {
|
| // Operations that operate on bits are safe.
|
| if (use->IsBitwise() || use->IsShl() || use->IsSar() || use->IsShr()) {
|
| return true;
|
| - } else if (use->IsChange() || use->IsSimulate()) {
|
| - // Conversions and deoptimization have special support for unt32.
|
| + } else if (use->IsSimulate()) {
|
| + // Deoptimization has special support for uint32.
|
| + return true;
|
| + } else if (use->IsChange()) {
|
| + // Conversions have special support for uint32.
|
| + // This ASSERT guards that the conversion in question is actually
|
| + // implemented. Do not extend the whitelist without adding
|
| + // support to LChunkBuilder::DoChange().
|
| + ASSERT(HChange::cast(use)->to().IsDouble() ||
|
| + HChange::cast(use)->to().IsSmi() ||
|
| + HChange::cast(use)->to().IsTagged());
|
| return true;
|
| } else if (use->IsStoreKeyed()) {
|
| HStoreKeyed* store = HStoreKeyed::cast(use);
|
|
|