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 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 | 362 |
363 | 363 |
364 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { | 364 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { |
365 // The return address is in lr. | 365 // The return address is in lr. |
366 Register receiver = ReceiverRegister(); | 366 Register receiver = ReceiverRegister(); |
367 Register name = NameRegister(); | 367 Register name = NameRegister(); |
368 ASSERT(receiver.is(x1)); | 368 ASSERT(receiver.is(x1)); |
369 ASSERT(name.is(x2)); | 369 ASSERT(name.is(x2)); |
370 | 370 |
371 // Probe the stub cache. | 371 // Probe the stub cache. |
372 Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC); | 372 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
| 373 Code::ComputeHandlerFlags(Code::LOAD_IC)); |
373 masm->isolate()->stub_cache()->GenerateProbe( | 374 masm->isolate()->stub_cache()->GenerateProbe( |
374 masm, flags, receiver, name, x3, x4, x5, x6); | 375 masm, flags, receiver, name, x3, x4, x5, x6); |
375 | 376 |
376 // Cache miss: Jump to runtime. | 377 // Cache miss: Jump to runtime. |
377 GenerateMiss(masm); | 378 GenerateMiss(masm); |
378 } | 379 } |
379 | 380 |
380 | 381 |
381 void LoadIC::GenerateNormal(MacroAssembler* masm) { | 382 void LoadIC::GenerateNormal(MacroAssembler* masm) { |
382 Register dictionary = x0; | 383 Register dictionary = x0; |
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1115 elements_map, elements); | 1116 elements_map, elements); |
1116 } | 1117 } |
1117 | 1118 |
1118 | 1119 |
1119 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { | 1120 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |
1120 Register receiver = ReceiverRegister(); | 1121 Register receiver = ReceiverRegister(); |
1121 Register name = NameRegister(); | 1122 Register name = NameRegister(); |
1122 ASSERT(!AreAliased(receiver, name, ValueRegister(), x3, x4, x5, x6)); | 1123 ASSERT(!AreAliased(receiver, name, ValueRegister(), x3, x4, x5, x6)); |
1123 | 1124 |
1124 // Probe the stub cache. | 1125 // Probe the stub cache. |
1125 Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC); | 1126 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
| 1127 Code::ComputeHandlerFlags(Code::STORE_IC)); |
1126 masm->isolate()->stub_cache()->GenerateProbe( | 1128 masm->isolate()->stub_cache()->GenerateProbe( |
1127 masm, flags, receiver, name, x3, x4, x5, x6); | 1129 masm, flags, receiver, name, x3, x4, x5, x6); |
1128 | 1130 |
1129 // Cache miss: Jump to runtime. | 1131 // Cache miss: Jump to runtime. |
1130 GenerateMiss(masm); | 1132 GenerateMiss(masm); |
1131 } | 1133 } |
1132 | 1134 |
1133 | 1135 |
1134 void StoreIC::GenerateMiss(MacroAssembler* masm) { | 1136 void StoreIC::GenerateMiss(MacroAssembler* masm) { |
1135 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); | 1137 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1283 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
1282 // This is JumpIfSmi(smi_reg, branch_imm). | 1284 // This is JumpIfSmi(smi_reg, branch_imm). |
1283 patcher.tbz(smi_reg, 0, branch_imm); | 1285 patcher.tbz(smi_reg, 0, branch_imm); |
1284 } | 1286 } |
1285 } | 1287 } |
1286 | 1288 |
1287 | 1289 |
1288 } } // namespace v8::internal | 1290 } } // namespace v8::internal |
1289 | 1291 |
1290 #endif // V8_TARGET_ARCH_ARM64 | 1292 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |