| Index: src/x64/lithium-x64.h
|
| diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h
|
| index 06158d47976d9eb3c21a8bbb2ced543a6f7bd697..95d56beb2c62bc499f49746ef6b2bb1a7bff9c9a 100644
|
| --- a/src/x64/lithium-x64.h
|
| +++ b/src/x64/lithium-x64.h
|
| @@ -1617,8 +1617,12 @@
|
| // an index cannot fold the scale operation into a load and need an extra
|
| // temp register to do the work.
|
| return SmiValuesAre31Bits() && key_representation.IsSmi() &&
|
| - (elements_kind == UINT8_ELEMENTS || elements_kind == INT8_ELEMENTS ||
|
| - elements_kind == UINT8_CLAMPED_ELEMENTS);
|
| + (elements_kind == EXTERNAL_INT8_ELEMENTS ||
|
| + elements_kind == EXTERNAL_UINT8_ELEMENTS ||
|
| + elements_kind == EXTERNAL_UINT8_CLAMPED_ELEMENTS ||
|
| + elements_kind == UINT8_ELEMENTS ||
|
| + elements_kind == INT8_ELEMENTS ||
|
| + elements_kind == UINT8_CLAMPED_ELEMENTS);
|
| }
|
|
|
|
|
| @@ -1632,8 +1636,14 @@
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
|
|
|
| + bool is_external() const {
|
| + return hydrogen()->is_external();
|
| + }
|
| bool is_fixed_typed_array() const {
|
| return hydrogen()->is_fixed_typed_array();
|
| + }
|
| + bool is_typed_elements() const {
|
| + return is_external() || is_fixed_typed_array();
|
| }
|
| LOperand* elements() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| @@ -2225,8 +2235,12 @@
|
| inputs_[2] = value;
|
| }
|
|
|
| + bool is_external() const { return hydrogen()->is_external(); }
|
| bool is_fixed_typed_array() const {
|
| return hydrogen()->is_fixed_typed_array();
|
| + }
|
| + bool is_typed_elements() const {
|
| + return is_external() || is_fixed_typed_array();
|
| }
|
| LOperand* elements() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
|
|