Index: src/debug.h |
diff --git a/src/debug.h b/src/debug.h |
index 6019294f22c4e54aa439a1c73be2b090b32b0038..fb9269272f1f2200b00cd9a20c5eba0d2e9f1a40 100644 |
--- a/src/debug.h |
+++ b/src/debug.h |
@@ -400,7 +400,22 @@ class Debug { |
// Called from stub-cache.cc. |
static void GenerateCallICDebugBreak(MacroAssembler* masm); |
- static void FramesHaveBeenDropped(StackFrame::Id new_break_frame_id); |
+ // Describes how exactly a frame has been dropped from stack. |
+ enum FrameDropMode { |
+ // No frame has been dropped. |
+ FRAMES_UNTOUCHED, |
+ // The top JS frame had been calling IC stub. IC stub mustn't be called now. |
+ FRAME_DROPPED_IN_IC_CALL, |
+ // The top JS frame had been calling debug break slot stub. Patch the |
+ // address this stub jumps to in the end. |
+ FRAME_DROPPED_IN_DEBUG_SLOT_CALL, |
+ // The top JS frame had been calling some C++ function. The return address |
+ // gets patched automatically. |
+ FRAME_DROPPED_IN_DIRECT_CALL |
+ }; |
+ |
+ static void FramesHaveBeenDropped(StackFrame::Id new_break_frame_id, |
+ FrameDropMode mode); |
static void SetUpFrameDropperFrame(StackFrame* bottom_js_frame, |
Handle<Code> code); |
@@ -471,8 +486,9 @@ class Debug { |
// Storage location for jump when exiting debug break calls. |
Address after_break_target_; |
- // Indicates that LiveEdit has patched the stack. |
- bool frames_are_dropped_; |
+ // Stores the way how LiveEdit has patched the stack. It is used when |
+ // debugger returns control back to user script. |
+ FrameDropMode frame_drop_mode_; |
// Top debugger entry. |
EnterDebugger* debugger_entry_; |