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 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "codegen.h" | 9 #include "codegen.h" |
10 #include "debug.h" | 10 #include "debug.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 // jumping to the target address intended by the caller and that was | 208 // jumping to the target address intended by the caller and that was |
209 // overwritten by the address of DebugBreakXXX. | 209 // overwritten by the address of DebugBreakXXX. |
210 ExternalReference after_break_target(Debug_Address::AfterBreakTarget(), | 210 ExternalReference after_break_target(Debug_Address::AfterBreakTarget(), |
211 masm->isolate()); | 211 masm->isolate()); |
212 __ Mov(scratch, after_break_target); | 212 __ Mov(scratch, after_break_target); |
213 __ Ldr(scratch, MemOperand(scratch)); | 213 __ Ldr(scratch, MemOperand(scratch)); |
214 __ Br(scratch); | 214 __ Br(scratch); |
215 } | 215 } |
216 | 216 |
217 | 217 |
| 218 void Debug::GenerateCallICStubDebugBreak(MacroAssembler* masm) { |
| 219 // Register state for CallICStub |
| 220 // ----------- S t a t e ------------- |
| 221 // -- x1 : function |
| 222 // -- x3 : slot in feedback array |
| 223 // ----------------------------------- |
| 224 Generate_DebugBreakCallHelper(masm, x1.Bit() | x3.Bit(), 0, x10); |
| 225 } |
| 226 |
| 227 |
218 void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) { | 228 void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) { |
219 // Calling convention for IC load (from ic-arm.cc). | 229 // Calling convention for IC load (from ic-arm.cc). |
220 // ----------- S t a t e ------------- | 230 // ----------- S t a t e ------------- |
221 // -- x2 : name | 231 // -- x2 : name |
222 // -- lr : return address | 232 // -- lr : return address |
223 // -- x0 : receiver | 233 // -- x0 : receiver |
224 // -- [sp] : receiver | 234 // -- [sp] : receiver |
225 // ----------------------------------- | 235 // ----------------------------------- |
226 // Registers x0 and x2 contain objects that need to be pushed on the | 236 // Registers x0 and x2 contain objects that need to be pushed on the |
227 // expression stack of the fake JS frame. | 237 // expression stack of the fake JS frame. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 | 274 |
265 void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) { | 275 void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) { |
266 // Register state for CompareNil IC | 276 // Register state for CompareNil IC |
267 // ----------- S t a t e ------------- | 277 // ----------- S t a t e ------------- |
268 // -- r0 : value | 278 // -- r0 : value |
269 // ----------------------------------- | 279 // ----------------------------------- |
270 Generate_DebugBreakCallHelper(masm, x0.Bit(), 0, x10); | 280 Generate_DebugBreakCallHelper(masm, x0.Bit(), 0, x10); |
271 } | 281 } |
272 | 282 |
273 | 283 |
274 void Debug::GenerateCallICDebugBreak(MacroAssembler* masm) { | |
275 // Calling convention for IC call (from ic-arm.cc) | |
276 // ----------- S t a t e ------------- | |
277 // -- x2 : name | |
278 // ----------------------------------- | |
279 Generate_DebugBreakCallHelper(masm, x2.Bit(), 0, x10); | |
280 } | |
281 | |
282 | |
283 void Debug::GenerateReturnDebugBreak(MacroAssembler* masm) { | 284 void Debug::GenerateReturnDebugBreak(MacroAssembler* masm) { |
284 // In places other than IC call sites it is expected that r0 is TOS which | 285 // In places other than IC call sites it is expected that r0 is TOS which |
285 // is an object - this is not generally the case so this should be used with | 286 // is an object - this is not generally the case so this should be used with |
286 // care. | 287 // care. |
287 Generate_DebugBreakCallHelper(masm, x0.Bit(), 0, x10); | 288 Generate_DebugBreakCallHelper(masm, x0.Bit(), 0, x10); |
288 } | 289 } |
289 | 290 |
290 | 291 |
291 void Debug::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { | 292 void Debug::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { |
292 // Register state for CallFunctionStub (from code-stubs-arm64.cc). | 293 // Register state for CallFunctionStub (from code-stubs-arm64.cc). |
293 // ----------- S t a t e ------------- | 294 // ----------- S t a t e ------------- |
294 // -- x1 : function | 295 // -- x1 : function |
295 // ----------------------------------- | 296 // ----------------------------------- |
296 Generate_DebugBreakCallHelper(masm, x1.Bit(), 0, x10); | 297 Generate_DebugBreakCallHelper(masm, x1.Bit(), 0, x10); |
297 } | 298 } |
298 | 299 |
299 | 300 |
300 void Debug::GenerateCallFunctionStubRecordDebugBreak(MacroAssembler* masm) { | |
301 // Register state for CallFunctionStub (from code-stubs-arm64.cc). | |
302 // ----------- S t a t e ------------- | |
303 // -- x1 : function | |
304 // -- x2 : feedback array | |
305 // -- x3 : slot in feedback array | |
306 // ----------------------------------- | |
307 Generate_DebugBreakCallHelper(masm, x1.Bit() | x2.Bit() | x3.Bit(), 0, x10); | |
308 } | |
309 | |
310 | |
311 void Debug::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { | 301 void Debug::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { |
312 // Calling convention for CallConstructStub (from code-stubs-arm64.cc). | 302 // Calling convention for CallConstructStub (from code-stubs-arm64.cc). |
313 // ----------- S t a t e ------------- | 303 // ----------- S t a t e ------------- |
314 // -- x0 : number of arguments (not smi) | 304 // -- x0 : number of arguments (not smi) |
315 // -- x1 : constructor function | 305 // -- x1 : constructor function |
316 // ----------------------------------- | 306 // ----------------------------------- |
317 Generate_DebugBreakCallHelper(masm, x1.Bit(), x0.Bit(), x10); | 307 Generate_DebugBreakCallHelper(masm, x1.Bit(), x0.Bit(), x10); |
318 } | 308 } |
319 | 309 |
320 | 310 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 | 347 |
358 void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { | 348 void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { |
359 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnARM64); | 349 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnARM64); |
360 } | 350 } |
361 | 351 |
362 const bool Debug::kFrameDropperSupported = false; | 352 const bool Debug::kFrameDropperSupported = false; |
363 | 353 |
364 } } // namespace v8::internal | 354 } } // namespace v8::internal |
365 | 355 |
366 #endif // V8_TARGET_ARCH_ARM64 | 356 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |