Fix disable_break parameter

Review URL: http://codereview.chromium.org/552068

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3675 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
peter.rybin@gmail.com 2010-01-21 17:41:17 +00:00
parent 812eff2802
commit b400427e10
2 changed files with 57 additions and 17 deletions

View File

@ -1704,7 +1704,7 @@ DebugCommandProcessor.prototype.evaluateRequest_ = function(request, response) {
if (global) {
// Evaluate in the global context.
response.body =
this.exec_state_.evaluateGlobal(expression), Boolean(disable_break);
this.exec_state_.evaluateGlobal(expression, Boolean(disable_break));
return;
}

View File

@ -4264,7 +4264,12 @@ class BreakpointsV8Thread : public v8::internal::Thread {
class BreakpointsDebuggerThread : public v8::internal::Thread {
public:
BreakpointsDebuggerThread(bool global_evaluate)
: global_evaluate_(global_evaluate) {}
void Run();
private:
bool global_evaluate_;
};
@ -4332,24 +4337,51 @@ void BreakpointsDebuggerThread::Run() {
"\"type\":\"request\","
"\"command\":\"setbreakpoint\","
"\"arguments\":{\"type\":\"function\",\"target\":\"dog\",\"line\":3}}";
const char* command_3 = "{\"seq\":103,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":false}}";
const char* command_4 = "{\"seq\":104,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"x + 1\",\"disable_break\":true}}";
const char* command_3;
if (this->global_evaluate_) {
command_3 = "{\"seq\":103,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":false,"
"\"global\":true}}";
} else {
command_3 = "{\"seq\":103,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":false}}";
}
const char* command_4;
if (this->global_evaluate_) {
command_4 = "{\"seq\":104,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"100 + 8\",\"disable_break\":true,"
"\"global\":true}}";
} else {
command_4 = "{\"seq\":104,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"x + 1\",\"disable_break\":true}}";
}
const char* command_5 = "{\"seq\":105,"
"\"type\":\"request\","
"\"command\":\"continue\"}";
const char* command_6 = "{\"seq\":106,"
"\"type\":\"request\","
"\"command\":\"continue\"}";
const char* command_7 = "{\"seq\":107,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":true}}";
const char* command_7;
if (this->global_evaluate_) {
command_7 = "{\"seq\":107,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":true,"
"\"global\":true}}";
} else {
command_7 = "{\"seq\":107,"
"\"type\":\"request\","
"\"command\":\"evaluate\","
"\"arguments\":{\"expression\":\"dog()\",\"disable_break\":true}}";
}
const char* command_8 = "{\"seq\":108,"
"\"type\":\"request\","
"\"command\":\"continue\"}";
@ -4406,12 +4438,12 @@ void BreakpointsDebuggerThread::Run() {
v8::Debug::SendCommand(buffer, AsciiToUtf16(command_8, buffer));
}
BreakpointsDebuggerThread breakpoints_debugger_thread;
BreakpointsV8Thread breakpoints_v8_thread;
TEST(RecursiveBreakpoints) {
void TestRecursiveBreakpointsGeneric(bool global_evaluate) {
i::FLAG_debugger_auto_break = true;
BreakpointsDebuggerThread breakpoints_debugger_thread(global_evaluate);
BreakpointsV8Thread breakpoints_v8_thread;
// Create a V8 environment
Barriers stack_allocated_breakpoints_barriers;
stack_allocated_breakpoints_barriers.Initialize();
@ -4424,6 +4456,14 @@ TEST(RecursiveBreakpoints) {
breakpoints_debugger_thread.Join();
}
TEST(RecursiveBreakpoints) {
TestRecursiveBreakpointsGeneric(false);
}
TEST(RecursiveBreakpointsGlobal) {
TestRecursiveBreakpointsGeneric(true);
}
static void DummyDebugEventListener(v8::DebugEvent event,
v8::Handle<v8::Object> exec_state,