Index: src/crankshaft/arm64/lithium-arm64.h |
diff --git a/src/crankshaft/arm64/lithium-arm64.h b/src/crankshaft/arm64/lithium-arm64.h |
index d113b7e22b1dfce03ef7eeb1c32f333a75a72326..3094289038a0b3806f6c2bdfac40859a84bf2fac 100644 |
--- a/src/crankshaft/arm64/lithium-arm64.h |
+++ b/src/crankshaft/arm64/lithium-arm64.h |
@@ -1679,16 +1679,18 @@ class LLoadGlobalGeneric final : public LTemplateInstruction<1, 2, 1> { |
}; |
-template<int T> |
-class LLoadKeyed : public LTemplateInstruction<1, 2, T> { |
+template <int T> |
+class LLoadKeyed : public LTemplateInstruction<1, 3, T> { |
public: |
- LLoadKeyed(LOperand* elements, LOperand* key) { |
+ LLoadKeyed(LOperand* elements, LOperand* key, LOperand* backing_store_owner) { |
this->inputs_[0] = elements; |
this->inputs_[1] = key; |
+ this->inputs_[2] = backing_store_owner; |
} |
LOperand* elements() { return this->inputs_[0]; } |
LOperand* key() { return this->inputs_[1]; } |
+ LOperand* backing_store_owner() { return this->inputs_[2]; } |
ElementsKind elements_kind() const { |
return this->hydrogen()->elements_kind(); |
} |
@@ -1721,8 +1723,9 @@ class LLoadKeyed : public LTemplateInstruction<1, 2, T> { |
class LLoadKeyedExternal: public LLoadKeyed<1> { |
public: |
- LLoadKeyedExternal(LOperand* elements, LOperand* key, LOperand* temp) : |
- LLoadKeyed<1>(elements, key) { |
+ LLoadKeyedExternal(LOperand* elements, LOperand* key, |
+ LOperand* backing_store_owner, LOperand* temp) |
+ : LLoadKeyed<1>(elements, key, backing_store_owner) { |
temps_[0] = temp; |
} |
@@ -1734,8 +1737,8 @@ class LLoadKeyedExternal: public LLoadKeyed<1> { |
class LLoadKeyedFixed: public LLoadKeyed<1> { |
public: |
- LLoadKeyedFixed(LOperand* elements, LOperand* key, LOperand* temp) : |
- LLoadKeyed<1>(elements, key) { |
+ LLoadKeyedFixed(LOperand* elements, LOperand* key, LOperand* temp) |
+ : LLoadKeyed<1>(elements, key, nullptr) { |
temps_[0] = temp; |
} |
@@ -1747,8 +1750,8 @@ class LLoadKeyedFixed: public LLoadKeyed<1> { |
class LLoadKeyedFixedDouble: public LLoadKeyed<1> { |
public: |
- LLoadKeyedFixedDouble(LOperand* elements, LOperand* key, LOperand* temp) : |
- LLoadKeyed<1>(elements, key) { |
+ LLoadKeyedFixedDouble(LOperand* elements, LOperand* key, LOperand* temp) |
+ : LLoadKeyed<1>(elements, key, nullptr) { |
temps_[0] = temp; |
} |
@@ -2369,13 +2372,15 @@ class LStackCheck final : public LTemplateInstruction<0, 1, 0> { |
}; |
-template<int T> |
-class LStoreKeyed : public LTemplateInstruction<0, 3, T> { |
+template <int T> |
+class LStoreKeyed : public LTemplateInstruction<0, 4, T> { |
public: |
- LStoreKeyed(LOperand* elements, LOperand* key, LOperand* value) { |
+ LStoreKeyed(LOperand* elements, LOperand* key, LOperand* value, |
+ LOperand* backing_store_owner) { |
this->inputs_[0] = elements; |
this->inputs_[1] = key; |
this->inputs_[2] = value; |
+ this->inputs_[3] = backing_store_owner; |
} |
bool is_external() const { return this->hydrogen()->is_external(); } |
@@ -2388,6 +2393,7 @@ class LStoreKeyed : public LTemplateInstruction<0, 3, T> { |
LOperand* elements() { return this->inputs_[0]; } |
LOperand* key() { return this->inputs_[1]; } |
LOperand* value() { return this->inputs_[2]; } |
+ LOperand* backing_store_owner() { return this->inputs_[3]; } |
ElementsKind elements_kind() const { |
return this->hydrogen()->elements_kind(); |
} |
@@ -2427,8 +2433,8 @@ class LStoreKeyed : public LTemplateInstruction<0, 3, T> { |
class LStoreKeyedExternal final : public LStoreKeyed<1> { |
public: |
LStoreKeyedExternal(LOperand* elements, LOperand* key, LOperand* value, |
- LOperand* temp) : |
- LStoreKeyed<1>(elements, key, value) { |
+ LOperand* backing_store_owner, LOperand* temp) |
+ : LStoreKeyed<1>(elements, key, value, backing_store_owner) { |
temps_[0] = temp; |
} |
@@ -2441,8 +2447,8 @@ class LStoreKeyedExternal final : public LStoreKeyed<1> { |
class LStoreKeyedFixed final : public LStoreKeyed<1> { |
public: |
LStoreKeyedFixed(LOperand* elements, LOperand* key, LOperand* value, |
- LOperand* temp) : |
- LStoreKeyed<1>(elements, key, value) { |
+ LOperand* temp) |
+ : LStoreKeyed<1>(elements, key, value, nullptr) { |
temps_[0] = temp; |
} |
@@ -2455,8 +2461,8 @@ class LStoreKeyedFixed final : public LStoreKeyed<1> { |
class LStoreKeyedFixedDouble final : public LStoreKeyed<1> { |
public: |
LStoreKeyedFixedDouble(LOperand* elements, LOperand* key, LOperand* value, |
- LOperand* temp) : |
- LStoreKeyed<1>(elements, key, value) { |
+ LOperand* temp) |
+ : LStoreKeyed<1>(elements, key, value, nullptr) { |
temps_[0] = temp; |
} |