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]; } |