Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: src/debug/debug.cc

Issue 1316213005: Extract common debugger code for processing compile events (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug/debug.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/debug/debug.cc
diff --git a/src/debug/debug.cc b/src/debug/debug.cc
index 297156f563e0518c4f9a5e687324dc73c1378553..08a734f7817b94eb4c522954dc177a89b5ff3399 100644
--- a/src/debug/debug.cc
+++ b/src/debug/debug.cc
@@ -1813,29 +1813,6 @@ void Debug::OnException(Handle<Object> exception, Handle<Object> promise) {
}
-void Debug::OnCompileError(Handle<Script> script) {
- if (ignore_events()) return;
- SuppressDebug while_processing(this);
-
- if (in_debug_scope()) {
- ProcessCompileEventInDebugScope(v8::CompileError, script);
- return;
- }
-
- HandleScope scope(isolate_);
- DebugScope debug_scope(this);
- if (debug_scope.failed()) return;
-
- // Create the compile state object.
- Handle<Object> event_data;
- // Bail out and don't call debugger if exception.
- if (!MakeCompileEvent(script, v8::CompileError).ToHandle(&event_data)) return;
-
- // Process debug event.
- ProcessDebugEvent(v8::CompileError, Handle<JSObject>::cast(event_data), true);
-}
-
-
void Debug::OnDebugBreak(Handle<Object> break_points_hit,
bool auto_continue) {
// The caller provided for DebugScope.
@@ -1856,56 +1833,19 @@ void Debug::OnDebugBreak(Handle<Object> break_points_hit,
}
-void Debug::OnBeforeCompile(Handle<Script> script) {
- if (in_debug_scope() || ignore_events()) return;
- SuppressDebug while_processing(this);
-
- HandleScope scope(isolate_);
- DebugScope debug_scope(this);
- if (debug_scope.failed()) return;
+void Debug::OnCompileError(Handle<Script> script) {
+ ProcessCompileEvent(v8::CompileError, script);
+}
- // Create the event data object.
- Handle<Object> event_data;
- // Bail out and don't call debugger if exception.
- if (!MakeCompileEvent(script, v8::BeforeCompile).ToHandle(&event_data))
- return;
- // Process debug event.
- ProcessDebugEvent(v8::BeforeCompile,
- Handle<JSObject>::cast(event_data),
- true);
+void Debug::OnBeforeCompile(Handle<Script> script) {
+ ProcessCompileEvent(v8::BeforeCompile, script);
}
// Handle debugger actions when a new script is compiled.
void Debug::OnAfterCompile(Handle<Script> script) {
- if (ignore_events()) return;
- SuppressDebug while_processing(this);
-
- if (in_debug_scope()) {
- ProcessCompileEventInDebugScope(v8::AfterCompile, script);
- return;
- }
-
- HandleScope scope(isolate_);
- DebugScope debug_scope(this);
- if (debug_scope.failed()) return;
-
- // If debugging there might be script break points registered for this
- // script. Make sure that these break points are set.
- Handle<Object> argv[] = {Script::GetWrapper(script)};
- if (CallFunction("UpdateScriptBreakPoints", arraysize(argv), argv)
- .is_null()) {
- return;
- }
-
- // Create the compile state object.
- Handle<Object> event_data;
- // Bail out and don't call debugger if exception.
- if (!MakeCompileEvent(script, v8::AfterCompile).ToHandle(&event_data)) return;
-
- // Process debug event.
- ProcessDebugEvent(v8::AfterCompile, Handle<JSObject>::cast(event_data), true);
+ ProcessCompileEvent(v8::AfterCompile, script);
}
@@ -2009,23 +1949,44 @@ void Debug::CallEventCallback(v8::DebugEvent event,
}
-void Debug::ProcessCompileEventInDebugScope(v8::DebugEvent event,
- Handle<Script> script) {
- if (event_listener_.is_null()) return;
+void Debug::ProcessCompileEvent(v8::DebugEvent event, Handle<Script> script) {
+ if (ignore_events()) return;
+ SuppressDebug while_processing(this);
+ bool in_nested_debug_scope = in_debug_scope();
+ HandleScope scope(isolate_);
DebugScope debug_scope(this);
if (debug_scope.failed()) return;
+ if (event == v8::AfterCompile) {
+ // If debugging there might be script break points registered for this
+ // script. Make sure that these break points are set.
+ Handle<Object> argv[] = {Script::GetWrapper(script)};
+ if (CallFunction("UpdateScriptBreakPoints", arraysize(argv), argv)
+ .is_null()) {
+ return;
+ }
+ }
+
+ // Create the compile state object.
Handle<Object> event_data;
// Bail out and don't call debugger if exception.
if (!MakeCompileEvent(script, event).ToHandle(&event_data)) return;
- // Create the execution state.
- Handle<Object> exec_state;
- // Bail out and don't call debugger if exception.
- if (!MakeExecutionState().ToHandle(&exec_state)) return;
+ // Don't call NotifyMessageHandler if already in debug scope to avoid running
+ // nested command loop.
+ if (in_nested_debug_scope) {
yurys 2015/08/31 22:35:45 It is unfortunate that we cannot simply call Proce
+ if (event_listener_.is_null()) return;
+ // Create the execution state.
+ Handle<Object> exec_state;
+ // Bail out and don't call debugger if exception.
+ if (!MakeExecutionState().ToHandle(&exec_state)) return;
- CallEventCallback(event, exec_state, event_data, NULL);
+ CallEventCallback(event, exec_state, event_data, NULL);
+ } else {
+ // Process debug event.
+ ProcessDebugEvent(event, Handle<JSObject>::cast(event_data), true);
+ }
}
« no previous file with comments | « src/debug/debug.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698