OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "codegen.h" | 9 #include "codegen.h" |
10 #include "debug.h" | 10 #include "debug.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 // jumping to the target address intended by the caller and that was | 148 // jumping to the target address intended by the caller and that was |
149 // overwritten by the address of DebugBreakXXX. | 149 // overwritten by the address of DebugBreakXXX. |
150 ExternalReference after_break_target = | 150 ExternalReference after_break_target = |
151 ExternalReference(Debug_Address::AfterBreakTarget(), masm->isolate()); | 151 ExternalReference(Debug_Address::AfterBreakTarget(), masm->isolate()); |
152 __ mov(ip, Operand(after_break_target)); | 152 __ mov(ip, Operand(after_break_target)); |
153 __ ldr(ip, MemOperand(ip)); | 153 __ ldr(ip, MemOperand(ip)); |
154 __ Jump(ip); | 154 __ Jump(ip); |
155 } | 155 } |
156 | 156 |
157 | 157 |
| 158 void Debug::GenerateCallICStubDebugBreak(MacroAssembler* masm) { |
| 159 // Register state for CallICStub |
| 160 // ----------- S t a t e ------------- |
| 161 // -- r1 : function |
| 162 // -- r3 : slot in feedback array (smi) |
| 163 // ----------------------------------- |
| 164 Generate_DebugBreakCallHelper(masm, r1.bit() | r3.bit(), 0); |
| 165 } |
| 166 |
| 167 |
158 void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) { | 168 void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) { |
159 // Calling convention for IC load (from ic-arm.cc). | 169 // Calling convention for IC load (from ic-arm.cc). |
160 // ----------- S t a t e ------------- | 170 // ----------- S t a t e ------------- |
161 // -- r2 : name | 171 // -- r2 : name |
162 // -- lr : return address | 172 // -- lr : return address |
163 // -- r0 : receiver | 173 // -- r0 : receiver |
164 // -- [sp] : receiver | 174 // -- [sp] : receiver |
165 // ----------------------------------- | 175 // ----------------------------------- |
166 // Registers r0 and r2 contain objects that need to be pushed on the | 176 // Registers r0 and r2 contain objects that need to be pushed on the |
167 // expression stack of the fake JS frame. | 177 // expression stack of the fake JS frame. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 | 214 |
205 void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) { | 215 void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) { |
206 // Register state for CompareNil IC | 216 // Register state for CompareNil IC |
207 // ----------- S t a t e ------------- | 217 // ----------- S t a t e ------------- |
208 // -- r0 : value | 218 // -- r0 : value |
209 // ----------------------------------- | 219 // ----------------------------------- |
210 Generate_DebugBreakCallHelper(masm, r0.bit(), 0); | 220 Generate_DebugBreakCallHelper(masm, r0.bit(), 0); |
211 } | 221 } |
212 | 222 |
213 | 223 |
214 void Debug::GenerateCallICDebugBreak(MacroAssembler* masm) { | |
215 // Calling convention for IC call (from ic-arm.cc) | |
216 // ----------- S t a t e ------------- | |
217 // -- r2 : name | |
218 // ----------------------------------- | |
219 Generate_DebugBreakCallHelper(masm, r2.bit(), 0); | |
220 } | |
221 | |
222 | |
223 void Debug::GenerateReturnDebugBreak(MacroAssembler* masm) { | 224 void Debug::GenerateReturnDebugBreak(MacroAssembler* masm) { |
224 // In places other than IC call sites it is expected that r0 is TOS which | 225 // In places other than IC call sites it is expected that r0 is TOS which |
225 // is an object - this is not generally the case so this should be used with | 226 // is an object - this is not generally the case so this should be used with |
226 // care. | 227 // care. |
227 Generate_DebugBreakCallHelper(masm, r0.bit(), 0); | 228 Generate_DebugBreakCallHelper(masm, r0.bit(), 0); |
228 } | 229 } |
229 | 230 |
230 | 231 |
231 void Debug::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { | 232 void Debug::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { |
232 // Register state for CallFunctionStub (from code-stubs-arm.cc). | 233 // Register state for CallFunctionStub (from code-stubs-arm.cc). |
233 // ----------- S t a t e ------------- | 234 // ----------- S t a t e ------------- |
234 // -- r1 : function | 235 // -- r1 : function |
235 // ----------------------------------- | 236 // ----------------------------------- |
236 Generate_DebugBreakCallHelper(masm, r1.bit(), 0); | 237 Generate_DebugBreakCallHelper(masm, r1.bit(), 0); |
237 } | 238 } |
238 | 239 |
239 | 240 |
240 void Debug::GenerateCallFunctionStubRecordDebugBreak(MacroAssembler* masm) { | |
241 // Register state for CallFunctionStub (from code-stubs-arm.cc). | |
242 // ----------- S t a t e ------------- | |
243 // -- r1 : function | |
244 // -- r2 : feedback array | |
245 // -- r3 : slot in feedback array | |
246 // ----------------------------------- | |
247 Generate_DebugBreakCallHelper(masm, r1.bit() | r2.bit() | r3.bit(), 0); | |
248 } | |
249 | |
250 | |
251 void Debug::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { | 241 void Debug::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { |
252 // Calling convention for CallConstructStub (from code-stubs-arm.cc) | 242 // Calling convention for CallConstructStub (from code-stubs-arm.cc) |
253 // ----------- S t a t e ------------- | 243 // ----------- S t a t e ------------- |
254 // -- r0 : number of arguments (not smi) | 244 // -- r0 : number of arguments (not smi) |
255 // -- r1 : constructor function | 245 // -- r1 : constructor function |
256 // ----------------------------------- | 246 // ----------------------------------- |
257 Generate_DebugBreakCallHelper(masm, r1.bit(), r0.bit()); | 247 Generate_DebugBreakCallHelper(masm, r1.bit(), r0.bit()); |
258 } | 248 } |
259 | 249 |
260 | 250 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnArm); | 291 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnArm); |
302 } | 292 } |
303 | 293 |
304 const bool Debug::kFrameDropperSupported = false; | 294 const bool Debug::kFrameDropperSupported = false; |
305 | 295 |
306 #undef __ | 296 #undef __ |
307 | 297 |
308 } } // namespace v8::internal | 298 } } // namespace v8::internal |
309 | 299 |
310 #endif // V8_TARGET_ARCH_ARM | 300 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |