Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(413)

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 1149903005: Vector ICs: Introduce Store and KeyedStore IC code stubs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@vector-stores
Patch Set: REBASE. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 4718 matching lines...) Expand 10 before | Expand all | Expand 10 after
4729 4729
4730 __ Bind(&miss); 4730 __ Bind(&miss);
4731 KeyedLoadIC::GenerateMiss(masm); 4731 KeyedLoadIC::GenerateMiss(masm);
4732 4732
4733 __ Bind(&load_smi_map); 4733 __ Bind(&load_smi_map);
4734 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex); 4734 __ LoadRoot(receiver_map, Heap::kHeapNumberMapRootIndex);
4735 __ jmp(&compare_map); 4735 __ jmp(&compare_map);
4736 } 4736 }
4737 4737
4738 4738
4739 void VectorStoreICTrampolineStub::Generate(MacroAssembler* masm) {
4740 EmitLoadTypeFeedbackVector(masm, VectorStoreICDescriptor::VectorRegister());
4741 VectorStoreICStub stub(isolate(), state());
4742 stub.GenerateForTrampoline(masm);
4743 }
4744
4745
4746 void VectorKeyedStoreICTrampolineStub::Generate(MacroAssembler* masm) {
4747 EmitLoadTypeFeedbackVector(masm, VectorStoreICDescriptor::VectorRegister());
4748 VectorKeyedStoreICStub stub(isolate(), state());
4749 stub.GenerateForTrampoline(masm);
4750 }
4751
4752
4753 void VectorStoreICStub::Generate(MacroAssembler* masm) {
4754 GenerateImpl(masm, false);
4755 }
4756
4757
4758 void VectorStoreICStub::GenerateForTrampoline(MacroAssembler* masm) {
4759 GenerateImpl(masm, true);
4760 }
4761
4762
4763 void VectorStoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) {
4764 Label miss;
4765
4766 // TODO(mvstanton): Implement.
4767 __ Bind(&miss);
4768 StoreIC::GenerateMiss(masm);
4769 }
4770
4771
4772 void VectorKeyedStoreICStub::Generate(MacroAssembler* masm) {
4773 GenerateImpl(masm, false);
4774 }
4775
4776
4777 void VectorKeyedStoreICStub::GenerateForTrampoline(MacroAssembler* masm) {
4778 GenerateImpl(masm, true);
4779 }
4780
4781
4782 void VectorKeyedStoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) {
4783 Label miss;
4784
4785 // TODO(mvstanton): Implement.
4786 __ Bind(&miss);
4787 KeyedStoreIC::GenerateMiss(masm);
4788 }
4789
4790
4739 // The entry hook is a "BumpSystemStackPointer" instruction (sub), followed by 4791 // The entry hook is a "BumpSystemStackPointer" instruction (sub), followed by
4740 // a "Push lr" instruction, followed by a call. 4792 // a "Push lr" instruction, followed by a call.
4741 static const unsigned int kProfileEntryHookCallSize = 4793 static const unsigned int kProfileEntryHookCallSize =
4742 Assembler::kCallSizeWithRelocation + (2 * kInstructionSize); 4794 Assembler::kCallSizeWithRelocation + (2 * kInstructionSize);
4743 4795
4744 4796
4745 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { 4797 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
4746 if (masm->isolate()->function_entry_hook() != NULL) { 4798 if (masm->isolate()->function_entry_hook() != NULL) {
4747 ProfileEntryHookStub stub(masm->isolate()); 4799 ProfileEntryHookStub stub(masm->isolate());
4748 Assembler::BlockConstPoolScope no_const_pools(masm); 4800 Assembler::BlockConstPoolScope no_const_pools(masm);
(...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after
5773 kStackUnwindSpace, NULL, spill_offset, 5825 kStackUnwindSpace, NULL, spill_offset,
5774 MemOperand(fp, 6 * kPointerSize), NULL); 5826 MemOperand(fp, 6 * kPointerSize), NULL);
5775 } 5827 }
5776 5828
5777 5829
5778 #undef __ 5830 #undef __
5779 5831
5780 } } // namespace v8::internal 5832 } } // namespace v8::internal
5781 5833
5782 #endif // V8_TARGET_ARCH_ARM64 5834 #endif // V8_TARGET_ARCH_ARM64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698