Index: runtime/vm/intermediate_language_ia32.cc |
=================================================================== |
--- runtime/vm/intermediate_language_ia32.cc (revision 38576) |
+++ runtime/vm/intermediate_language_ia32.cc (working copy) |
@@ -993,8 +993,8 @@ |
// Result can be Smi or Mint when boxed. |
// Instruction can deoptimize if we optimistically assumed that the result |
// fits into Smi. |
- return CanDeoptimize() ? CompileType::FromCid(kSmiCid) |
- : CompileType::Int(); |
+ return Typed32BitIsSmi() ? CompileType::FromCid(kSmiCid) |
+ : CompileType::FromCid(kMintCid); |
default: |
UNIMPLEMENTED(); |
@@ -1003,6 +1003,10 @@ |
} |
+// TODO(srdjan): Implement this as a flag so that it can be optimized. |
+bool LoadIndexedInstr::Typed32BitIsSmi() const { return false; } |
+ |
+ |
Representation LoadIndexedInstr::representation() const { |
switch (class_id_) { |
case kArrayCid: |
@@ -1019,9 +1023,7 @@ |
return kTagged; |
case kTypedDataInt32ArrayCid: |
case kTypedDataUint32ArrayCid: |
- // Instruction can deoptimize if we optimistically assumed that the result |
- // fits into Smi. |
- return CanDeoptimize() ? kTagged : kUnboxedMint; |
+ return Typed32BitIsSmi() ? kTagged : kUnboxedMint; |
case kTypedDataFloat32ArrayCid: |
case kTypedDataFloat64ArrayCid: |
return kUnboxedDouble; |