Index: runtime/vm/intermediate_language_ia32.cc |
=================================================================== |
--- runtime/vm/intermediate_language_ia32.cc (revision 36535) |
+++ runtime/vm/intermediate_language_ia32.cc (working copy) |
@@ -1043,21 +1043,14 @@ |
Location index = locs()->in(1); |
Address element_address(kNoRegister, 0); |
- if (IsExternal()) { |
- element_address = index.IsRegister() |
- ? compiler->ExternalElementAddressForRegIndex( |
- index_scale(), array, index.reg()) |
- : compiler->ExternalElementAddressForIntIndex( |
- index_scale(), array, Smi::Cast(index.constant()).Value()); |
- } else { |
- ASSERT(this->array()->definition()->representation() == kTagged); |
- element_address = index.IsRegister() |
- ? compiler->ElementAddressForRegIndex( |
- class_id(), index_scale(), array, index.reg()) |
- : compiler->ElementAddressForIntIndex( |
- class_id(), index_scale(), array, |
- Smi::Cast(index.constant()).Value()); |
- } |
+ element_address = index.IsRegister() |
+ ? compiler->ElementAddressForRegIndex( |
+ true, // Load. |
+ IsExternal(), class_id(), index_scale(), array, index.reg()) |
+ : compiler->ElementAddressForIntIndex( |
+ true, // Load. |
+ IsExternal(), class_id(), index_scale(), array, |
+ Smi::Cast(index.constant()).Value()); |
if ((representation() == kUnboxedDouble) || |
(representation() == kUnboxedFloat32x4) || |
@@ -1277,21 +1270,14 @@ |
Location index = locs()->in(1); |
Address element_address(kNoRegister, 0); |
- if (IsExternal()) { |
- element_address = index.IsRegister() |
- ? compiler->ExternalElementAddressForRegIndex( |
- index_scale(), array, index.reg()) |
- : compiler->ExternalElementAddressForIntIndex( |
- index_scale(), array, Smi::Cast(index.constant()).Value()); |
- } else { |
- ASSERT(this->array()->definition()->representation() == kTagged); |
- element_address = index.IsRegister() |
- ? compiler->ElementAddressForRegIndex( |
- class_id(), index_scale(), array, index.reg()) |
- : compiler->ElementAddressForIntIndex( |
- class_id(), index_scale(), array, |
+ element_address = index.IsRegister() |
+ ? compiler->ElementAddressForRegIndex( |
+ false, // Store. |
+ IsExternal(), class_id(), index_scale(), array, index.reg()) |
+ : compiler->ElementAddressForIntIndex( |
+ false, // Store. |
+ IsExternal(), class_id(), index_scale(), array, |
Smi::Cast(index.constant()).Value()); |
- } |
if ((index_scale() == 1) && index.IsRegister()) { |
__ SmiUntag(index.reg()); |