| Index: src/debug.h
|
| ===================================================================
|
| --- src/debug.h (revision 1507)
|
| +++ src/debug.h (working copy)
|
| @@ -418,20 +418,22 @@
|
| static Handle<Object> MakeCompileEvent(Handle<Script> script,
|
| bool before,
|
| bool* caught_exception);
|
| - static void OnDebugBreak(Handle<Object> break_points_hit);
|
| + static void OnDebugBreak(Handle<Object> break_points_hit, bool auto_continue);
|
| static void OnException(Handle<Object> exception, bool uncaught);
|
| static void OnBeforeCompile(Handle<Script> script);
|
| static void OnAfterCompile(Handle<Script> script,
|
| Handle<JSFunction> fun);
|
| static void OnNewFunction(Handle<JSFunction> fun);
|
| static void ProcessDebugEvent(v8::DebugEvent event,
|
| - Handle<Object> event_data);
|
| + Handle<Object> event_data,
|
| + bool auto_continue);
|
| static void SetEventListener(Handle<Object> callback, Handle<Object> data);
|
| static void SetMessageHandler(v8::DebugMessageHandler handler, void* data);
|
| static void SetHostDispatchHandler(v8::DebugHostDispatchHandler handler,
|
| void* data);
|
| static void SendMessage(Vector<uint16_t> message);
|
| static void ProcessCommand(Vector<const uint16_t> command);
|
| + static bool HasCommands();
|
| static void ProcessHostDispatch(void* dispatch);
|
| static void UpdateActiveDebugger();
|
| static Handle<Object> Call(Handle<JSFunction> fun,
|
| @@ -528,7 +530,8 @@
|
| // when host_running_ is false.
|
| void DebugEvent(v8::DebugEvent,
|
| Handle<Object> exec_state,
|
| - Handle<Object> event_data);
|
| + Handle<Object> event_data,
|
| + bool auto_continue);
|
| // Puts event on the output queue. Called by V8.
|
| // This is where V8 hands off
|
| // processing of the event to the DebugMessageThread thread,
|
| @@ -546,6 +549,9 @@
|
| // Main function of DebugMessageThread thread.
|
| void Run();
|
|
|
| + // Check whether there are commands in the queue.
|
| + bool HasCommands() { return !command_queue_.IsEmpty(); }
|
| +
|
| bool host_running_; // Is the debugging host running or stopped?
|
| Semaphore* command_received_; // Non-zero when command queue is non-empty.
|
| Semaphore* message_received_; // Exactly equal to message queue length.
|
| @@ -616,6 +622,12 @@
|
| Debug::set_preemption_pending(false);
|
| }
|
|
|
| + // If there are commands in the queue when leaving the debugger request that
|
| + // these commands are processed.
|
| + if (prev_ == NULL && Debugger::HasCommands()) {
|
| + StackGuard::DebugCommand();
|
| + }
|
| +
|
| // Leaving this debugger entry.
|
| Debug::set_debugger_entry(prev_);
|
| }
|
|
|