Index: src/debug/debug.h |
diff --git a/src/debug/debug.h b/src/debug/debug.h |
index 3d2bbc22589c04745ec09612e3e32385d3c39d67..ab870f099092e29a5e29850479b8637e47154bb0 100644 |
--- a/src/debug/debug.h |
+++ b/src/debug/debug.h |
@@ -464,7 +464,8 @@ |
// Support for LiveEdit |
void FramesHaveBeenDropped(StackFrame::Id new_break_frame_id, |
- LiveEdit::FrameDropMode mode); |
+ LiveEdit::FrameDropMode mode, |
+ Object** restarter_frame_function_pointer); |
// Threading support. |
char* ArchiveDebug(char* to); |
@@ -509,6 +510,11 @@ |
Address after_break_target_address() { |
return reinterpret_cast<Address>(&after_break_target_); |
+ } |
+ |
+ Address restarter_frame_function_pointer_address() { |
+ Object*** address = &thread_local_.restarter_frame_function_pointer_; |
+ return reinterpret_cast<Address>(address); |
} |
Address step_in_enabled_address() { |
@@ -659,6 +665,11 @@ |
// Stores the way how LiveEdit has patched the stack. It is used when |
// debugger returns control back to user script. |
LiveEdit::FrameDropMode frame_drop_mode_; |
+ |
+ // When restarter frame is on stack, stores the address |
+ // of the pointer to function being restarted. Otherwise (most of the time) |
+ // stores NULL. This pointer is used with 'step in' implementation. |
+ Object** restarter_frame_function_pointer_; |
}; |
// Storage location for registers when handling debug break calls |
@@ -755,6 +766,8 @@ |
static void GenerateDebugBreakStub(MacroAssembler* masm, |
DebugBreakCallHelperMode mode); |
+ static void GeneratePlainReturnLiveEdit(MacroAssembler* masm); |
+ |
// FrameDropper is a code replacement for a JavaScript frame with possibly |
// several frames above. |
// There is no calling conventions here, because it never actually gets |