OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/ic/call-optimization.h" | 9 #include "src/ic/call-optimization.h" |
10 #include "src/ic/handler-compiler.h" | 10 #include "src/ic/handler-compiler.h" |
11 #include "src/ic/ic.h" | 11 #include "src/ic/ic.h" |
12 | 12 |
13 namespace v8 { | 13 namespace v8 { |
14 namespace internal { | 14 namespace internal { |
15 | 15 |
16 #define __ ACCESS_MASM(masm) | 16 #define __ ACCESS_MASM(masm) |
17 | 17 |
18 | 18 |
19 void NamedLoadHandlerCompiler::GenerateSlow(MacroAssembler* masm) { | |
20 // Push receiver and key for runtime call. | |
21 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); | |
22 | |
23 // The slow case calls into the runtime to complete the load without causing | |
24 // an IC miss that would otherwise cause a transition to the generic stub. | |
25 ExternalReference ref = | |
26 ExternalReference(IC_Utility(IC::kLoadIC_Slow), masm->isolate()); | |
27 __ TailCallExternalReference(ref, 2, 1); | |
28 } | |
29 | |
30 | |
31 void ElementHandlerCompiler::GenerateLoadSlow(MacroAssembler* masm) { | |
32 // Push receiver and key for runtime call. | |
33 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); | |
34 | |
35 // The slow case calls into the runtime to complete the load without causing | |
36 // an IC miss that would otherwise cause a transition to the generic stub. | |
37 ExternalReference ref = | |
38 ExternalReference(IC_Utility(IC::kKeyedLoadIC_Slow), masm->isolate()); | |
39 __ TailCallExternalReference(ref, 2, 1); | |
40 } | |
41 | |
42 | |
43 void NamedLoadHandlerCompiler::GenerateLoadViaGetter( | 19 void NamedLoadHandlerCompiler::GenerateLoadViaGetter( |
44 MacroAssembler* masm, Handle<Map> map, Register receiver, Register holder, | 20 MacroAssembler* masm, Handle<Map> map, Register receiver, Register holder, |
45 int accessor_index, int expected_arguments, Register scratch) { | 21 int accessor_index, int expected_arguments, Register scratch) { |
46 // ----------- S t a t e ------------- | 22 // ----------- S t a t e ------------- |
47 // -- r0 : receiver | 23 // -- r0 : receiver |
48 // -- r2 : name | 24 // -- r2 : name |
49 // -- lr : return address | 25 // -- lr : return address |
50 // ----------------------------------- | 26 // ----------------------------------- |
51 { | 27 { |
52 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); | 28 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 // Return the generated code. | 785 // Return the generated code. |
810 return GetCode(kind(), Code::NORMAL, name); | 786 return GetCode(kind(), Code::NORMAL, name); |
811 } | 787 } |
812 | 788 |
813 | 789 |
814 #undef __ | 790 #undef __ |
815 } // namespace internal | 791 } // namespace internal |
816 } // namespace v8 | 792 } // namespace v8 |
817 | 793 |
818 #endif // V8_TARGET_ARCH_ARM | 794 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |