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