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

Side by Side Diff: runtime/vm/debugger_api_impl.cc

Issue 271153002: Add pause/resume for isolates in vmservice/observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: gen js Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "include/dart_debugger_api.h" 5 #include "include/dart_debugger_api.h"
6 6
7 #include "vm/class_finalizer.h" 7 #include "vm/class_finalizer.h"
8 #include "vm/compiler.h" 8 #include "vm/compiler.h"
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/dart_api_state.h" 10 #include "vm/dart_api_state.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 } 102 }
103 103
104 static Dart_PausedEventHandler* paused_event_handler = NULL; 104 static Dart_PausedEventHandler* paused_event_handler = NULL;
105 static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL; 105 static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL;
106 static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL; 106 static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL;
107 static Dart_IsolateEventHandler* isolate_event_handler = NULL; 107 static Dart_IsolateEventHandler* isolate_event_handler = NULL;
108 108
109 static Dart_BreakpointHandler* legacy_bp_handler = NULL; 109 static Dart_BreakpointHandler* legacy_bp_handler = NULL;
110 110
111 111
112 static void DebuggerEventHandler(Debugger::DebuggerEvent* event) { 112 static void DebuggerEventHandler(DebuggerEvent* event) {
113 Isolate* isolate = Isolate::Current(); 113 Isolate* isolate = Isolate::Current();
114 ASSERT(isolate != NULL); 114 ASSERT(isolate != NULL);
115 ASSERT(isolate->debugger() != NULL); 115 ASSERT(isolate->debugger() != NULL);
116 Dart_EnterScope(); 116 Dart_EnterScope();
117 Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId(); 117 Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId();
118 if (event->type == Debugger::kBreakpointReached) { 118 if (event->type() == DebuggerEvent::kBreakpointReached) {
119 if (legacy_bp_handler != NULL) { 119 if (legacy_bp_handler != NULL) {
120 Dart_StackTrace stack_trace = 120 Dart_StackTrace stack_trace =
121 reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace()); 121 reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace());
122 (*legacy_bp_handler)(isolate_id, NULL, stack_trace); 122 (*legacy_bp_handler)(isolate_id, NULL, stack_trace);
123 } else if (paused_event_handler != NULL) { 123 } else if (paused_event_handler != NULL) {
124 Dart_CodeLocation location; 124 Dart_CodeLocation location;
125 ActivationFrame* top_frame = event->top_frame; 125 ActivationFrame* top_frame = event->top_frame();
126 location.script_url = Api::NewHandle(isolate, top_frame->SourceUrl()); 126 location.script_url = Api::NewHandle(isolate, top_frame->SourceUrl());
127 const Library& lib = Library::Handle(top_frame->Library()); 127 const Library& lib = Library::Handle(top_frame->Library());
128 location.library_id = lib.index(); 128 location.library_id = lib.index();
129 location.token_pos = top_frame->TokenPos(); 129 location.token_pos = top_frame->TokenPos();
130 intptr_t bp_id = 0; 130 intptr_t bp_id = 0;
131 if (event->breakpoint != NULL) { 131 if (event->breakpoint() != NULL) {
132 ASSERT(event->breakpoint->id() != ILLEGAL_BREAKPOINT_ID); 132 ASSERT(event->breakpoint()->id() != ILLEGAL_BREAKPOINT_ID);
133 bp_id = event->breakpoint->id(); 133 bp_id = event->breakpoint()->id();
134 } 134 }
135 (*paused_event_handler)(isolate_id, bp_id, location); 135 (*paused_event_handler)(isolate_id, bp_id, location);
136 } 136 }
137 } else if (event->type == Debugger::kBreakpointResolved) { 137 } else if (event->type() == DebuggerEvent::kBreakpointResolved) {
138 if (bp_resolved_handler != NULL) { 138 if (bp_resolved_handler != NULL) {
139 SourceBreakpoint* bpt = event->breakpoint; 139 SourceBreakpoint* bpt = event->breakpoint();
140 ASSERT(bpt != NULL); 140 ASSERT(bpt != NULL);
141 Dart_CodeLocation location; 141 Dart_CodeLocation location;
142 Library& library = Library::Handle(isolate); 142 Library& library = Library::Handle(isolate);
143 Script& script = Script::Handle(isolate); 143 Script& script = Script::Handle(isolate);
144 intptr_t token_pos; 144 intptr_t token_pos;
145 bpt->GetCodeLocation(&library, &script, &token_pos); 145 bpt->GetCodeLocation(&library, &script, &token_pos);
146 location.script_url = Api::NewHandle(isolate, script.url()); 146 location.script_url = Api::NewHandle(isolate, script.url());
147 location.library_id = library.index(); 147 location.library_id = library.index();
148 location.token_pos = token_pos; 148 location.token_pos = token_pos;
149 (*bp_resolved_handler)(isolate_id, bpt->id(), location); 149 (*bp_resolved_handler)(isolate_id, bpt->id(), location);
150 } 150 }
151 } else if (event->type == Debugger::kExceptionThrown) { 151 } else if (event->type() == DebuggerEvent::kExceptionThrown) {
152 if (exc_thrown_handler != NULL) { 152 if (exc_thrown_handler != NULL) {
153 Dart_Handle exception = Api::NewHandle(isolate, event->exception->raw()); 153 Dart_Handle exception =
154 Api::NewHandle(isolate, event->exception()->raw());
154 Dart_StackTrace trace = 155 Dart_StackTrace trace =
155 reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace()); 156 reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace());
156 (*exc_thrown_handler)(isolate_id, exception, trace); 157 (*exc_thrown_handler)(isolate_id, exception, trace);
157 } 158 }
158 } else if (event->type == Debugger::kIsolateCreated) { 159 } else if (event->type() == DebuggerEvent::kIsolateCreated) {
159 if (isolate_event_handler != NULL) { 160 if (isolate_event_handler != NULL) {
160 (*isolate_event_handler)(event->isolate_id, kCreated); 161 (*isolate_event_handler)(event->isolate_id(), kCreated);
161 } 162 }
162 } else if (event->type == Debugger::kIsolateInterrupted) { 163 } else if (event->type() == DebuggerEvent::kIsolateInterrupted) {
163 if (isolate_event_handler != NULL) { 164 if (isolate_event_handler != NULL) {
164 (*isolate_event_handler)(event->isolate_id, kInterrupted); 165 (*isolate_event_handler)(event->isolate_id(), kInterrupted);
165 } 166 }
166 } else if (event->type == Debugger::kIsolateShutdown) { 167 } else if (event->type() == DebuggerEvent::kIsolateShutdown) {
167 if (isolate_event_handler != NULL) { 168 if (isolate_event_handler != NULL) {
168 (*isolate_event_handler)(event->isolate_id, kShutdown); 169 (*isolate_event_handler)(event->isolate_id(), kShutdown);
169 } 170 }
170 } else { 171 } else {
171 UNIMPLEMENTED(); 172 UNIMPLEMENTED();
172 } 173 }
173 Dart_ExitScope(); 174 Dart_ExitScope();
174 } 175 }
175 176
176 177
177 DART_EXPORT void Dart_SetBreakpointHandler(Dart_BreakpointHandler bp_handler) { 178 DART_EXPORT void Dart_SetBreakpointHandler(Dart_BreakpointHandler bp_handler) {
178 legacy_bp_handler = bp_handler; 179 legacy_bp_handler = bp_handler;
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 return Api::CastIsolate(isolate); 980 return Api::CastIsolate(isolate);
980 } 981 }
981 982
982 983
983 DART_EXPORT Dart_IsolateId Dart_GetIsolateId(Dart_Isolate dart_isolate) { 984 DART_EXPORT Dart_IsolateId Dart_GetIsolateId(Dart_Isolate dart_isolate) {
984 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate); 985 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate);
985 return isolate->debugger()->GetIsolateId(); 986 return isolate->debugger()->GetIsolateId();
986 } 987 }
987 988
988 } // namespace dart 989 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698