| Index: runtime/vm/debugger_api_impl.cc
|
| diff --git a/runtime/vm/debugger_api_impl.cc b/runtime/vm/debugger_api_impl.cc
|
| index 4bfcae1c819d93d24c0f7f8fa19d5201c6319593..957bd6f48fcdeee228417e78ca1b0bfce207ec3c 100644
|
| --- a/runtime/vm/debugger_api_impl.cc
|
| +++ b/runtime/vm/debugger_api_impl.cc
|
| @@ -110,13 +110,13 @@ static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL;
|
| static Dart_IsolateEventHandler* isolate_event_handler = NULL;
|
|
|
|
|
| -static void DebuggerEventHandler(DebuggerEvent* event) {
|
| +static void DebuggerEventHandler(ServiceEvent* event) {
|
| Thread* thread = Thread::Current();
|
| Isolate* isolate = thread->isolate();
|
| ASSERT(isolate != NULL);
|
| Dart_EnterScope();
|
| Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId();
|
| - if (event->type() == DebuggerEvent::kBreakpointReached) {
|
| + if (event->kind() == ServiceEvent::kPauseBreakpoint) {
|
| if (paused_event_handler != NULL) {
|
| Dart_CodeLocation location;
|
| ActivationFrame* top_frame = event->top_frame();
|
| @@ -131,10 +131,13 @@ static void DebuggerEventHandler(DebuggerEvent* event) {
|
| }
|
| (*paused_event_handler)(isolate_id, bp_id, location);
|
| }
|
| - } else if (event->type() == DebuggerEvent::kBreakpointResolved) {
|
| - if (bp_resolved_handler != NULL) {
|
| - Breakpoint* bpt = event->breakpoint();
|
| - ASSERT(bpt != NULL);
|
| + } else if (event->kind() == ServiceEvent::kBreakpointAdded ||
|
| + event->kind() == ServiceEvent::kBreakpointResolved) {
|
| + Breakpoint* bpt = event->breakpoint();
|
| + ASSERT(bpt != NULL);
|
| + if (bp_resolved_handler != NULL &&
|
| + bpt->bpt_location()->IsResolved() &&
|
| + !bpt->IsSingleShot()) {
|
| Dart_CodeLocation location;
|
| Zone* zone = thread->zone();
|
| Library& library = Library::Handle(zone);
|
| @@ -146,7 +149,9 @@ static void DebuggerEventHandler(DebuggerEvent* event) {
|
| location.token_pos = token_pos.Pos();
|
| (*bp_resolved_handler)(isolate_id, bpt->id(), location);
|
| }
|
| - } else if (event->type() == DebuggerEvent::kExceptionThrown) {
|
| + } else if (event->kind() == ServiceEvent::kBreakpointRemoved) {
|
| + // Ignore.
|
| + } else if (event->kind() == ServiceEvent::kPauseException) {
|
| if (exc_thrown_handler != NULL) {
|
| Dart_Handle exception =
|
| Api::NewHandle(thread, event->exception()->raw());
|
| @@ -154,15 +159,15 @@ static void DebuggerEventHandler(DebuggerEvent* event) {
|
| reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace());
|
| (*exc_thrown_handler)(isolate_id, exception, trace);
|
| }
|
| - } else if (event->type() == DebuggerEvent::kIsolateCreated) {
|
| + } else if (event->kind() == ServiceEvent::kIsolateStart) {
|
| if (isolate_event_handler != NULL) {
|
| (*isolate_event_handler)(event->isolate_id(), kCreated);
|
| }
|
| - } else if (event->type() == DebuggerEvent::kIsolateInterrupted) {
|
| + } else if (event->kind() == ServiceEvent::kPauseInterrupted) {
|
| if (isolate_event_handler != NULL) {
|
| (*isolate_event_handler)(event->isolate_id(), kInterrupted);
|
| }
|
| - } else if (event->type() == DebuggerEvent::kIsolateShutdown) {
|
| + } else if (event->kind() == ServiceEvent::kIsolateExit) {
|
| if (isolate_event_handler != NULL) {
|
| (*isolate_event_handler)(event->isolate_id(), kShutdown);
|
| }
|
|
|