| 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, | 
|  |