| Index: src/debug.h
|
| ===================================================================
|
| --- src/debug.h (revision 1753)
|
| +++ src/debug.h (working copy)
|
| @@ -397,6 +397,36 @@
|
| };
|
|
|
|
|
| +// Message send by user to v8 debugger or debugger output message.
|
| +// In addition to command text it may contain a pointer to some user data
|
| +// which are expected to be passed along with the command reponse to message
|
| +// handler.
|
| +class Message {
|
| + public:
|
| + static Message NewCommand(const Vector<uint16_t>& command,
|
| + v8::Debug::ClientData* data);
|
| + static Message NewHostDispatch(v8::Debug::ClientData* dispatch);
|
| + static Message NewOutput(v8::Handle<v8::String> output,
|
| + v8::Debug::ClientData* data);
|
| + static Message NewEmptyMessage();
|
| + Message();
|
| + ~Message();
|
| +
|
| + // Deletes user data and disposes of the text.
|
| + void Dispose();
|
| + bool IsHostDispatch() const;
|
| + Vector<uint16_t> text() const { return text_; }
|
| + v8::Debug::ClientData* client_data() const { return client_data_; }
|
| + private:
|
| + Message(const Vector<uint16_t>& text,
|
| + v8::Debug::ClientData* data,
|
| + bool is_host_dispatch);
|
| +
|
| + Vector<uint16_t> text_;
|
| + v8::Debug::ClientData* client_data_;
|
| + bool is_host_dispatch_;
|
| +};
|
| +
|
| // A Queue of Vector<uint16_t> objects. A thread-safe version is
|
| // LockingMessageQueue, based on this class.
|
| class MessageQueue BASE_EMBEDDED {
|
| @@ -404,14 +434,14 @@
|
| explicit MessageQueue(int size);
|
| ~MessageQueue();
|
| bool IsEmpty() const { return start_ == end_; }
|
| - Vector<uint16_t> Get();
|
| - void Put(const Vector<uint16_t>& message);
|
| + Message Get();
|
| + void Put(const Message& message);
|
| void Clear() { start_ = end_ = 0; } // Queue is empty after Clear().
|
| private:
|
| // Doubles the size of the message queue, and copies the messages.
|
| void Expand();
|
|
|
| - Vector<uint16_t>* messages_;
|
| + Message* messages_;
|
| int start_;
|
| int end_;
|
| int size_; // The size of the queue buffer. Queue can hold size-1 messages.
|
| @@ -427,8 +457,8 @@
|
| explicit LockingMessageQueue(int size);
|
| ~LockingMessageQueue();
|
| bool IsEmpty() const;
|
| - Vector<uint16_t> Get();
|
| - void Put(const Vector<uint16_t>& message);
|
| + Message Get();
|
| + void Put(const Message& message);
|
| void Clear();
|
| private:
|
| MessageQueue queue_;
|
| @@ -473,29 +503,29 @@
|
| 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 SetMessageHandler(v8::Debug::MessageHandler handler,
|
| bool message_handler_thread);
|
| static void TearDown();
|
| - static void SetHostDispatchHandler(v8::DebugHostDispatchHandler handler,
|
| - void* data);
|
| + static void SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler);
|
|
|
| // Invoke the message handler function.
|
| - static void InvokeMessageHandler(Vector< uint16_t> message);
|
| + static void InvokeMessageHandler(Message message);
|
|
|
| // Send a message to the message handler eiher through the message thread or
|
| // directly.
|
| - static void SendMessage(Vector<uint16_t> message);
|
| + static void SendMessage(Message message);
|
|
|
| // Send the JSON message for a debug event.
|
| static bool SendEventMessage(Handle<Object> event_data);
|
|
|
| // Add a debugger command to the command queue.
|
| - static void ProcessCommand(Vector<const uint16_t> command);
|
| + static void ProcessCommand(Vector<const uint16_t> command,
|
| + v8::Debug::ClientData* client_data = NULL);
|
|
|
| // Check whether there are commands in the command queue.
|
| static bool HasCommands();
|
|
|
| - static void ProcessHostDispatch(void* dispatch);
|
| + static void ProcessHostDispatch(v8::Debug::ClientData* dispatch);
|
| static Handle<Object> Call(Handle<JSFunction> fun,
|
| Handle<Object> data,
|
| bool* pending_exception);
|
| @@ -539,11 +569,9 @@
|
| static bool is_loading_debugger_; // Are we loading the debugger?
|
| static bool never_unload_debugger_; // Can we unload the debugger?
|
| static DebugMessageThread* message_thread_;
|
| - static v8::DebugMessageHandler message_handler_;
|
| + static v8::Debug::MessageHandler message_handler_;
|
| static bool message_handler_cleared_; // Was message handler cleared?
|
| - static void* message_handler_data_;
|
| - static v8::DebugHostDispatchHandler host_dispatch_handler_;
|
| - static void* host_dispatch_handler_data_;
|
| + static v8::Debug::HostDispatchHandler host_dispatch_handler_;
|
|
|
| static DebuggerAgent* agent_;
|
|
|
|
|