OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |