Index: src/debug/debug.h |
diff --git a/src/debug/debug.h b/src/debug/debug.h |
index 77451f679818efdaba1b6393ac78ce7c254fc42d..78b31352a7f553daff35edc3575ec65a85a35f0c 100644 |
--- a/src/debug/debug.h |
+++ b/src/debug/debug.h |
@@ -455,7 +455,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); |
@@ -500,6 +501,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() { |
@@ -650,6 +656,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 |
@@ -746,6 +757,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 |