| 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 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
| 8 | 8 |
| 9 #include "src/arm64/assembler-arm64.h" | 9 #include "src/arm64/assembler-arm64.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 GenerateMiss(masm); | 499 GenerateMiss(masm); |
| 500 } | 500 } |
| 501 | 501 |
| 502 | 502 |
| 503 void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) { | 503 void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) { |
| 504 ASM_LOCATION("KeyedStoreIC::GenerateSloppyArguments"); | 504 ASM_LOCATION("KeyedStoreIC::GenerateSloppyArguments"); |
| 505 Label slow, notin; | 505 Label slow, notin; |
| 506 Register value = ValueRegister(); | 506 Register value = ValueRegister(); |
| 507 Register key = NameRegister(); | 507 Register key = NameRegister(); |
| 508 Register receiver = ReceiverRegister(); | 508 Register receiver = ReceiverRegister(); |
| 509 ASSERT(receiver.is(x1)); | 509 ASSERT(receiver.is(x2)); |
| 510 ASSERT(key.is(x2)); | 510 ASSERT(key.is(x1)); |
| 511 ASSERT(value.is(x0)); | 511 ASSERT(value.is(x0)); |
| 512 | 512 |
| 513 Register map = x3; | 513 Register map = x3; |
| 514 | 514 |
| 515 // These registers are used by GenerateMappedArgumentsLookup to build a | 515 // These registers are used by GenerateMappedArgumentsLookup to build a |
| 516 // MemOperand. They are live for as long as the MemOperand is live. | 516 // MemOperand. They are live for as long as the MemOperand is live. |
| 517 Register mapped1 = x4; | 517 Register mapped1 = x4; |
| 518 Register mapped2 = x5; | 518 Register mapped2 = x5; |
| 519 | 519 |
| 520 MemOperand mapped = | 520 MemOperand mapped = |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 // IC register specifications | 567 // IC register specifications |
| 568 const Register LoadIC::ReceiverRegister() { return x1; } | 568 const Register LoadIC::ReceiverRegister() { return x1; } |
| 569 const Register LoadIC::NameRegister() { return x2; } | 569 const Register LoadIC::NameRegister() { return x2; } |
| 570 | 570 |
| 571 | 571 |
| 572 const Register StoreIC::ReceiverRegister() { return x1; } | 572 const Register StoreIC::ReceiverRegister() { return x1; } |
| 573 const Register StoreIC::NameRegister() { return x2; } | 573 const Register StoreIC::NameRegister() { return x2; } |
| 574 const Register StoreIC::ValueRegister() { return x0; } | 574 const Register StoreIC::ValueRegister() { return x0; } |
| 575 | 575 |
| 576 | 576 |
| 577 const Register KeyedStoreIC::ReceiverRegister() { | 577 const Register KeyedStoreIC::ReceiverRegister() { return x2; } |
| 578 return StoreIC::ReceiverRegister(); | 578 const Register KeyedStoreIC::NameRegister() { return x1; } |
| 579 } | 579 const Register KeyedStoreIC::ValueRegister() { return x0; } |
| 580 | |
| 581 | |
| 582 const Register KeyedStoreIC::NameRegister() { | |
| 583 return StoreIC::NameRegister(); | |
| 584 } | |
| 585 | |
| 586 | |
| 587 const Register KeyedStoreIC::ValueRegister() { | |
| 588 return StoreIC::ValueRegister(); | |
| 589 } | |
| 590 | |
| 591 | |
| 592 const Register KeyedStoreIC::MapRegister() { | |
| 593 return x3; | |
| 594 } | |
| 595 | 580 |
| 596 | 581 |
| 597 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { | 582 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { |
| 598 // The return address is in lr. | 583 // The return address is in lr. |
| 599 __ Push(ReceiverRegister(), NameRegister()); | 584 __ Push(ReceiverRegister(), NameRegister()); |
| 600 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); | 585 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); |
| 601 } | 586 } |
| 602 | 587 |
| 603 | 588 |
| 604 static void GenerateKeyedLoadWithSmiKey(MacroAssembler* masm, | 589 static void GenerateKeyedLoadWithSmiKey(MacroAssembler* masm, |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1075 Label array; | 1060 Label array; |
| 1076 Label fast_object; | 1061 Label fast_object; |
| 1077 Label extra; | 1062 Label extra; |
| 1078 Label fast_object_grow; | 1063 Label fast_object_grow; |
| 1079 Label fast_double_grow; | 1064 Label fast_double_grow; |
| 1080 Label fast_double; | 1065 Label fast_double; |
| 1081 | 1066 |
| 1082 Register value = ValueRegister(); | 1067 Register value = ValueRegister(); |
| 1083 Register key = NameRegister(); | 1068 Register key = NameRegister(); |
| 1084 Register receiver = ReceiverRegister(); | 1069 Register receiver = ReceiverRegister(); |
| 1085 ASSERT(receiver.is(x1)); | 1070 ASSERT(receiver.is(x2)); |
| 1086 ASSERT(key.is(x2)); | 1071 ASSERT(key.is(x1)); |
| 1087 ASSERT(value.is(x0)); | 1072 ASSERT(value.is(x0)); |
| 1088 | 1073 |
| 1089 Register receiver_map = x3; | 1074 Register receiver_map = x3; |
| 1090 Register elements = x4; | 1075 Register elements = x4; |
| 1091 Register elements_map = x5; | 1076 Register elements_map = x5; |
| 1092 | 1077 |
| 1093 __ JumpIfNotSmi(key, &slow); | 1078 __ JumpIfNotSmi(key, &slow); |
| 1094 __ JumpIfSmi(receiver, &slow); | 1079 __ JumpIfSmi(receiver, &slow); |
| 1095 __ Ldr(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 1080 __ Ldr(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
| 1096 | 1081 |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1335 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1320 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
| 1336 // This is JumpIfSmi(smi_reg, branch_imm). | 1321 // This is JumpIfSmi(smi_reg, branch_imm). |
| 1337 patcher.tbz(smi_reg, 0, branch_imm); | 1322 patcher.tbz(smi_reg, 0, branch_imm); |
| 1338 } | 1323 } |
| 1339 } | 1324 } |
| 1340 | 1325 |
| 1341 | 1326 |
| 1342 } } // namespace v8::internal | 1327 } } // namespace v8::internal |
| 1343 | 1328 |
| 1344 #endif // V8_TARGET_ARCH_ARM64 | 1329 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |