| 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 6 | 6 |
| 7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
| 8 #include "src/ic/ic.h" | 8 #include "src/ic/ic.h" |
| 9 #include "src/ic/ic-compiler.h" | 9 #include "src/ic/ic-compiler.h" |
| 10 #include "src/ic/stub-cache.h" | 10 #include "src/ic/stub-cache.h" |
| (...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 StoreWithVectorDescriptor::VectorRegister()); | 451 StoreWithVectorDescriptor::VectorRegister()); |
| 452 } | 452 } |
| 453 | 453 |
| 454 | 454 |
| 455 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { | 455 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { |
| 456 ASM_LOCATION("KeyedStoreIC::GenerateMiss"); | 456 ASM_LOCATION("KeyedStoreIC::GenerateMiss"); |
| 457 StoreIC_PushArgs(masm); | 457 StoreIC_PushArgs(masm); |
| 458 __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); | 458 __ TailCallRuntime(Runtime::kKeyedStoreIC_Miss); |
| 459 } | 459 } |
| 460 | 460 |
| 461 void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { |
| 462 ASM_LOCATION("KeyedStoreIC::GenerateSlow"); |
| 463 StoreIC_PushArgs(masm); |
| 464 |
| 465 // The slow case calls into the runtime to complete the store without causing |
| 466 // an IC miss that would otherwise cause a transition to the generic stub. |
| 467 __ TailCallRuntime(Runtime::kKeyedStoreIC_Slow); |
| 468 } |
| 461 | 469 |
| 462 static void KeyedStoreGenerateMegamorphicHelper( | 470 static void KeyedStoreGenerateMegamorphicHelper( |
| 463 MacroAssembler* masm, Label* fast_object, Label* fast_double, Label* slow, | 471 MacroAssembler* masm, Label* fast_object, Label* fast_double, Label* slow, |
| 464 KeyedStoreCheckMap check_map, KeyedStoreIncrementLength increment_length, | 472 KeyedStoreCheckMap check_map, KeyedStoreIncrementLength increment_length, |
| 465 Register value, Register key, Register receiver, Register receiver_map, | 473 Register value, Register key, Register receiver, Register receiver_map, |
| 466 Register elements_map, Register elements) { | 474 Register elements_map, Register elements) { |
| 467 DCHECK(!AreAliased(value, key, receiver, receiver_map, elements_map, elements, | 475 DCHECK(!AreAliased(value, key, receiver, receiver_map, elements_map, elements, |
| 468 x10, x11)); | 476 x10, x11)); |
| 469 | 477 |
| 470 Label transition_smi_elements; | 478 Label transition_smi_elements; |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 835 } else { | 843 } else { |
| 836 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ); | 844 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ); |
| 837 // This is JumpIfSmi(smi_reg, branch_imm). | 845 // This is JumpIfSmi(smi_reg, branch_imm). |
| 838 patcher.tbz(smi_reg, 0, branch_imm); | 846 patcher.tbz(smi_reg, 0, branch_imm); |
| 839 } | 847 } |
| 840 } | 848 } |
| 841 } // namespace internal | 849 } // namespace internal |
| 842 } // namespace v8 | 850 } // namespace v8 |
| 843 | 851 |
| 844 #endif // V8_TARGET_ARCH_ARM64 | 852 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |