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/arm64/macro-assembler-arm64-inl.h" | 7 #include "src/arm64/macro-assembler-arm64-inl.h" |
8 #include "src/ast/compile-time-value.h" | 8 #include "src/ast/compile-time-value.h" |
9 #include "src/ast/scopes.h" | 9 #include "src/ast/scopes.h" |
10 #include "src/builtins/builtins-constructor.h" | 10 #include "src/builtins/builtins-constructor.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 // - x3: the new target value | 101 // - x3: the new target value |
102 // - cp: our context. | 102 // - cp: our context. |
103 // - fp: our caller's frame pointer. | 103 // - fp: our caller's frame pointer. |
104 // - jssp: stack pointer. | 104 // - jssp: stack pointer. |
105 // - lr: return address. | 105 // - lr: return address. |
106 // | 106 // |
107 // The function builds a JS frame. See JavaScriptFrameConstants in | 107 // The function builds a JS frame. See JavaScriptFrameConstants in |
108 // frames-arm.h for its layout. | 108 // frames-arm.h for its layout. |
109 void FullCodeGenerator::Generate() { | 109 void FullCodeGenerator::Generate() { |
110 CompilationInfo* info = info_; | 110 CompilationInfo* info = info_; |
| 111 // Block sharing of code target entries. The interrupt checks must be |
| 112 // possible to patch individually, and replacing code with a debug version |
| 113 // relies on RelocInfo not being shared. |
| 114 Assembler::BlockCodeTargetSharingScope block_code_target_sharing(masm_); |
111 profiling_counter_ = isolate()->factory()->NewCell( | 115 profiling_counter_ = isolate()->factory()->NewCell( |
112 Handle<Smi>(Smi::FromInt(FLAG_interrupt_budget), isolate())); | 116 Handle<Smi>(Smi::FromInt(FLAG_interrupt_budget), isolate())); |
113 SetFunctionPosition(literal()); | 117 SetFunctionPosition(literal()); |
114 Comment cmnt(masm_, "[ Function compiled by full code generator"); | 118 Comment cmnt(masm_, "[ Function compiled by full code generator"); |
115 | 119 |
116 ProfileEntryHookStub::MaybeCallEntryHook(masm_); | 120 ProfileEntryHookStub::MaybeCallEntryHook(masm_); |
117 | 121 |
118 if (FLAG_debug_code && info->ExpectsJSReceiverAsReceiver()) { | 122 if (FLAG_debug_code && info->ExpectsJSReceiverAsReceiver()) { |
119 int receiver_offset = info->scope()->num_parameters() * kXRegSize; | 123 int receiver_offset = info->scope()->num_parameters() * kXRegSize; |
120 __ Peek(x10, receiver_offset); | 124 __ Peek(x10, receiver_offset); |
(...skipping 2648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2769 } | 2773 } |
2770 | 2774 |
2771 return INTERRUPT; | 2775 return INTERRUPT; |
2772 } | 2776 } |
2773 | 2777 |
2774 | 2778 |
2775 } // namespace internal | 2779 } // namespace internal |
2776 } // namespace v8 | 2780 } // namespace v8 |
2777 | 2781 |
2778 #endif // V8_TARGET_ARCH_ARM64 | 2782 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |