Index: test/cctest/test-debug.cc |
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc |
index 5c4575c7339e48fcaf577c9bb0e9b075f2276180..3c1e6c94d4af488c53e2d77761e0fdf39cfcffe7 100644 |
--- a/test/cctest/test-debug.cc |
+++ b/test/cctest/test-debug.cc |
@@ -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, |