Index: src/debug/debug.h |
diff --git a/src/debug/debug.h b/src/debug/debug.h |
index 86c5b4bf3f4e79ee515c587f021472d8252b3b6b..cd0a9fdffb8a9fe06f3e6f09b66a1c278402abf3 100644 |
--- a/src/debug/debug.h |
+++ b/src/debug/debug.h |
@@ -244,62 +244,17 @@ class DebugInfoListNode { |
DebugInfoListNode* next_; |
}; |
-// Message delivered to the message handler callback. This is either a debugger |
-// event or the response to a command. |
-class MessageImpl : public v8::Debug::Message { |
- public: |
- // Create a message object for a debug event. |
- static MessageImpl NewEvent(DebugEvent event, bool running, |
- Handle<JSObject> exec_state, |
- Handle<JSObject> event_data); |
- |
- // Create a message object for the response to a debug command. |
- static MessageImpl NewResponse(DebugEvent event, bool running, |
- Handle<JSObject> exec_state, |
- Handle<JSObject> event_data, |
- Handle<String> response_json, |
- v8::Debug::ClientData* client_data); |
- |
- // Implementation of interface v8::Debug::Message. |
- virtual bool IsEvent() const; |
- virtual bool IsResponse() const; |
- virtual DebugEvent GetEvent() const; |
- virtual bool WillStartRunning() const; |
- virtual v8::Local<v8::Object> GetExecutionState() const; |
- virtual v8::Local<v8::Object> GetEventData() const; |
- virtual v8::Local<v8::String> GetJSON() const; |
- virtual v8::Local<v8::Context> GetEventContext() const; |
- virtual v8::Debug::ClientData* GetClientData() const; |
- virtual v8::Isolate* GetIsolate() const; |
- |
- private: |
- MessageImpl(bool is_event, DebugEvent event, bool running, |
- Handle<JSObject> exec_state, Handle<JSObject> event_data, |
- Handle<String> response_json, v8::Debug::ClientData* client_data); |
- |
- bool is_event_; // Does this message represent a debug event? |
- DebugEvent event_; // Debug event causing the break. |
- bool running_; // Will the VM start running after this event? |
- Handle<JSObject> exec_state_; // Current execution state. |
- Handle<JSObject> event_data_; // Data associated with the event. |
- Handle<String> response_json_; // Response JSON if message holds a response. |
- v8::Debug::ClientData* client_data_; // Client data passed with the request. |
-}; |
- |
// Details of the debug event delivered to the debug event listener. |
class EventDetailsImpl : public v8::Debug::EventDetails { |
public: |
- EventDetailsImpl(DebugEvent event, |
- Handle<JSObject> exec_state, |
- Handle<JSObject> event_data, |
- Handle<Object> callback_data, |
- v8::Debug::ClientData* client_data); |
+ EventDetailsImpl(DebugEvent event, Handle<JSObject> exec_state, |
+ Handle<JSObject> event_data, Handle<Object> callback_data); |
virtual DebugEvent GetEvent() const; |
virtual v8::Local<v8::Object> GetExecutionState() const; |
virtual v8::Local<v8::Object> GetEventData() const; |
virtual v8::Local<v8::Context> GetEventContext() const; |
virtual v8::Local<v8::Value> GetCallbackData() const; |
- virtual v8::Debug::ClientData* GetClientData() const; |
+ virtual v8::Debug::ClientData* GetClientData() const { return nullptr; } |
virtual v8::Isolate* GetIsolate() const; |
private: |
@@ -308,70 +263,8 @@ class EventDetailsImpl : public v8::Debug::EventDetails { |
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. |
}; |
-// 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 CommandMessage { |
- public: |
- static CommandMessage New(const Vector<uint16_t>& command, |
- v8::Debug::ClientData* data); |
- CommandMessage(); |
- |
- // Deletes user data and disposes of the text. |
- void Dispose(); |
- Vector<uint16_t> text() const { return text_; } |
- v8::Debug::ClientData* client_data() const { return client_data_; } |
- |
- private: |
- CommandMessage(const Vector<uint16_t>& text, v8::Debug::ClientData* data); |
- |
- Vector<uint16_t> text_; |
- v8::Debug::ClientData* client_data_; |
-}; |
- |
-// A Queue of CommandMessage objects. A thread-safe version is |
-// LockingCommandMessageQueue, based on this class. |
-class CommandMessageQueue BASE_EMBEDDED { |
- public: |
- explicit CommandMessageQueue(int size); |
- ~CommandMessageQueue(); |
- bool IsEmpty() const { return start_ == end_; } |
- CommandMessage Get(); |
- void Put(const CommandMessage& 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(); |
- |
- CommandMessage* messages_; |
- int start_; |
- int end_; |
- int size_; // The size of the queue buffer. Queue can hold size-1 messages. |
-}; |
- |
-// LockingCommandMessageQueue is a thread-safe circular buffer of CommandMessage |
-// messages. The message data is not managed by LockingCommandMessageQueue. |
-// Pointers to the data are passed in and out. Implemented by adding a |
-// Mutex to CommandMessageQueue. Includes logging of all puts and gets. |
-class LockingCommandMessageQueue BASE_EMBEDDED { |
- public: |
- LockingCommandMessageQueue(Logger* logger, int size); |
- bool IsEmpty() const; |
- CommandMessage Get(); |
- void Put(const CommandMessage& message); |
- void Clear(); |
- |
- private: |
- Logger* logger_; |
- CommandMessageQueue queue_; |
- mutable base::Mutex mutex_; |
- DISALLOW_COPY_AND_ASSIGN(LockingCommandMessageQueue); |
-}; |
class DebugFeatureTracker { |
public: |
@@ -405,7 +298,7 @@ class DebugFeatureTracker { |
class Debug { |
public: |
// Debug event triggers. |
- void OnDebugBreak(Handle<Object> break_points_hit, bool auto_continue); |
+ void OnDebugBreak(Handle<Object> break_points_hit); |
void OnThrow(Handle<Object> exception); |
void OnPromiseReject(Handle<Object> promise, Handle<Object> value); |
@@ -415,14 +308,10 @@ class Debug { |
// API facing. |
void SetEventListener(Handle<Object> callback, Handle<Object> data); |
- void SetMessageHandler(v8::Debug::MessageHandler handler); |
- void EnqueueCommandMessage(Vector<const uint16_t> command, |
- v8::Debug::ClientData* client_data = NULL); |
MUST_USE_RESULT MaybeHandle<Object> Call(Handle<Object> fun, |
Handle<Object> data); |
Handle<Context> GetDebugContext(); |
void HandleDebugBreak(); |
- void ProcessDebugMessages(bool debug_command_only); |
// Internal logic |
bool Load(); |
@@ -579,8 +468,6 @@ class Debug { |
thread_local_.break_id_ = ++thread_local_.break_count_; |
} |
- // Check whether there are commands in the command queue. |
- inline bool has_commands() const { return !command_queue_.IsEmpty(); } |
inline bool ignore_events() const { |
return is_suppressed_ || !is_active_ || isolate_->needs_side_effect_check(); |
} |
@@ -604,8 +491,7 @@ class Debug { |
// is presented. Other clients can install JavaScript event listener |
// (e.g. some of NodeJS module). |
bool non_inspector_listener_exists() const { |
- return message_handler_ != nullptr || |
- (!event_listener_.is_null() && !event_listener_->IsForeign()); |
+ return !event_listener_.is_null() && !event_listener_->IsForeign(); |
} |
void OnException(Handle<Object> exception, Handle<Object> promise); |
@@ -626,16 +512,8 @@ class Debug { |
// Mirror cache handling. |
void ClearMirrorCache(); |
- void CallEventCallback(v8::DebugEvent event, |
- Handle<Object> exec_state, |
- Handle<Object> event_data, |
- v8::Debug::ClientData* client_data); |
void ProcessCompileEvent(v8::DebugEvent event, Handle<Script> script); |
- void ProcessDebugEvent(v8::DebugEvent event, Handle<JSObject> event_data, |
- bool auto_continue); |
- void NotifyMessageHandler(v8::DebugEvent event, Handle<JSObject> exec_state, |
- Handle<JSObject> event_data, bool auto_continue); |
- void InvokeMessageHandler(MessageImpl message); |
+ void ProcessDebugEvent(v8::DebugEvent event, Handle<JSObject> event_data); |
// Find the closest source position for a break point for a given position. |
int FindBreakablePosition(Handle<DebugInfo> debug_info, int source_position, |
@@ -676,14 +554,8 @@ class Debug { |
Handle<Object> event_listener_; |
Handle<Object> event_listener_data_; |
- v8::Debug::MessageHandler message_handler_; |
- |
debug::DebugEventListener* debug_event_listener_ = nullptr; |
- static const int kQueueInitialSize = 4; |
- base::Semaphore command_received_; // Signaled for each command received. |
- LockingCommandMessageQueue command_queue_; |
- |
// Debugger is active, i.e. there is a debug event listener attached. |
bool is_active_; |
// Debugger needs to be notified on every new function call. |