| Index: src/arm/lithium-arm.h
|
| diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h
|
| index fb36fe9c0d9dc9191b49b8f23d792a5250bcf01d..c82732537bf819e7c65c2ae0253ee34b4825b519 100644
|
| --- a/src/arm/lithium-arm.h
|
| +++ b/src/arm/lithium-arm.h
|
| @@ -125,10 +125,8 @@ class LCodeGen;
|
| V(LoadFunctionPrototype) \
|
| V(LoadGlobalCell) \
|
| V(LoadGlobalGeneric) \
|
| - V(LoadKeyedFastDoubleElement) \
|
| - V(LoadKeyedFastElement) \
|
| + V(LoadKeyed) \
|
| V(LoadKeyedGeneric) \
|
| - V(LoadKeyedSpecializedArrayElement) \
|
| V(LoadNamedField) \
|
| V(LoadNamedFieldPolymorphic) \
|
| V(LoadNamedGeneric) \
|
| @@ -157,10 +155,8 @@ class LCodeGen;
|
| V(StoreContextSlot) \
|
| V(StoreGlobalCell) \
|
| V(StoreGlobalGeneric) \
|
| - V(StoreKeyedFastDoubleElement) \
|
| - V(StoreKeyedFastElement) \
|
| + V(StoreKeyed) \
|
| V(StoreKeyedGeneric) \
|
| - V(StoreKeyedSpecializedArrayElement) \
|
| V(StoreNamedField) \
|
| V(StoreNamedGeneric) \
|
| V(StringAdd) \
|
| @@ -1357,58 +1353,32 @@ class LLoadExternalArrayPointer: public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
|
| +class LLoadKeyed: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - LLoadKeyedFastElement(LOperand* elements, LOperand* key) {
|
| + LLoadKeyed(LOperand* elements, LOperand* key) {
|
| inputs_[0] = elements;
|
| inputs_[1] = key;
|
| }
|
|
|
| - LOperand* elements() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement)
|
| -
|
| - uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| -};
|
| -
|
| -
|
| -class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
|
| - public:
|
| - LLoadKeyedFastDoubleElement(LOperand* elements, LOperand* key) {
|
| - inputs_[0] = elements;
|
| - inputs_[1] = key;
|
| + LOperand* elements() {
|
| + ASSERT(!is_external());
|
| + return inputs_[0];
|
| }
|
| -
|
| - LOperand* elements() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
|
| - "load-keyed-fast-double-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
|
| -
|
| - uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| -};
|
| -
|
| -
|
| -class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
| - public:
|
| - LLoadKeyedSpecializedArrayElement(LOperand* external_pointer, LOperand* key) {
|
| - inputs_[0] = external_pointer;
|
| - inputs_[1] = key;
|
| + LOperand* external_pointer() {
|
| + ASSERT(is_external());
|
| + return inputs_[0];
|
| }
|
| -
|
| - LOperand* external_pointer() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement,
|
| - "load-keyed-specialized-array-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement)
|
| -
|
| ElementsKind elements_kind() const {
|
| return hydrogen()->elements_kind();
|
| }
|
| + bool is_external() const {
|
| + return hydrogen()->is_external();
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
|
| + DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
|
| +
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
| @@ -1922,51 +1892,35 @@ class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
|
| };
|
|
|
|
|
| -class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
|
| +class LStoreKeyed: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - LStoreKeyedFastElement(LOperand* object, LOperand* key, LOperand* value) {
|
| + LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) {
|
| inputs_[0] = object;
|
| inputs_[1] = key;
|
| inputs_[2] = value;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement,
|
| - "store-keyed-fast-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
|
| -
|
| - virtual void PrintDataTo(StringStream* stream);
|
| -
|
| - uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| -};
|
| -
|
| -
|
| -class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
|
| - public:
|
| - LStoreKeyedFastDoubleElement(LOperand* elements,
|
| - LOperand* key,
|
| - LOperand* value) {
|
| - inputs_[0] = elements;
|
| - inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + bool is_external() const { return hydrogen()->is_external(); }
|
| + LOperand* object() {
|
| + ASSERT(!is_external());
|
| + return inputs_[0];
|
| + }
|
| + LOperand* external_pointer() {
|
| + ASSERT(is_external());
|
| + return inputs_[0];
|
| }
|
| -
|
| - LOperand* elements() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| LOperand* value() { return inputs_[2]; }
|
| + ElementsKind elements_kind() const {
|
| + return hydrogen()->elements_kind();
|
| + }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
|
| - "store-keyed-fast-double-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
|
| + DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
|
| + DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| -
|
| - uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| -
|
| bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
|
| + uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
|
|
| @@ -1990,28 +1944,6 @@ class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
|
| StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
| };
|
|
|
| -class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
|
| - public:
|
| - LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
|
| - LOperand* key,
|
| - LOperand* value) {
|
| - inputs_[0] = external_pointer;
|
| - inputs_[1] = key;
|
| - inputs_[2] = value;
|
| - }
|
| -
|
| - LOperand* external_pointer() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement,
|
| - "store-keyed-specialized-array-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement)
|
| -
|
| - ElementsKind elements_kind() const { return hydrogen()->elements_kind(); }
|
| - uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| -};
|
| -
|
|
|
| class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> {
|
| public:
|
|
|