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

Unified Diff: vm/debugger_api_impl.cc

Issue 11026011: Add isolate event handler setup in order to be able to propagate isolate (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 3 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
« vm/debugger.h ('K') | « vm/debugger.cc ('k') | vm/isolate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/debugger_api_impl.cc
===================================================================
--- vm/debugger_api_impl.cc (revision 13083)
+++ vm/debugger_api_impl.cc (working copy)
@@ -102,18 +102,17 @@
DART_EXPORT void Dart_SetBreakpointHandler(
Dart_BreakpointHandler bp_handler) {
- Isolate* isolate = Isolate::Current();
- DARTSCOPE(isolate);
BreakpointHandler* handler =
reinterpret_cast<BreakpointHandler*>(bp_handler);
-
- isolate->debugger()->SetBreakpointHandler(handler);
+ Debugger::SetBreakpointHandler(handler);
}
static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL;
static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL;
+static Dart_IsolateEventHandler* isolate_event_handler = NULL;
+
static void DebuggerEventHandler(Debugger::DebuggerEvent* event) {
Isolate* isolate = Isolate::Current();
ASSERT(isolate != NULL);
@@ -133,6 +132,12 @@
Dart_StackTrace trace =
reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace());
(*exc_thrown_handler)(exception, trace);
+ } else if (event->type == Debugger::kIsolateCreated) {
+ (*isolate_event_handler)(Api::CastIsolate(event->isolate), kCreated);
+ } else if (event->type == Debugger::kIsolateInterrupted) {
+ (*isolate_event_handler)(Api::CastIsolate(event->isolate), kInterrupted);
+ } else if (event->type == Debugger::kIsolateShutdown) {
+ (*isolate_event_handler)(Api::CastIsolate(event->isolate), kShutdown);
} else {
UNIMPLEMENTED();
}
@@ -142,21 +147,23 @@
DART_EXPORT void Dart_SetBreakpointResolvedHandler(
Dart_BreakpointResolvedHandler handler) {
bp_resolved_handler = handler;
- Isolate* isolate = Isolate::Current();
- DARTSCOPE(isolate);
- isolate->debugger()->SetEventHandler(DebuggerEventHandler);
+ Debugger::SetEventHandler(DebuggerEventHandler);
}
DART_EXPORT void Dart_SetExceptionThrownHandler(
Dart_ExceptionThrownHandler handler) {
exc_thrown_handler = handler;
- Isolate* isolate = Isolate::Current();
- DARTSCOPE(isolate);
- isolate->debugger()->SetEventHandler(DebuggerEventHandler);
+ Debugger::SetEventHandler(DebuggerEventHandler);
}
+DART_EXPORT void Dart_SetIsolateEventHandler(Dart_IsolateEventHandler handler) {
+ isolate_event_handler = handler;
+ Debugger::SetEventHandler(DebuggerEventHandler);
+}
+
+
DART_EXPORT Dart_Handle Dart_SetExceptionPauseInfo(
Dart_ExceptionPauseInfo pause_info) {
Isolate* isolate = Isolate::Current();
« vm/debugger.h ('K') | « vm/debugger.cc ('k') | vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698