Reviewers: ulan,

Description:
Do not force interrupt in test-debug/ProcessDebugMessagesThreaded.

[email protected]

Please review this at https://codereview.chromium.org/557773002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+25, -10 lines):
  M test/cctest/test-debug.cc


Index: test/cctest/test-debug.cc
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc
index 048de0b1c2c3ca2f9c8e917722bfe411bcf1a372..0cdd23e6fbc8d42686813f514fb7d2b2dca38166 100644
--- a/test/cctest/test-debug.cc
+++ b/test/cctest/test-debug.cc
@@ -6531,9 +6531,25 @@ class SendCommandThread : public v8::base::Thread {
         semaphore_(0),
         isolate_(isolate) {}

-  static void ProcessDebugMessages(v8::Isolate* isolate, void* data) {
-    v8::Debug::ProcessDebugMessages();
-    reinterpret_cast<v8::base::Semaphore*>(data)->Signal();
+  class ClientDataImpl : public v8::Debug::ClientData {
+   public:
+    explicit ClientDataImpl(v8::base::Semaphore* semaphore)
+        : semaphore_(semaphore) {}
+    v8::base::Semaphore* semaphore() { return semaphore_; }
+
+   private:
+    v8::base::Semaphore* semaphore_;
+  };
+
+  static void CountingAndSignallingMessageHandler(
+      const v8::Debug::Message& message) {
+    if (message.IsResponse()) {
+      counting_message_handler_counter++;
+      ClientDataImpl* data =
+          reinterpret_cast<ClientDataImpl*>(message.GetClientData());
+      v8::base::Semaphore* semaphore = data->semaphore();
+      semaphore->Signal();
+    }
   }

   virtual void Run() {
@@ -6550,18 +6566,16 @@ class SendCommandThread : public v8::base::Thread {
     for (int i = 0; i < 100; i++) {
       CHECK_EQ(i, counting_message_handler_counter);
       // Queue debug message.
-      v8::Debug::SendCommand(isolate_, buffer, length);
-      // Synchronize with the main thread to force message processing.
-      isolate_->RequestInterrupt(ProcessDebugMessages, &semaphore_);
+      v8::Debug::SendCommand(isolate_, buffer, length,
+                             new ClientDataImpl(&semaphore_));
+      // Wait for the message handler to pick up the response.
       semaphore_.Wait();
     }

     v8::V8::TerminateExecution(isolate_);
   }

-  void StartSending() {
-    semaphore_.Signal();
-  }
+  void StartSending() { semaphore_.Signal(); }

  private:
   v8::base::Semaphore semaphore_;
@@ -6584,7 +6598,8 @@ TEST(ProcessDebugMessagesThreaded) {

   counting_message_handler_counter = 0;

-  v8::Debug::SetMessageHandler(CountingMessageHandler);
+  v8::Debug::SetMessageHandler(
+      SendCommandThread::CountingAndSignallingMessageHandler);
   send_command_thread_ = new SendCommandThread(isolate);
   send_command_thread_->Start();



--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to