Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(451)

Side by Side Diff: src/crankshaft/mips64/lithium-mips64.h

Issue 1493983004: [crankshaft] Loads and stores to typed arrays have to reference the backing store holder (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/crankshaft/mips/lithium-mips.cc ('k') | src/crankshaft/mips64/lithium-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_ 5 #ifndef V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_
6 #define V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_ 6 #define V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_
7 7
8 #include "src/crankshaft/hydrogen.h" 8 #include "src/crankshaft/hydrogen.h"
9 #include "src/crankshaft/lithium.h" 9 #include "src/crankshaft/lithium.h"
10 #include "src/crankshaft/lithium-allocator.h" 10 #include "src/crankshaft/lithium-allocator.h"
(...skipping 1609 matching lines...) Expand 10 before | Expand all | Expand 10 after
1620 1620
1621 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> { 1621 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> {
1622 public: 1622 public:
1623 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root") 1623 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root")
1624 DECLARE_HYDROGEN_ACCESSOR(LoadRoot) 1624 DECLARE_HYDROGEN_ACCESSOR(LoadRoot)
1625 1625
1626 Heap::RootListIndex index() const { return hydrogen()->index(); } 1626 Heap::RootListIndex index() const { return hydrogen()->index(); }
1627 }; 1627 };
1628 1628
1629 1629
1630 class LLoadKeyed final : public LTemplateInstruction<1, 2, 0> { 1630 class LLoadKeyed final : public LTemplateInstruction<1, 3, 0> {
1631 public: 1631 public:
1632 LLoadKeyed(LOperand* elements, LOperand* key) { 1632 LLoadKeyed(LOperand* elements, LOperand* key, LOperand* backing_store_owner) {
1633 inputs_[0] = elements; 1633 inputs_[0] = elements;
1634 inputs_[1] = key; 1634 inputs_[1] = key;
1635 inputs_[2] = backing_store_owner;
1635 } 1636 }
1636 1637
1637 LOperand* elements() { return inputs_[0]; } 1638 LOperand* elements() { return inputs_[0]; }
1638 LOperand* key() { return inputs_[1]; } 1639 LOperand* key() { return inputs_[1]; }
1640 LOperand* backing_store_owner() { return inputs_[2]; }
1639 ElementsKind elements_kind() const { 1641 ElementsKind elements_kind() const {
1640 return hydrogen()->elements_kind(); 1642 return hydrogen()->elements_kind();
1641 } 1643 }
1642 bool is_fixed_typed_array() const { 1644 bool is_fixed_typed_array() const {
1643 return hydrogen()->is_fixed_typed_array(); 1645 return hydrogen()->is_fixed_typed_array();
1644 } 1646 }
1645 1647
1646 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") 1648 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1647 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) 1649 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1648 1650
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 2153 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
2152 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 2154 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
2153 2155
2154 void PrintDataTo(StringStream* stream) override; 2156 void PrintDataTo(StringStream* stream) override;
2155 2157
2156 Handle<Object> name() const { return hydrogen()->name(); } 2158 Handle<Object> name() const { return hydrogen()->name(); }
2157 LanguageMode language_mode() { return hydrogen()->language_mode(); } 2159 LanguageMode language_mode() { return hydrogen()->language_mode(); }
2158 }; 2160 };
2159 2161
2160 2162
2161 class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { 2163 class LStoreKeyed final : public LTemplateInstruction<0, 4, 0> {
2162 public: 2164 public:
2163 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) { 2165 LStoreKeyed(LOperand* object, LOperand* key, LOperand* value,
2166 LOperand* backing_store_owner) {
2164 inputs_[0] = object; 2167 inputs_[0] = object;
2165 inputs_[1] = key; 2168 inputs_[1] = key;
2166 inputs_[2] = value; 2169 inputs_[2] = value;
2170 inputs_[3] = backing_store_owner;
2167 } 2171 }
2168 2172
2169 bool is_fixed_typed_array() const { 2173 bool is_fixed_typed_array() const {
2170 return hydrogen()->is_fixed_typed_array(); 2174 return hydrogen()->is_fixed_typed_array();
2171 } 2175 }
2172 LOperand* elements() { return inputs_[0]; } 2176 LOperand* elements() { return inputs_[0]; }
2173 LOperand* key() { return inputs_[1]; } 2177 LOperand* key() { return inputs_[1]; }
2174 LOperand* value() { return inputs_[2]; } 2178 LOperand* value() { return inputs_[2]; }
2179 LOperand* backing_store_owner() { return inputs_[3]; }
2175 ElementsKind elements_kind() const { 2180 ElementsKind elements_kind() const {
2176 return hydrogen()->elements_kind(); 2181 return hydrogen()->elements_kind();
2177 } 2182 }
2178 2183
2179 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") 2184 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2180 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) 2185 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
2181 2186
2182 void PrintDataTo(StringStream* stream) override; 2187 void PrintDataTo(StringStream* stream) override;
2183 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } 2188 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
2184 uint32_t base_offset() const { return hydrogen()->base_offset(); } 2189 uint32_t base_offset() const { return hydrogen()->base_offset(); }
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
2798 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2803 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2799 }; 2804 };
2800 2805
2801 #undef DECLARE_HYDROGEN_ACCESSOR 2806 #undef DECLARE_HYDROGEN_ACCESSOR
2802 #undef DECLARE_CONCRETE_INSTRUCTION 2807 #undef DECLARE_CONCRETE_INSTRUCTION
2803 2808
2804 } // namespace internal 2809 } // namespace internal
2805 } // namespace v8 2810 } // namespace v8
2806 2811
2807 #endif // V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_ 2812 #endif // V8_CRANKSHAFT_MIPS64_LITHIUM_MIPS_H_
OLDNEW
« no previous file with comments | « src/crankshaft/mips/lithium-mips.cc ('k') | src/crankshaft/mips64/lithium-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698