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_X64_LITHIUM_X64_H_ | 5 #ifndef V8_X64_LITHIUM_X64_H_ |
6 #define V8_X64_LITHIUM_X64_H_ | 6 #define V8_X64_LITHIUM_X64_H_ |
7 | 7 |
8 #include "src/hydrogen.h" | 8 #include "src/hydrogen.h" |
9 #include "src/lithium.h" | 9 #include "src/lithium.h" |
10 #include "src/lithium-allocator.h" | 10 #include "src/lithium-allocator.h" |
(...skipping 2132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2143 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | 2143 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
2144 | 2144 |
2145 void PrintDataTo(StringStream* stream) override; | 2145 void PrintDataTo(StringStream* stream) override; |
2146 | 2146 |
2147 Representation representation() const { | 2147 Representation representation() const { |
2148 return hydrogen()->field_representation(); | 2148 return hydrogen()->field_representation(); |
2149 } | 2149 } |
2150 }; | 2150 }; |
2151 | 2151 |
2152 | 2152 |
2153 class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 0> { | 2153 class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 2> { |
2154 public: | 2154 public: |
2155 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) { | 2155 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value, |
| 2156 LOperand* slot, LOperand* vector) { |
2156 inputs_[0] = context; | 2157 inputs_[0] = context; |
2157 inputs_[1] = object; | 2158 inputs_[1] = object; |
2158 inputs_[2] = value; | 2159 inputs_[2] = value; |
| 2160 temps_[0] = slot; |
| 2161 temps_[1] = vector; |
2159 } | 2162 } |
2160 | 2163 |
2161 LOperand* context() { return inputs_[0]; } | 2164 LOperand* context() { return inputs_[0]; } |
2162 LOperand* object() { return inputs_[1]; } | 2165 LOperand* object() { return inputs_[1]; } |
2163 LOperand* value() { return inputs_[2]; } | 2166 LOperand* value() { return inputs_[2]; } |
| 2167 LOperand* temp_slot() { return temps_[0]; } |
| 2168 LOperand* temp_vector() { return temps_[1]; } |
2164 | 2169 |
2165 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 2170 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
2166 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 2171 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
2167 | 2172 |
2168 void PrintDataTo(StringStream* stream) override; | 2173 void PrintDataTo(StringStream* stream) override; |
2169 | 2174 |
2170 Handle<Object> name() const { return hydrogen()->name(); } | 2175 Handle<Object> name() const { return hydrogen()->name(); } |
2171 LanguageMode language_mode() { return hydrogen()->language_mode(); } | 2176 LanguageMode language_mode() { return hydrogen()->language_mode(); } |
2172 }; | 2177 }; |
2173 | 2178 |
(...skipping 20 matching lines...) Expand all Loading... |
2194 | 2199 |
2195 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") | 2200 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") |
2196 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) | 2201 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) |
2197 | 2202 |
2198 void PrintDataTo(StringStream* stream) override; | 2203 void PrintDataTo(StringStream* stream) override; |
2199 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } | 2204 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } |
2200 uint32_t base_offset() const { return hydrogen()->base_offset(); } | 2205 uint32_t base_offset() const { return hydrogen()->base_offset(); } |
2201 }; | 2206 }; |
2202 | 2207 |
2203 | 2208 |
2204 class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 0> { | 2209 class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 2> { |
2205 public: | 2210 public: |
2206 LStoreKeyedGeneric(LOperand* context, | 2211 LStoreKeyedGeneric(LOperand* context, LOperand* object, LOperand* key, |
2207 LOperand* object, | 2212 LOperand* value, LOperand* slot, LOperand* vector) { |
2208 LOperand* key, | |
2209 LOperand* value) { | |
2210 inputs_[0] = context; | 2213 inputs_[0] = context; |
2211 inputs_[1] = object; | 2214 inputs_[1] = object; |
2212 inputs_[2] = key; | 2215 inputs_[2] = key; |
2213 inputs_[3] = value; | 2216 inputs_[3] = value; |
| 2217 temps_[0] = slot; |
| 2218 temps_[1] = vector; |
2214 } | 2219 } |
2215 | 2220 |
2216 LOperand* context() { return inputs_[0]; } | 2221 LOperand* context() { return inputs_[0]; } |
2217 LOperand* object() { return inputs_[1]; } | 2222 LOperand* object() { return inputs_[1]; } |
2218 LOperand* key() { return inputs_[2]; } | 2223 LOperand* key() { return inputs_[2]; } |
2219 LOperand* value() { return inputs_[3]; } | 2224 LOperand* value() { return inputs_[3]; } |
| 2225 LOperand* temp_slot() { return temps_[0]; } |
| 2226 LOperand* temp_vector() { return temps_[1]; } |
2220 | 2227 |
2221 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | 2228 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
2222 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) | 2229 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) |
2223 | 2230 |
2224 void PrintDataTo(StringStream* stream) override; | 2231 void PrintDataTo(StringStream* stream) override; |
2225 | 2232 |
2226 LanguageMode language_mode() { return hydrogen()->language_mode(); } | 2233 LanguageMode language_mode() { return hydrogen()->language_mode(); } |
2227 }; | 2234 }; |
2228 | 2235 |
2229 | 2236 |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2858 | 2865 |
2859 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2866 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2860 }; | 2867 }; |
2861 | 2868 |
2862 #undef DECLARE_HYDROGEN_ACCESSOR | 2869 #undef DECLARE_HYDROGEN_ACCESSOR |
2863 #undef DECLARE_CONCRETE_INSTRUCTION | 2870 #undef DECLARE_CONCRETE_INSTRUCTION |
2864 | 2871 |
2865 } } // namespace v8::int | 2872 } } // namespace v8::int |
2866 | 2873 |
2867 #endif // V8_X64_LITHIUM_X64_H_ | 2874 #endif // V8_X64_LITHIUM_X64_H_ |
OLD | NEW |