Index: src/debug.cc |
diff --git a/src/debug.cc b/src/debug.cc |
index 2ef40c4edbdc581c2e8877db64859e39b89029af..3866a1e97886c99cd3e0e9b5da7bb1b212c852d0 100644 |
--- a/src/debug.cc |
+++ b/src/debug.cc |
@@ -3089,8 +3089,19 @@ void Debug::HandleDebugBreak() { |
bool debug_command_only = isolate_->stack_guard()->CheckDebugCommand() && |
!isolate_->stack_guard()->CheckDebugBreak(); |
+ bool is_debugger_statement = !isolate_->stack_guard()->CheckDebugCommand() && |
+ !isolate_->stack_guard()->CheckDebugBreak(); |
+ |
isolate_->stack_guard()->ClearDebugBreak(); |
+ if (is_debugger_statement) { |
+ // If we have been called via 'debugger' Javascript statement, |
+ // we might not be prepared for breakpoints. |
+ // TODO(dslomov,yangguo): CheckDebugBreak may race with RequestDebugBreak. |
+ // Revisit this to clean-up. |
+ HandleScope handle_scope(isolate_); |
+ PrepareForBreakPoints(); |
+ } |
ProcessDebugMessages(debug_command_only); |
} |