| Index: src/crankshaft/arm64/lithium-arm64.h
|
| diff --git a/src/crankshaft/arm64/lithium-arm64.h b/src/crankshaft/arm64/lithium-arm64.h
|
| index cf9519f05a1488cef4a9d456c5b19fbf2ff0c1f7..52c94b45347b2d6ccacb2cd80b8d35bf0f34aa41 100644
|
| --- a/src/crankshaft/arm64/lithium-arm64.h
|
| +++ b/src/crankshaft/arm64/lithium-arm64.h
|
| @@ -1714,16 +1714,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();
|
| }
|
| @@ -1756,8 +1758,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;
|
| }
|
|
|
| @@ -1769,8 +1772,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;
|
| }
|
|
|
| @@ -1782,8 +1785,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;
|
| }
|
|
|
| @@ -2417,13 +2420,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(); }
|
| @@ -2436,6 +2441,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();
|
| }
|
| @@ -2475,8 +2481,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;
|
| }
|
|
|
| @@ -2489,8 +2495,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;
|
| }
|
|
|
| @@ -2503,8 +2509,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;
|
| }
|
|
|
|
|