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 #if V8_TARGET_ARCH_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
6 | 6 |
7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 // nop(DEBUG_BREAK_NOP) | 51 // nop(DEBUG_BREAK_NOP) |
52 // to a call to the debug break slot code. | 52 // to a call to the debug break slot code. |
53 // li t9, address (4-instruction sequence on mips64) | 53 // li t9, address (4-instruction sequence on mips64) |
54 // call t9 (jalr t9 / nop instruction pair) | 54 // call t9 (jalr t9 / nop instruction pair) |
55 patcher.masm()->li(v8::internal::t9, | 55 patcher.masm()->li(v8::internal::t9, |
56 Operand(reinterpret_cast<int64_t>(code->entry())), | 56 Operand(reinterpret_cast<int64_t>(code->entry())), |
57 ADDRESS_LOAD); | 57 ADDRESS_LOAD); |
58 patcher.masm()->Call(v8::internal::t9); | 58 patcher.masm()->Call(v8::internal::t9); |
59 } | 59 } |
60 | 60 |
| 61 bool DebugCodegen::DebugBreakSlotIsPatched(Address pc) { |
| 62 Instr current_instr = Assembler::instr_at(pc); |
| 63 return !Assembler::IsNop(current_instr, Assembler::DEBUG_BREAK_NOP); |
| 64 } |
61 | 65 |
62 void DebugCodegen::GenerateDebugBreakStub(MacroAssembler* masm, | 66 void DebugCodegen::GenerateDebugBreakStub(MacroAssembler* masm, |
63 DebugBreakCallHelperMode mode) { | 67 DebugBreakCallHelperMode mode) { |
64 __ RecordComment("Debug break"); | 68 __ RecordComment("Debug break"); |
65 { | 69 { |
66 FrameScope scope(masm, StackFrame::INTERNAL); | 70 FrameScope scope(masm, StackFrame::INTERNAL); |
67 | 71 |
68 // Load padding words on stack. | 72 // Load padding words on stack. |
69 __ li(at, Operand(Smi::FromInt(LiveEdit::kFramePaddingValue))); | 73 __ li(at, Operand(Smi::FromInt(LiveEdit::kFramePaddingValue))); |
70 __ Dsubu(sp, sp, | 74 __ Dsubu(sp, sp, |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 140 |
137 | 141 |
138 const bool LiveEdit::kFrameDropperSupported = true; | 142 const bool LiveEdit::kFrameDropperSupported = true; |
139 | 143 |
140 #undef __ | 144 #undef __ |
141 | 145 |
142 } // namespace internal | 146 } // namespace internal |
143 } // namespace v8 | 147 } // namespace v8 |
144 | 148 |
145 #endif // V8_TARGET_ARCH_MIPS64 | 149 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |