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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/arm64/lithium-arm64.h" | 7 #include "src/arm64/lithium-arm64.h" |
8 #include "src/arm64/lithium-codegen-arm64.h" | 8 #include "src/arm64/lithium-codegen-arm64.h" |
9 #include "src/hydrogen-osr.h" | 9 #include "src/hydrogen-osr.h" |
10 #include "src/lithium-allocator-inl.h" | 10 #include "src/lithium-allocator-inl.h" |
(...skipping 2340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2351 ASSERT(instr->elements()->representation().IsTagged()); | 2351 ASSERT(instr->elements()->representation().IsTagged()); |
2352 ASSERT(instr->value()->representation().IsSmiOrTagged() || | 2352 ASSERT(instr->value()->representation().IsSmiOrTagged() || |
2353 instr->value()->representation().IsInteger32()); | 2353 instr->value()->representation().IsInteger32()); |
2354 return new(zone()) LStoreKeyedFixed(elements, key, val, temp); | 2354 return new(zone()) LStoreKeyedFixed(elements, key, val, temp); |
2355 } | 2355 } |
2356 } | 2356 } |
2357 | 2357 |
2358 | 2358 |
2359 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { | 2359 LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { |
2360 LOperand* context = UseFixed(instr->context(), cp); | 2360 LOperand* context = UseFixed(instr->context(), cp); |
2361 LOperand* object = UseFixed(instr->object(), x2); | 2361 LOperand* object = UseFixed(instr->object(), |
2362 LOperand* key = UseFixed(instr->key(), x1); | 2362 KeyedStoreIC::ReceiverRegister()); |
2363 LOperand* value = UseFixed(instr->value(), x0); | 2363 LOperand* key = UseFixed(instr->key(), KeyedStoreIC::NameRegister()); |
| 2364 LOperand* value = UseFixed(instr->value(), KeyedStoreIC::ValueRegister()); |
2364 | 2365 |
2365 ASSERT(instr->object()->representation().IsTagged()); | 2366 ASSERT(instr->object()->representation().IsTagged()); |
2366 ASSERT(instr->key()->representation().IsTagged()); | 2367 ASSERT(instr->key()->representation().IsTagged()); |
2367 ASSERT(instr->value()->representation().IsTagged()); | 2368 ASSERT(instr->value()->representation().IsTagged()); |
2368 | 2369 |
2369 return MarkAsCall( | 2370 return MarkAsCall( |
2370 new(zone()) LStoreKeyedGeneric(context, object, key, value), instr); | 2371 new(zone()) LStoreKeyedGeneric(context, object, key, value), instr); |
2371 } | 2372 } |
2372 | 2373 |
2373 | 2374 |
(...skipping 21 matching lines...) Expand all Loading... |
2395 value = UseRegister(instr->value()); | 2396 value = UseRegister(instr->value()); |
2396 temp0 = TempRegister(); | 2397 temp0 = TempRegister(); |
2397 } | 2398 } |
2398 | 2399 |
2399 return new(zone()) LStoreNamedField(object, value, temp0, temp1); | 2400 return new(zone()) LStoreNamedField(object, value, temp0, temp1); |
2400 } | 2401 } |
2401 | 2402 |
2402 | 2403 |
2403 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { | 2404 LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { |
2404 LOperand* context = UseFixed(instr->context(), cp); | 2405 LOperand* context = UseFixed(instr->context(), cp); |
2405 LOperand* object = UseFixed(instr->object(), x1); | 2406 LOperand* object = UseFixed(instr->object(), StoreIC::ReceiverRegister()); |
2406 LOperand* value = UseFixed(instr->value(), x0); | 2407 LOperand* value = UseFixed(instr->value(), StoreIC::ValueRegister()); |
| 2408 |
2407 LInstruction* result = new(zone()) LStoreNamedGeneric(context, object, value); | 2409 LInstruction* result = new(zone()) LStoreNamedGeneric(context, object, value); |
2408 return MarkAsCall(result, instr); | 2410 return MarkAsCall(result, instr); |
2409 } | 2411 } |
2410 | 2412 |
2411 | 2413 |
2412 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { | 2414 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { |
2413 LOperand* context = UseFixed(instr->context(), cp); | 2415 LOperand* context = UseFixed(instr->context(), cp); |
2414 LOperand* left = UseFixed(instr->left(), x1); | 2416 LOperand* left = UseFixed(instr->left(), x1); |
2415 LOperand* right = UseFixed(instr->right(), x0); | 2417 LOperand* right = UseFixed(instr->right(), x0); |
2416 | 2418 |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2717 HAllocateBlockContext* instr) { | 2719 HAllocateBlockContext* instr) { |
2718 LOperand* context = UseFixed(instr->context(), cp); | 2720 LOperand* context = UseFixed(instr->context(), cp); |
2719 LOperand* function = UseRegisterAtStart(instr->function()); | 2721 LOperand* function = UseRegisterAtStart(instr->function()); |
2720 LAllocateBlockContext* result = | 2722 LAllocateBlockContext* result = |
2721 new(zone()) LAllocateBlockContext(context, function); | 2723 new(zone()) LAllocateBlockContext(context, function); |
2722 return MarkAsCall(DefineFixed(result, cp), instr); | 2724 return MarkAsCall(DefineFixed(result, cp), instr); |
2723 } | 2725 } |
2724 | 2726 |
2725 | 2727 |
2726 } } // namespace v8::internal | 2728 } } // namespace v8::internal |
OLD | NEW |