| Index: src/debug.cc
|
| diff --git a/src/debug.cc b/src/debug.cc
|
| index 80885da730deaa878c3ca65f893c4858e60c04ef..a0b9884410f289302d7d74be6e65bfb62ef1a413 100644
|
| --- a/src/debug.cc
|
| +++ b/src/debug.cc
|
| @@ -2606,6 +2606,7 @@ Debugger::Debugger(Isolate* isolate)
|
| message_handler_(NULL),
|
| debugger_unload_pending_(false),
|
| host_dispatch_handler_(NULL),
|
| + dispatch_handler_access_(OS::CreateMutex()),
|
| debug_message_dispatch_handler_(NULL),
|
| message_dispatch_helper_thread_(NULL),
|
| host_dispatch_micros_(100 * 1000),
|
| @@ -2618,6 +2619,8 @@ Debugger::Debugger(Isolate* isolate)
|
|
|
|
|
| Debugger::~Debugger() {
|
| + delete dispatch_handler_access_;
|
| + dispatch_handler_access_ = 0;
|
| delete command_received_;
|
| command_received_ = 0;
|
| }
|
| @@ -3300,7 +3303,7 @@ void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler,
|
|
|
| void Debugger::SetDebugMessageDispatchHandler(
|
| v8::Debug::DebugMessageDispatchHandler handler, bool provide_locker) {
|
| - ScopedLock with(&dispatch_handler_access_);
|
| + ScopedLock with(dispatch_handler_access_);
|
| debug_message_dispatch_handler_ = handler;
|
|
|
| if (provide_locker && message_dispatch_helper_thread_ == NULL) {
|
| @@ -3343,7 +3346,7 @@ void Debugger::ProcessCommand(Vector<const uint16_t> command,
|
|
|
| MessageDispatchHelperThread* dispatch_thread;
|
| {
|
| - ScopedLock with(&dispatch_handler_access_);
|
| + ScopedLock with(dispatch_handler_access_);
|
| dispatch_thread = message_dispatch_helper_thread_;
|
| }
|
|
|
| @@ -3463,7 +3466,7 @@ void Debugger::WaitForAgent() {
|
| void Debugger::CallMessageDispatchHandler() {
|
| v8::Debug::DebugMessageDispatchHandler handler;
|
| {
|
| - ScopedLock with(&dispatch_handler_access_);
|
| + ScopedLock with(dispatch_handler_access_);
|
| handler = Debugger::debug_message_dispatch_handler_;
|
| }
|
| if (handler != NULL) {
|
| @@ -3784,20 +3787,24 @@ void CommandMessageQueue::Expand() {
|
|
|
|
|
| LockingCommandMessageQueue::LockingCommandMessageQueue(Logger* logger, int size)
|
| - : logger_(logger), queue_(size) {}
|
| + : logger_(logger), queue_(size) {
|
| + lock_ = OS::CreateMutex();
|
| +}
|
|
|
|
|
| -LockingCommandMessageQueue::~LockingCommandMessageQueue() {}
|
| +LockingCommandMessageQueue::~LockingCommandMessageQueue() {
|
| + delete lock_;
|
| +}
|
|
|
|
|
| -bool LockingCommandMessageQueue::IsEmpty() {
|
| - ScopedLock sl(&lock_);
|
| +bool LockingCommandMessageQueue::IsEmpty() const {
|
| + ScopedLock sl(lock_);
|
| return queue_.IsEmpty();
|
| }
|
|
|
|
|
| CommandMessage LockingCommandMessageQueue::Get() {
|
| - ScopedLock sl(&lock_);
|
| + ScopedLock sl(lock_);
|
| CommandMessage result = queue_.Get();
|
| logger_->DebugEvent("Get", result.text());
|
| return result;
|
| @@ -3805,14 +3812,14 @@ CommandMessage LockingCommandMessageQueue::Get() {
|
|
|
|
|
| void LockingCommandMessageQueue::Put(const CommandMessage& message) {
|
| - ScopedLock sl(&lock_);
|
| + ScopedLock sl(lock_);
|
| queue_.Put(message);
|
| logger_->DebugEvent("Put", message.text());
|
| }
|
|
|
|
|
| void LockingCommandMessageQueue::Clear() {
|
| - ScopedLock sl(&lock_);
|
| + ScopedLock sl(lock_);
|
| queue_.Clear();
|
| }
|
|
|
| @@ -3820,17 +3827,19 @@ void LockingCommandMessageQueue::Clear() {
|
| MessageDispatchHelperThread::MessageDispatchHelperThread(Isolate* isolate)
|
| : Thread("v8:MsgDispHelpr"),
|
| isolate_(isolate), sem_(OS::CreateSemaphore(0)),
|
| - already_signalled_(false) {}
|
| + mutex_(OS::CreateMutex()), already_signalled_(false) {
|
| +}
|
|
|
|
|
| MessageDispatchHelperThread::~MessageDispatchHelperThread() {
|
| + delete mutex_;
|
| delete sem_;
|
| }
|
|
|
|
|
| void MessageDispatchHelperThread::Schedule() {
|
| {
|
| - ScopedLock lock(&mutex_);
|
| + ScopedLock lock(mutex_);
|
| if (already_signalled_) {
|
| return;
|
| }
|
| @@ -3844,7 +3853,7 @@ void MessageDispatchHelperThread::Run() {
|
| while (true) {
|
| sem_->Wait();
|
| {
|
| - ScopedLock lock(&mutex_);
|
| + ScopedLock lock(mutex_);
|
| already_signalled_ = false;
|
| }
|
| {
|
|
|