Index: runtime/vm/flow_graph_optimizer.cc |
=================================================================== |
--- runtime/vm/flow_graph_optimizer.cc (revision 38626) |
+++ runtime/vm/flow_graph_optimizer.cc (working copy) |
@@ -1659,9 +1659,8 @@ |
intptr_t deopt_id = Isolate::kNoDeoptId; |
if ((array_cid == kTypedDataInt32ArrayCid) || |
(array_cid == kTypedDataUint32ArrayCid)) { |
- // Prevent excessive deoptimization, assume full 32 bits used, and therefore |
- // generate Mint on 32-bit architectures. |
- deopt_id = (kSmiBits < 32) ? Isolate::kNoDeoptId : call->deopt_id(); |
+ // Deoptimization may be needed if result does not always fit in a Smi. |
+ deopt_id = (kSmiBits >= 32) ? Isolate::kNoDeoptId : call->deopt_id(); |
} |
// Array load and return. |
@@ -3555,9 +3554,8 @@ |
intptr_t deopt_id = Isolate::kNoDeoptId; |
if ((array_cid == kTypedDataInt32ArrayCid) || |
(array_cid == kTypedDataUint32ArrayCid)) { |
- // Prevent excessive deoptimization, assume full 32 bits used, and therefore |
- // generate Mint on 32-bit architectures. |
- deopt_id = (kSmiBits < 32) ? Isolate::kNoDeoptId : call->deopt_id(); |
+ // Deoptimization may be needed if result does not always fit in a Smi. |
+ deopt_id = (kSmiBits >= 32) ? Isolate::kNoDeoptId : call->deopt_id(); |
} |
*last = new(I) LoadIndexedInstr(new(I) Value(array), |