| 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(x2)); | 509 ASSERT(receiver.is(x1)); |
| 510 ASSERT(key.is(x1)); | 510 ASSERT(key.is(x2)); |
| 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() { return x2; } | 577 const Register KeyedStoreIC::ReceiverRegister() { |
| 578 const Register KeyedStoreIC::NameRegister() { return x1; } | 578 return StoreIC::ReceiverRegister(); |
| 579 const Register KeyedStoreIC::ValueRegister() { return x0; } | 579 } |
| 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 } |
| 580 | 595 |
| 581 | 596 |
| 582 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { | 597 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { |
| 583 // The return address is in lr. | 598 // The return address is in lr. |
| 584 __ Push(ReceiverRegister(), NameRegister()); | 599 __ Push(ReceiverRegister(), NameRegister()); |
| 585 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); | 600 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); |
| 586 } | 601 } |
| 587 | 602 |
| 588 | 603 |
| 589 static void GenerateKeyedLoadWithSmiKey(MacroAssembler* masm, | 604 static void GenerateKeyedLoadWithSmiKey(MacroAssembler* masm, |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1061 Label array; | 1076 Label array; |
| 1062 Label fast_object; | 1077 Label fast_object; |
| 1063 Label extra; | 1078 Label extra; |
| 1064 Label fast_object_grow; | 1079 Label fast_object_grow; |
| 1065 Label fast_double_grow; | 1080 Label fast_double_grow; |
| 1066 Label fast_double; | 1081 Label fast_double; |
| 1067 | 1082 |
| 1068 Register value = ValueRegister(); | 1083 Register value = ValueRegister(); |
| 1069 Register key = NameRegister(); | 1084 Register key = NameRegister(); |
| 1070 Register receiver = ReceiverRegister(); | 1085 Register receiver = ReceiverRegister(); |
| 1071 ASSERT(receiver.is(x2)); | 1086 ASSERT(receiver.is(x1)); |
| 1072 ASSERT(key.is(x1)); | 1087 ASSERT(key.is(x2)); |
| 1073 ASSERT(value.is(x0)); | 1088 ASSERT(value.is(x0)); |
| 1074 | 1089 |
| 1075 Register receiver_map = x3; | 1090 Register receiver_map = x3; |
| 1076 Register elements = x4; | 1091 Register elements = x4; |
| 1077 Register elements_map = x5; | 1092 Register elements_map = x5; |
| 1078 | 1093 |
| 1079 __ JumpIfNotSmi(key, &slow); | 1094 __ JumpIfNotSmi(key, &slow); |
| 1080 __ JumpIfSmi(receiver, &slow); | 1095 __ JumpIfSmi(receiver, &slow); |
| 1081 __ Ldr(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 1096 __ Ldr(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
| 1082 | 1097 |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1321 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1336 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
| 1322 // This is JumpIfSmi(smi_reg, branch_imm). | 1337 // This is JumpIfSmi(smi_reg, branch_imm). |
| 1323 patcher.tbz(smi_reg, 0, branch_imm); | 1338 patcher.tbz(smi_reg, 0, branch_imm); |
| 1324 } | 1339 } |
| 1325 } | 1340 } |
| 1326 | 1341 |
| 1327 | 1342 |
| 1328 } } // namespace v8::internal | 1343 } } // namespace v8::internal |
| 1329 | 1344 |
| 1330 #endif // V8_TARGET_ARCH_ARM64 | 1345 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |