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_ARM_LITHIUM_ARM_H_ | 5 #ifndef V8_ARM_LITHIUM_ARM_H_ |
6 #define V8_ARM_LITHIUM_ARM_H_ | 6 #define V8_ARM_LITHIUM_ARM_H_ |
7 | 7 |
8 #include "src/hydrogen.h" | 8 #include "src/hydrogen.h" |
9 #include "src/lithium-allocator.h" | 9 #include "src/lithium-allocator.h" |
10 #include "src/lithium.h" | 10 #include "src/lithium.h" |
(...skipping 1554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 LConstantOperand* constant_parameter_count() { | 1565 LConstantOperand* constant_parameter_count() { |
1566 ASSERT(has_constant_parameter_count()); | 1566 ASSERT(has_constant_parameter_count()); |
1567 return LConstantOperand::cast(parameter_count()); | 1567 return LConstantOperand::cast(parameter_count()); |
1568 } | 1568 } |
1569 LOperand* parameter_count() { return inputs_[2]; } | 1569 LOperand* parameter_count() { return inputs_[2]; } |
1570 | 1570 |
1571 DECLARE_CONCRETE_INSTRUCTION(Return, "return") | 1571 DECLARE_CONCRETE_INSTRUCTION(Return, "return") |
1572 }; | 1572 }; |
1573 | 1573 |
1574 | 1574 |
1575 class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 1, 0> { | 1575 class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
1576 public: | 1576 public: |
1577 explicit LLoadNamedField(LOperand* object) { | 1577 LLoadNamedField(LOperand* object, LOperand* object_properties = NULL) { |
1578 inputs_[0] = object; | 1578 inputs_[0] = object; |
| 1579 inputs_[1] = object_properties; |
1579 } | 1580 } |
1580 | 1581 |
1581 LOperand* object() { return inputs_[0]; } | 1582 LOperand* object() { return inputs_[0]; } |
| 1583 LOperand* object_properties() { return inputs_[1]; } |
1582 | 1584 |
1583 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") | 1585 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") |
1584 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) | 1586 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) |
1585 }; | 1587 }; |
1586 | 1588 |
1587 | 1589 |
1588 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> { | 1590 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
1589 public: | 1591 public: |
1590 LLoadNamedGeneric(LOperand* context, LOperand* object) { | 1592 LLoadNamedGeneric(LOperand* context, LOperand* object) { |
1591 inputs_[0] = context; | 1593 inputs_[0] = context; |
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2140 LOperand* value() { return inputs_[0]; } | 2142 LOperand* value() { return inputs_[0]; } |
2141 bool needs_check() const { return needs_check_; } | 2143 bool needs_check() const { return needs_check_; } |
2142 | 2144 |
2143 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") | 2145 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") |
2144 | 2146 |
2145 private: | 2147 private: |
2146 bool needs_check_; | 2148 bool needs_check_; |
2147 }; | 2149 }; |
2148 | 2150 |
2149 | 2151 |
2150 class LStoreNamedField V8_FINAL : public LTemplateInstruction<0, 2, 1> { | 2152 class LStoreNamedField V8_FINAL : public LTemplateInstruction<0, 3, 1> { |
2151 public: | 2153 public: |
2152 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) { | 2154 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp, |
| 2155 LOperand* object_properties = NULL) { |
2153 inputs_[0] = object; | 2156 inputs_[0] = object; |
2154 inputs_[1] = value; | 2157 inputs_[1] = value; |
| 2158 inputs_[2] = object_properties; |
2155 temps_[0] = temp; | 2159 temps_[0] = temp; |
2156 } | 2160 } |
2157 | 2161 |
2158 LOperand* object() { return inputs_[0]; } | 2162 LOperand* object() { return inputs_[0]; } |
2159 LOperand* value() { return inputs_[1]; } | 2163 LOperand* value() { return inputs_[1]; } |
| 2164 LOperand* object_properties() { return inputs_[2]; } |
2160 LOperand* temp() { return temps_[0]; } | 2165 LOperand* temp() { return temps_[0]; } |
2161 | 2166 |
2162 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") | 2167 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
2163 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | 2168 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
2164 | 2169 |
2165 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; | 2170 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
2166 | 2171 |
2167 Representation representation() const { | 2172 Representation representation() const { |
2168 return hydrogen()->field_representation(); | 2173 return hydrogen()->field_representation(); |
2169 } | 2174 } |
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2872 | 2877 |
2873 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2878 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2874 }; | 2879 }; |
2875 | 2880 |
2876 #undef DECLARE_HYDROGEN_ACCESSOR | 2881 #undef DECLARE_HYDROGEN_ACCESSOR |
2877 #undef DECLARE_CONCRETE_INSTRUCTION | 2882 #undef DECLARE_CONCRETE_INSTRUCTION |
2878 | 2883 |
2879 } } // namespace v8::internal | 2884 } } // namespace v8::internal |
2880 | 2885 |
2881 #endif // V8_ARM_LITHIUM_ARM_H_ | 2886 #endif // V8_ARM_LITHIUM_ARM_H_ |
OLD | NEW |