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

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

Issue 9581013: Splitting debugger breakpoints into two parts (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 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
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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/dart_api_impl.h" 7 #include "vm/dart_api_impl.h"
8 #include "vm/dart_api_state.h" 8 #include "vm/dart_api_state.h"
9 #include "vm/debugger.h" 9 #include "vm/debugger.h"
10 #include "vm/isolate.h" 10 #include "vm/isolate.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 137
138 const char* msg = CheckIsolateState(isolate); 138 const char* msg = CheckIsolateState(isolate);
139 if (msg != NULL) { 139 if (msg != NULL) {
140 return Api::NewError(msg); 140 return Api::NewError(msg);
141 } 141 }
142 142
143 Dart_Handle result = Api::True(); 143 Dart_Handle result = Api::True();
144 *breakpoint = NULL; 144 *breakpoint = NULL;
145 Debugger* debugger = isolate->debugger(); 145 Debugger* debugger = isolate->debugger();
146 ASSERT(debugger != NULL); 146 ASSERT(debugger != NULL);
147 Error& error = Error::Handle(); 147 SourceBreakpoint* bpt =
148 Breakpoint* bpt = debugger->SetBreakpointAtLine(script_url, line, &error); 148 debugger->SetBreakpointAtLine(script_url, line);
149 if (bpt == NULL) { 149 if (bpt == NULL) {
150 if (!error.IsNull()) { 150 result = Api::NewError("%s: could not set breakpoint at line %d of '%s'",
151 // If SetBreakpointAtLine provided an error message, use it.
152 result = Api::NewLocalHandle(error);
153 } else {
154 result = Api::NewError("%s: could not set breakpoint at line %d of '%s'",
155 CURRENT_FUNC, line, script_url.ToCString()); 151 CURRENT_FUNC, line, script_url.ToCString());
156 }
157 } else { 152 } else {
158 *breakpoint = reinterpret_cast<Dart_Breakpoint>(bpt); 153 *breakpoint = reinterpret_cast<Dart_Breakpoint>(bpt);
159 } 154 }
160 return result; 155 return result;
161 } 156 }
162 157
163 158
164 DART_EXPORT Dart_Handle Dart_SetBreakpointAtEntry( 159 DART_EXPORT Dart_Handle Dart_SetBreakpointAtEntry(
165 Dart_Handle library_in, 160 Dart_Handle library_in,
166 Dart_Handle class_name_in, 161 Dart_Handle class_name_in,
(...skipping 24 matching lines...) Expand all
191 return Api::NewError("%s: could not find function '%s%s%s'", 186 return Api::NewError("%s: could not find function '%s%s%s'",
192 CURRENT_FUNC, 187 CURRENT_FUNC,
193 toplevel ? "" : class_name.ToCString(), 188 toplevel ? "" : class_name.ToCString(),
194 toplevel ? "" : ".", 189 toplevel ? "" : ".",
195 function_name.ToCString()); 190 function_name.ToCString());
196 } 191 }
197 192
198 Dart_Handle result = Api::True(); 193 Dart_Handle result = Api::True();
199 *breakpoint = NULL; 194 *breakpoint = NULL;
200 195
201 Error& error = Error::Handle(); 196 SourceBreakpoint* bpt = debugger->SetBreakpointAtEntry(bp_target);
202 Breakpoint* bpt = debugger->SetBreakpointAtEntry(bp_target, &error);
203 if (!error.IsNull()) {
204 return Api::NewLocalHandle(error);
205 }
206 if (bpt == NULL) { 197 if (bpt == NULL) {
207 const char* target_name = Debugger::QualifiedFunctionName(bp_target); 198 const char* target_name = Debugger::QualifiedFunctionName(bp_target);
208 result = Api::NewError("%s: no breakpoint location found in '%s'", 199 result = Api::NewError("%s: no breakpoint location found in '%s'",
209 CURRENT_FUNC, target_name); 200 CURRENT_FUNC, target_name);
210 } else { 201 } else {
211 *breakpoint = reinterpret_cast<Dart_Breakpoint>(bpt); 202 *breakpoint = reinterpret_cast<Dart_Breakpoint>(bpt);
212 } 203 }
213 return result; 204 return result;
214 } 205 }
215 206
216 207
217 DART_EXPORT Dart_Handle Dart_DeleteBreakpoint( 208 DART_EXPORT Dart_Handle Dart_DeleteBreakpoint(
218 Dart_Breakpoint breakpoint_in) { 209 Dart_Breakpoint breakpoint_in) {
219 Isolate* isolate = Isolate::Current(); 210 Isolate* isolate = Isolate::Current();
220 DARTSCOPE(isolate); 211 DARTSCOPE(isolate);
221 212
222 CHECK_AND_CAST(Breakpoint, breakpoint, breakpoint_in); 213 CHECK_AND_CAST(SourceBreakpoint, breakpoint, breakpoint_in);
223 isolate->debugger()->RemoveBreakpoint(breakpoint); 214 isolate->debugger()->RemoveBreakpoint(breakpoint);
224 return Api::True(); 215 return Api::True();
225 } 216 }
226 217
227 218
228 DART_EXPORT Dart_Handle Dart_SetStepOver() { 219 DART_EXPORT Dart_Handle Dart_SetStepOver() {
229 Isolate* isolate = Isolate::Current(); 220 Isolate* isolate = Isolate::Current();
230 DARTSCOPE(isolate); 221 DARTSCOPE(isolate);
231 isolate->debugger()->SetStepOver(); 222 isolate->debugger()->SetStepOver();
232 return Api::True(); 223 return Api::True();
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 for (int i = 0; i < num_libs; i++) { 357 for (int i = 0; i < num_libs; i++) {
367 ASSERT(!lib.IsNull()); 358 ASSERT(!lib.IsNull());
368 lib_url = lib.url(); 359 lib_url = lib.url();
369 library_list.SetAt(i, lib_url); 360 library_list.SetAt(i, lib_url);
370 lib = lib.next_registered(); 361 lib = lib.next_registered();
371 } 362 }
372 return Api::NewLocalHandle(library_list); 363 return Api::NewLocalHandle(library_list);
373 } 364 }
374 365
375 } // namespace dart 366 } // namespace dart
OLDNEW
« runtime/vm/debugger.h ('K') | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698