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.