Merge r1718 to trunk.
Review URL: http://codereview.chromium.org/79019
git-svn-id: http://v8.googlecode.com/svn/trunk@1730 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
diff --git a/src/api.cc b/src/api.cc
index 9f3024e..650f166 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -2373,7 +2373,7 @@
const char* v8::V8::GetVersion() {
- return "1.1.10";
+ return "1.1.10.1";
}
diff --git a/src/debug.cc b/src/debug.cc
index 1374c15..a4bb04d 100644
--- a/src/debug.cc
+++ b/src/debug.cc
@@ -1825,6 +1825,9 @@
Debugger::host_dispatch_handler_(reinterpret_cast<void*>(dispatch),
Debugger::host_dispatch_handler_data_);
}
+ if (auto_continue && !HasCommands()) {
+ return;
+ }
continue;
}
@@ -2030,6 +2033,8 @@
Logger::DebugTag("Put command on command_queue.");
command_queue_.Put(command_copy);
command_received_->Signal();
+
+ // Set the debug command break flag to have the command processed.
if (!Debug::InDebugger()) {
StackGuard::DebugCommand();
}
@@ -2042,7 +2047,7 @@
void Debugger::ProcessHostDispatch(void* dispatch) {
-// Puts a host dispatch comming from the public API on the queue.
+ // Puts a host dispatch comming from the public API on the queue.
uint16_t hack[3];
hack[0] = 0;
hack[1] = reinterpret_cast<uint32_t>(dispatch) >> 16;
@@ -2050,6 +2055,11 @@
Logger::DebugTag("Put dispatch on command_queue.");
command_queue_.Put(Vector<uint16_t>(hack, 3).Clone());
command_received_->Signal();
+
+ // Set the debug command break flag to have the host dispatch processed.
+ if (!Debug::InDebugger()) {
+ StackGuard::DebugCommand();
+ }
}
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc
index 03ef70d..e482c7f 100644
--- a/test/cctest/test-debug.cc
+++ b/test/cctest/test-debug.cc
@@ -4025,19 +4025,33 @@
"\"type\":\"request\","
"\"command\":\"continue\"}";
+ // Create an empty function to call for processing debug commands
+ v8::Local<v8::Function> empty =
+ CompileFunction(&env, "function empty(){}", "empty");
+
// Setup message and host dispatch handlers.
v8::Debug::SetMessageHandler(DummyMessageHandler);
v8::Debug::SetHostDispatchHandler(HostDispatchHandlerHitCount,
NULL);
- // Fill a host dispatch and a continue command on the command queue before
- // running some code.
+ // Send a host dispatch by itself.
+ v8::Debug::SendHostDispatch(NULL);
+ empty->Call(env->Global(), 0, NULL); // Run JavaScript to activate debugger.
+ CHECK_EQ(1, host_dispatch_hit_count);
+
+ // Fill a host dispatch and a continue command on the command queue.
v8::Debug::SendHostDispatch(NULL);
v8::Debug::SendCommand(buffer, AsciiToUtf16(command_continue, buffer));
- CompileRun("void 0");
+ empty->Call(env->Global(), 0, NULL); // Run JavaScript to activate debugger.
- // The host dispatch callback should be called.
- CHECK_EQ(1, host_dispatch_hit_count);
+ // Fill a continue command and a host dispatch on the command queue.
+ v8::Debug::SendCommand(buffer, AsciiToUtf16(command_continue, buffer));
+ v8::Debug::SendHostDispatch(NULL);
+ empty->Call(env->Global(), 0, NULL); // Run JavaScript to activate debugger.
+ empty->Call(env->Global(), 0, NULL); // Run JavaScript to activate debugger.
+
+ // All the host dispatch callback should be called.
+ CHECK_EQ(3, host_dispatch_hit_count);
}