Index: src/debug.h |
=================================================================== |
--- src/debug.h (revision 5064) |
+++ src/debug.h (working copy) |
@@ -566,18 +566,21 @@ |
EventDetailsImpl(DebugEvent event, |
Handle<JSObject> exec_state, |
Handle<JSObject> event_data, |
- Handle<Object> callback_data); |
+ Handle<Object> callback_data, |
+ v8::Debug::ClientData* client_data); |
virtual DebugEvent GetEvent() const; |
virtual v8::Handle<v8::Object> GetExecutionState() const; |
virtual v8::Handle<v8::Object> GetEventData() const; |
virtual v8::Handle<v8::Context> GetEventContext() const; |
virtual v8::Handle<v8::Value> GetCallbackData() const; |
+ virtual v8::Debug::ClientData* GetClientData() const; |
private: |
DebugEvent event_; // Debug event causing the break. |
- Handle<JSObject> exec_state_; // Current execution state. |
- Handle<JSObject> event_data_; // Data associated with the event. |
- Handle<Object> callback_data_; // User data passed with the callback when |
- // it was registered. |
+ Handle<JSObject> exec_state_; // Current execution state. |
+ Handle<JSObject> event_data_; // Data associated with the event. |
+ Handle<Object> callback_data_; // User data passed with the callback |
+ // when it was registered. |
+ v8::Debug::ClientData* client_data_; // Data passed to DebugBreakForCommand. |
}; |
@@ -706,6 +709,9 @@ |
// Check whether there are commands in the command queue. |
static bool HasCommands(); |
+ // Enqueue a debugger command to the command queue for event listeners. |
+ static void EnqueueDebugCommand(v8::Debug::ClientData* client_data = NULL); |
+ |
static Handle<Object> Call(Handle<JSFunction> fun, |
Handle<Object> data, |
bool* pending_exception); |
@@ -753,6 +759,17 @@ |
static bool IsDebuggerActive(); |
private: |
+ static void CallEventCallback(v8::DebugEvent event, |
+ Handle<Object> exec_state, |
+ Handle<Object> event_data, |
+ v8::Debug::ClientData* client_data); |
+ static void CallCEventCallback(v8::DebugEvent event, |
+ Handle<Object> exec_state, |
+ Handle<Object> event_data, |
+ v8::Debug::ClientData* client_data); |
+ static void CallJSEventCallback(v8::DebugEvent event, |
+ Handle<Object> exec_state, |
+ Handle<Object> event_data); |
static void ListenersChanged(); |
static Mutex* debugger_access_; // Mutex guarding debugger variables. |
@@ -775,6 +792,8 @@ |
static LockingCommandMessageQueue command_queue_; |
static Semaphore* command_received_; // Signaled for each command received. |
+ static LockingCommandMessageQueue event_command_queue_; |
+ |
friend class EnterDebugger; |
}; |