OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 30 matching lines...) Expand all Loading... |
41 } | 41 } |
42 | 42 |
43 | 43 |
44 void BreakLocationIterator::SetDebugBreakAtReturn() { | 44 void BreakLocationIterator::SetDebugBreakAtReturn() { |
45 // Patch the code changing the return from JS function sequence from | 45 // Patch the code changing the return from JS function sequence from |
46 // mov sp, fp | 46 // mov sp, fp |
47 // ldmia sp!, {fp, lr} | 47 // ldmia sp!, {fp, lr} |
48 // add sp, sp, #4 | 48 // add sp, sp, #4 |
49 // bx lr | 49 // bx lr |
50 // to a call to the debug break return code. | 50 // to a call to the debug break return code. |
51 // #if USE_BLX | 51 // #ifdef USE_BLX |
52 // ldr ip, [pc, #0] | 52 // ldr ip, [pc, #0] |
53 // blx ip | 53 // blx ip |
54 // #else | 54 // #else |
55 // mov lr, pc | 55 // mov lr, pc |
56 // ldr pc, [pc, #-4] | 56 // ldr pc, [pc, #-4] |
57 // #endif | 57 // #endif |
58 // <debug break return code entry point address> | 58 // <debug break return code entry point address> |
59 // bktp 0 | 59 // bktp 0 |
60 CodePatcher patcher(rinfo()->pc(), Assembler::kJSReturnSequenceInstructions); | 60 CodePatcher patcher(rinfo()->pc(), Assembler::kJSReturnSequenceInstructions); |
61 #ifdef USE_BLX | 61 #ifdef USE_BLX |
(...skipping 30 matching lines...) Expand all Loading... |
92 } | 92 } |
93 | 93 |
94 | 94 |
95 void BreakLocationIterator::SetDebugBreakAtSlot() { | 95 void BreakLocationIterator::SetDebugBreakAtSlot() { |
96 ASSERT(IsDebugBreakSlot()); | 96 ASSERT(IsDebugBreakSlot()); |
97 // Patch the code changing the debug break slot code from | 97 // Patch the code changing the debug break slot code from |
98 // mov r2, r2 | 98 // mov r2, r2 |
99 // mov r2, r2 | 99 // mov r2, r2 |
100 // mov r2, r2 | 100 // mov r2, r2 |
101 // to a call to the debug break slot code. | 101 // to a call to the debug break slot code. |
102 // #if USE_BLX | 102 // #ifdef USE_BLX |
103 // ldr ip, [pc, #0] | 103 // ldr ip, [pc, #0] |
104 // blx ip | 104 // blx ip |
105 // #else | 105 // #else |
106 // mov lr, pc | 106 // mov lr, pc |
107 // ldr pc, [pc, #-4] | 107 // ldr pc, [pc, #-4] |
108 // #endif | 108 // #endif |
109 // <debug break slot code entry point address> | 109 // <debug break slot code entry point address> |
110 CodePatcher patcher(rinfo()->pc(), Assembler::kDebugBreakSlotInstructions); | 110 CodePatcher patcher(rinfo()->pc(), Assembler::kDebugBreakSlotInstructions); |
111 #ifdef USE_BLX | 111 #ifdef USE_BLX |
112 patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0)); | 112 patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0)); |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 | 336 |
337 #undef __ | 337 #undef __ |
338 | 338 |
339 | 339 |
340 | 340 |
341 #endif // ENABLE_DEBUGGER_SUPPORT | 341 #endif // ENABLE_DEBUGGER_SUPPORT |
342 | 342 |
343 } } // namespace v8::internal | 343 } } // namespace v8::internal |
344 | 344 |
345 #endif // V8_TARGET_ARCH_ARM | 345 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |