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); |