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_X87_LITHIUM_X87_H_ | 5 #ifndef V8_CRANKSHAFT_X87_LITHIUM_X87_H_ |
6 #define V8_CRANKSHAFT_X87_LITHIUM_X87_H_ | 6 #define V8_CRANKSHAFT_X87_LITHIUM_X87_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 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1591 | 1591 |
1592 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> { | 1592 class LLoadRoot final : public LTemplateInstruction<1, 0, 0> { |
1593 public: | 1593 public: |
1594 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root") | 1594 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root") |
1595 DECLARE_HYDROGEN_ACCESSOR(LoadRoot) | 1595 DECLARE_HYDROGEN_ACCESSOR(LoadRoot) |
1596 | 1596 |
1597 Heap::RootListIndex index() const { return hydrogen()->index(); } | 1597 Heap::RootListIndex index() const { return hydrogen()->index(); } |
1598 }; | 1598 }; |
1599 | 1599 |
1600 | 1600 |
1601 class LLoadKeyed final : public LTemplateInstruction<1, 2, 0> { | 1601 class LLoadKeyed final : public LTemplateInstruction<1, 3, 0> { |
1602 public: | 1602 public: |
1603 LLoadKeyed(LOperand* elements, LOperand* key) { | 1603 LLoadKeyed(LOperand* elements, LOperand* key, LOperand* backing_store_owner) { |
1604 inputs_[0] = elements; | 1604 inputs_[0] = elements; |
1605 inputs_[1] = key; | 1605 inputs_[1] = key; |
| 1606 inputs_[2] = backing_store_owner; |
1606 } | 1607 } |
1607 LOperand* elements() { return inputs_[0]; } | 1608 LOperand* elements() { return inputs_[0]; } |
1608 LOperand* key() { return inputs_[1]; } | 1609 LOperand* key() { return inputs_[1]; } |
| 1610 LOperand* backing_store_owner() { return inputs_[2]; } |
1609 ElementsKind elements_kind() const { | 1611 ElementsKind elements_kind() const { |
1610 return hydrogen()->elements_kind(); | 1612 return hydrogen()->elements_kind(); |
1611 } | 1613 } |
1612 bool is_fixed_typed_array() const { | 1614 bool is_fixed_typed_array() const { |
1613 return hydrogen()->is_fixed_typed_array(); | 1615 return hydrogen()->is_fixed_typed_array(); |
1614 } | 1616 } |
1615 | 1617 |
1616 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") | 1618 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") |
1617 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) | 1619 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) |
1618 | 1620 |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2139 | 2141 |
2140 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 2142 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
2141 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 2143 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
2142 | 2144 |
2143 void PrintDataTo(StringStream* stream) override; | 2145 void PrintDataTo(StringStream* stream) override; |
2144 Handle<Object> name() const { return hydrogen()->name(); } | 2146 Handle<Object> name() const { return hydrogen()->name(); } |
2145 LanguageMode language_mode() { return hydrogen()->language_mode(); } | 2147 LanguageMode language_mode() { return hydrogen()->language_mode(); } |
2146 }; | 2148 }; |
2147 | 2149 |
2148 | 2150 |
2149 class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { | 2151 class LStoreKeyed final : public LTemplateInstruction<0, 4, 0> { |
2150 public: | 2152 public: |
2151 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { | 2153 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val, |
| 2154 LOperand* backing_store_owner) { |
2152 inputs_[0] = obj; | 2155 inputs_[0] = obj; |
2153 inputs_[1] = key; | 2156 inputs_[1] = key; |
2154 inputs_[2] = val; | 2157 inputs_[2] = val; |
| 2158 inputs_[3] = backing_store_owner |
2155 } | 2159 } |
2156 | 2160 |
2157 bool is_fixed_typed_array() const { | 2161 bool is_fixed_typed_array() const { |
2158 return hydrogen()->is_fixed_typed_array(); | 2162 return hydrogen()->is_fixed_typed_array(); |
2159 } | 2163 } |
2160 LOperand* elements() { return inputs_[0]; } | 2164 LOperand* elements() { return inputs_[0]; } |
2161 LOperand* key() { return inputs_[1]; } | 2165 LOperand* key() { return inputs_[1]; } |
2162 LOperand* value() { return inputs_[2]; } | 2166 LOperand* value() { return inputs_[2]; } |
| 2167 LOperand* backing_store_owner() { return inputs_[3]; } |
2163 ElementsKind elements_kind() const { | 2168 ElementsKind elements_kind() const { |
2164 return hydrogen()->elements_kind(); | 2169 return hydrogen()->elements_kind(); |
2165 } | 2170 } |
2166 | 2171 |
2167 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") | 2172 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") |
2168 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) | 2173 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) |
2169 | 2174 |
2170 void PrintDataTo(StringStream* stream) override; | 2175 void PrintDataTo(StringStream* stream) override; |
2171 uint32_t base_offset() const { return hydrogen()->base_offset(); } | 2176 uint32_t base_offset() const { return hydrogen()->base_offset(); } |
2172 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } | 2177 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2806 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2811 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2807 }; | 2812 }; |
2808 | 2813 |
2809 #undef DECLARE_HYDROGEN_ACCESSOR | 2814 #undef DECLARE_HYDROGEN_ACCESSOR |
2810 #undef DECLARE_CONCRETE_INSTRUCTION | 2815 #undef DECLARE_CONCRETE_INSTRUCTION |
2811 | 2816 |
2812 } // namespace internal | 2817 } // namespace internal |
2813 } // namespace v8 | 2818 } // namespace v8 |
2814 | 2819 |
2815 #endif // V8_CRANKSHAFT_X87_LITHIUM_X87_H_ | 2820 #endif // V8_CRANKSHAFT_X87_LITHIUM_X87_H_ |
OLD | NEW |