OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #include "src/crankshaft/arm64/lithium-arm64.h" | 5 #include "src/crankshaft/arm64/lithium-arm64.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" | 9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" |
10 #include "src/crankshaft/hydrogen-osr.h" | 10 #include "src/crankshaft/hydrogen-osr.h" |
(...skipping 2202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2213 LOperand* context = UseFixed(instr->context(), cp); | 2213 LOperand* context = UseFixed(instr->context(), cp); |
2214 LOperand* object = | 2214 LOperand* object = |
2215 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); | 2215 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); |
2216 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); | 2216 LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); |
2217 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); | 2217 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); |
2218 | 2218 |
2219 DCHECK(instr->object()->representation().IsTagged()); | 2219 DCHECK(instr->object()->representation().IsTagged()); |
2220 DCHECK(instr->key()->representation().IsTagged()); | 2220 DCHECK(instr->key()->representation().IsTagged()); |
2221 DCHECK(instr->value()->representation().IsTagged()); | 2221 DCHECK(instr->value()->representation().IsTagged()); |
2222 | 2222 |
2223 LOperand* slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); | 2223 LOperand* slot = FixedTemp(StoreWithVectorDescriptor::SlotRegister()); |
2224 LOperand* vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); | 2224 LOperand* vector = FixedTemp(StoreWithVectorDescriptor::VectorRegister()); |
2225 | 2225 |
2226 LStoreKeyedGeneric* result = new (zone()) | 2226 LStoreKeyedGeneric* result = new (zone()) |
2227 LStoreKeyedGeneric(context, object, key, value, slot, vector); | 2227 LStoreKeyedGeneric(context, object, key, value, slot, vector); |
2228 return MarkAsCall(result, instr); | 2228 return MarkAsCall(result, instr); |
2229 } | 2229 } |
2230 | 2230 |
2231 | 2231 |
2232 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { | 2232 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { |
2233 // TODO(jbramley): It might be beneficial to allow value to be a constant in | 2233 // TODO(jbramley): It might be beneficial to allow value to be a constant in |
2234 // some cases. x64 makes use of this with FLAG_track_fields, for example. | 2234 // some cases. x64 makes use of this with FLAG_track_fields, for example. |
(...skipping 22 matching lines...) Expand all Loading... |
2257 return new(zone()) LStoreNamedField(object, value, temp0, temp1); | 2257 return new(zone()) LStoreNamedField(object, value, temp0, temp1); |
2258 } | 2258 } |
2259 | 2259 |
2260 | 2260 |
2261 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { | 2261 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { |
2262 LOperand* context = UseFixed(instr->context(), cp); | 2262 LOperand* context = UseFixed(instr->context(), cp); |
2263 LOperand* object = | 2263 LOperand* object = |
2264 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); | 2264 UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); |
2265 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); | 2265 LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); |
2266 | 2266 |
2267 LOperand* slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); | 2267 LOperand* slot = FixedTemp(StoreWithVectorDescriptor::SlotRegister()); |
2268 LOperand* vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); | 2268 LOperand* vector = FixedTemp(StoreWithVectorDescriptor::VectorRegister()); |
2269 | 2269 |
2270 LStoreNamedGeneric* result = | 2270 LStoreNamedGeneric* result = |
2271 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); | 2271 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); |
2272 return MarkAsCall(result, instr); | 2272 return MarkAsCall(result, instr); |
2273 } | 2273 } |
2274 | 2274 |
2275 | 2275 |
2276 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { | 2276 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { |
2277 LOperand* context = UseFixed(instr->context(), cp); | 2277 LOperand* context = UseFixed(instr->context(), cp); |
2278 LOperand* left = UseFixed(instr->left(), x1); | 2278 LOperand* left = UseFixed(instr->left(), x1); |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2585 | 2585 |
2586 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { | 2586 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { |
2587 LOperand* receiver = UseRegister(instr->receiver()); | 2587 LOperand* receiver = UseRegister(instr->receiver()); |
2588 LOperand* function = UseRegister(instr->function()); | 2588 LOperand* function = UseRegister(instr->function()); |
2589 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); | 2589 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); |
2590 return AssignEnvironment(DefineAsRegister(result)); | 2590 return AssignEnvironment(DefineAsRegister(result)); |
2591 } | 2591 } |
2592 | 2592 |
2593 } // namespace internal | 2593 } // namespace internal |
2594 } // namespace v8 | 2594 } // namespace v8 |
OLD | NEW |