| Index: src/execution.cc
|
| ===================================================================
|
| --- src/execution.cc (revision 2070)
|
| +++ src/execution.cc (working copy)
|
| @@ -588,32 +588,15 @@
|
| return Heap::undefined_value();
|
| }
|
|
|
| - // Don't break in system functions. If the current function is
|
| - // either in the builtins object of some context or is in the debug
|
| - // context just return with the debug break stack guard active.
|
| - JavaScriptFrameIterator it;
|
| - JavaScriptFrame* frame = it.frame();
|
| - Object* fun = frame->function();
|
| - if (fun->IsJSFunction()) {
|
| - GlobalObject* global = JSFunction::cast(fun)->context()->global();
|
| - if (global->IsJSBuiltinsObject() || Debug::IsDebugGlobal(global)) {
|
| - return Heap::undefined_value();
|
| - }
|
| - }
|
| -
|
| - // Check for debug command break only.
|
| + // Collect the break state before clearing the flags.
|
| bool debug_command_only =
|
| StackGuard::IsDebugCommand() && !StackGuard::IsDebugBreak();
|
| + bool is_debug_break = StackGuard::IsDebugBreak();
|
|
|
| // Clear the debug request flags.
|
| StackGuard::Continue(DEBUGBREAK);
|
| StackGuard::Continue(DEBUGCOMMAND);
|
|
|
| - // If debug command only and already in debugger ignore it.
|
| - if (debug_command_only && Debug::InDebugger()) {
|
| - return Heap::undefined_value();
|
| - }
|
| -
|
| HandleScope scope;
|
| // Enter the debugger. Just continue if we fail to enter the debugger.
|
| EnterDebugger debugger;
|
| @@ -621,7 +604,8 @@
|
| return Heap::undefined_value();
|
| }
|
|
|
| - // Notify the debug event listeners.
|
| + // Notify the debug event listeners. Indicate auto continue if the break was
|
| + // a debug command break.
|
| Debugger::OnDebugBreak(Factory::undefined_value(), debug_command_only);
|
|
|
| // Return to continue execution.
|
|
|