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

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

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 years, 5 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
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_api_impl_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_tools_api.h" 5 #include "include/dart_tools_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 18 matching lines...) Expand all
29 CURRENT_FUNC, #param); \ 29 CURRENT_FUNC, #param); \
30 } else if (tmp.IsApiError()) { \ 30 } else if (tmp.IsApiError()) { \
31 return param; \ 31 return param; \
32 } else if (!tmp.Is##type()) { \ 32 } else if (!tmp.Is##type()) { \
33 return Api::NewError("%s expects argument '%s' to be of type %s.", \ 33 return Api::NewError("%s expects argument '%s' to be of type %s.", \
34 CURRENT_FUNC, #param, #type); \ 34 CURRENT_FUNC, #param, #type); \
35 } \ 35 } \
36 var ^= tmp.raw(); \ 36 var ^= tmp.raw(); \
37 } while (0) 37 } while (0)
38 38
39
40 #define CHECK_AND_CAST(type, var, param) \ 39 #define CHECK_AND_CAST(type, var, param) \
41 type* var = NULL; \ 40 type* var = NULL; \
42 do { \ 41 do { \
43 if (param == NULL) { \ 42 if (param == NULL) { \
44 return Api::NewError("%s expects argument '%s' to be non-null.", \ 43 return Api::NewError("%s expects argument '%s' to be non-null.", \
45 CURRENT_FUNC, #param); \ 44 CURRENT_FUNC, #param); \
46 } \ 45 } \
47 var = reinterpret_cast<type*>(param); \ 46 var = reinterpret_cast<type*>(param); \
48 } while (0) 47 } while (0)
49 48
50
51 #define CHECK_NOT_NULL(param) \ 49 #define CHECK_NOT_NULL(param) \
52 if (param == NULL) { \ 50 if (param == NULL) { \
53 return Api::NewError("%s expects argument '%s' to be non-null.", \ 51 return Api::NewError("%s expects argument '%s' to be non-null.", \
54 CURRENT_FUNC, #param); \ 52 CURRENT_FUNC, #param); \
55 } 53 }
56 54
57 #define CHECK_DEBUGGER(isolate) \ 55 #define CHECK_DEBUGGER(isolate) \
58 if (isolate->debugger() == NULL) { \ 56 if (isolate->debugger() == NULL) { \
59 return Api::NewError("%s requires debugger support.", CURRENT_FUNC); \ 57 return Api::NewError("%s requires debugger support.", CURRENT_FUNC); \
60 } 58 }
61 59
62
63 DART_EXPORT intptr_t Dart_CacheObject(Dart_Handle object_in) { 60 DART_EXPORT intptr_t Dart_CacheObject(Dart_Handle object_in) {
64 DARTSCOPE(Thread::Current()); 61 DARTSCOPE(Thread::Current());
65 Isolate* I = T->isolate(); 62 Isolate* I = T->isolate();
66 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object_in)); 63 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object_in));
67 if (obj.IsApiError() || (I->debugger() == NULL)) { 64 if (obj.IsApiError() || (I->debugger() == NULL)) {
68 return -1; 65 return -1;
69 } 66 }
70 return I->debugger()->CacheObject(obj); 67 return I->debugger()->CacheObject(obj);
71 } 68 }
72 69
73
74 DART_EXPORT Dart_Handle Dart_GetCachedObject(intptr_t obj_id) { 70 DART_EXPORT Dart_Handle Dart_GetCachedObject(intptr_t obj_id) {
75 DARTSCOPE(Thread::Current()); 71 DARTSCOPE(Thread::Current());
76 Isolate* I = T->isolate(); 72 Isolate* I = T->isolate();
77 CHECK_DEBUGGER(I); 73 CHECK_DEBUGGER(I);
78 if (!I->debugger()->IsValidObjectId(obj_id)) { 74 if (!I->debugger()->IsValidObjectId(obj_id)) {
79 return Api::NewError("%s: object id %" Pd " is invalid", CURRENT_FUNC, 75 return Api::NewError("%s: object id %" Pd " is invalid", CURRENT_FUNC,
80 obj_id); 76 obj_id);
81 } 77 }
82 return Api::NewHandle(T, I->debugger()->GetCachedObject(obj_id)); 78 return Api::NewHandle(T, I->debugger()->GetCachedObject(obj_id));
83 } 79 }
84 80
85
86 DART_EXPORT Dart_Handle Dart_StackTraceLength(Dart_StackTrace trace, 81 DART_EXPORT Dart_Handle Dart_StackTraceLength(Dart_StackTrace trace,
87 intptr_t* length) { 82 intptr_t* length) {
88 DARTSCOPE(Thread::Current()); 83 DARTSCOPE(Thread::Current());
89 CHECK_NOT_NULL(length); 84 CHECK_NOT_NULL(length);
90 CHECK_AND_CAST(DebuggerStackTrace, stack_trace, trace); 85 CHECK_AND_CAST(DebuggerStackTrace, stack_trace, trace);
91 *length = stack_trace->Length(); 86 *length = stack_trace->Length();
92 return Api::Success(); 87 return Api::Success();
93 } 88 }
94 89
95
96 DART_EXPORT Dart_Handle Dart_GetActivationFrame(Dart_StackTrace trace, 90 DART_EXPORT Dart_Handle Dart_GetActivationFrame(Dart_StackTrace trace,
97 int frame_index, 91 int frame_index,
98 Dart_ActivationFrame* frame) { 92 Dart_ActivationFrame* frame) {
99 DARTSCOPE(Thread::Current()); 93 DARTSCOPE(Thread::Current());
100 CHECK_NOT_NULL(frame); 94 CHECK_NOT_NULL(frame);
101 CHECK_AND_CAST(DebuggerStackTrace, stack_trace, trace); 95 CHECK_AND_CAST(DebuggerStackTrace, stack_trace, trace);
102 if ((frame_index < 0) || (frame_index >= stack_trace->Length())) { 96 if ((frame_index < 0) || (frame_index >= stack_trace->Length())) {
103 return Api::NewError("argument 'frame_index' is out of range for %s", 97 return Api::NewError("argument 'frame_index' is out of range for %s",
104 CURRENT_FUNC); 98 CURRENT_FUNC);
105 } 99 }
106 *frame = 100 *frame =
107 reinterpret_cast<Dart_ActivationFrame>(stack_trace->FrameAt(frame_index)); 101 reinterpret_cast<Dart_ActivationFrame>(stack_trace->FrameAt(frame_index));
108 return Api::Success(); 102 return Api::Success();
109 } 103 }
110 104
111 static Dart_PausedEventHandler* paused_event_handler = NULL; 105 static Dart_PausedEventHandler* paused_event_handler = NULL;
112 static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL; 106 static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL;
113 static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL; 107 static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL;
114 static Dart_IsolateEventHandler* isolate_event_handler = NULL; 108 static Dart_IsolateEventHandler* isolate_event_handler = NULL;
115 109
116
117 static void DebuggerEventHandler(ServiceEvent* event) { 110 static void DebuggerEventHandler(ServiceEvent* event) {
118 Thread* thread = Thread::Current(); 111 Thread* thread = Thread::Current();
119 Isolate* isolate = thread->isolate(); 112 Isolate* isolate = thread->isolate();
120 ASSERT(isolate != NULL); 113 ASSERT(isolate != NULL);
121 Dart_EnterScope(); 114 Dart_EnterScope();
122 Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId(); 115 Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId();
123 if (event->kind() == ServiceEvent::kPauseBreakpoint) { 116 if (event->kind() == ServiceEvent::kPauseBreakpoint) {
124 if (paused_event_handler != NULL) { 117 if (paused_event_handler != NULL) {
125 Dart_CodeLocation location; 118 Dart_CodeLocation location;
126 ActivationFrame* top_frame = event->top_frame(); 119 ActivationFrame* top_frame = event->top_frame();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 (*isolate_event_handler)(event->isolate_id(), kShutdown); 167 (*isolate_event_handler)(event->isolate_id(), kShutdown);
175 } 168 }
176 } else if (event->kind() == ServiceEvent::kPausePostRequest) { 169 } else if (event->kind() == ServiceEvent::kPausePostRequest) {
177 // Ignore. 170 // Ignore.
178 } else { 171 } else {
179 UNIMPLEMENTED(); 172 UNIMPLEMENTED();
180 } 173 }
181 Dart_ExitScope(); 174 Dart_ExitScope();
182 } 175 }
183 176
184
185 DART_EXPORT void Dart_SetPausedEventHandler(Dart_PausedEventHandler handler) { 177 DART_EXPORT void Dart_SetPausedEventHandler(Dart_PausedEventHandler handler) {
186 paused_event_handler = handler; 178 paused_event_handler = handler;
187 Debugger::SetEventHandler(DebuggerEventHandler); 179 Debugger::SetEventHandler(DebuggerEventHandler);
188 } 180 }
189 181
190
191 DART_EXPORT void Dart_SetBreakpointResolvedHandler( 182 DART_EXPORT void Dart_SetBreakpointResolvedHandler(
192 Dart_BreakpointResolvedHandler handler) { 183 Dart_BreakpointResolvedHandler handler) {
193 bp_resolved_handler = handler; 184 bp_resolved_handler = handler;
194 Debugger::SetEventHandler(DebuggerEventHandler); 185 Debugger::SetEventHandler(DebuggerEventHandler);
195 } 186 }
196 187
197
198 DART_EXPORT void Dart_SetExceptionThrownHandler( 188 DART_EXPORT void Dart_SetExceptionThrownHandler(
199 Dart_ExceptionThrownHandler handler) { 189 Dart_ExceptionThrownHandler handler) {
200 exc_thrown_handler = handler; 190 exc_thrown_handler = handler;
201 Debugger::SetEventHandler(DebuggerEventHandler); 191 Debugger::SetEventHandler(DebuggerEventHandler);
202 } 192 }
203 193
204
205 DART_EXPORT void Dart_SetIsolateEventHandler(Dart_IsolateEventHandler handler) { 194 DART_EXPORT void Dart_SetIsolateEventHandler(Dart_IsolateEventHandler handler) {
206 isolate_event_handler = handler; 195 isolate_event_handler = handler;
207 Debugger::SetEventHandler(DebuggerEventHandler); 196 Debugger::SetEventHandler(DebuggerEventHandler);
208 } 197 }
209 198
210
211 DART_EXPORT Dart_Handle 199 DART_EXPORT Dart_Handle
212 Dart_SetExceptionPauseInfo(Dart_ExceptionPauseInfo pause_info) { 200 Dart_SetExceptionPauseInfo(Dart_ExceptionPauseInfo pause_info) {
213 DARTSCOPE(Thread::Current()); 201 DARTSCOPE(Thread::Current());
214 Isolate* I = T->isolate(); 202 Isolate* I = T->isolate();
215 CHECK_DEBUGGER(I); 203 CHECK_DEBUGGER(I);
216 I->debugger()->SetExceptionPauseInfo(pause_info); 204 I->debugger()->SetExceptionPauseInfo(pause_info);
217 return Api::Success(); 205 return Api::Success();
218 } 206 }
219 207
220
221 DART_EXPORT Dart_ExceptionPauseInfo Dart_GetExceptionPauseInfo() { 208 DART_EXPORT Dart_ExceptionPauseInfo Dart_GetExceptionPauseInfo() {
222 DARTSCOPE(Thread::Current()); 209 DARTSCOPE(Thread::Current());
223 Isolate* I = T->isolate(); 210 Isolate* I = T->isolate();
224 if (I->debugger() == NULL) { 211 if (I->debugger() == NULL) {
225 return kNoPauseOnExceptions; 212 return kNoPauseOnExceptions;
226 } 213 }
227 return I->debugger()->GetExceptionPauseInfo(); 214 return I->debugger()->GetExceptionPauseInfo();
228 } 215 }
229 216
230
231 DART_EXPORT Dart_Handle Dart_GetStackTrace(Dart_StackTrace* trace) { 217 DART_EXPORT Dart_Handle Dart_GetStackTrace(Dart_StackTrace* trace) {
232 DARTSCOPE(Thread::Current()); 218 DARTSCOPE(Thread::Current());
233 Isolate* I = T->isolate(); 219 Isolate* I = T->isolate();
234 CHECK_DEBUGGER(I); 220 CHECK_DEBUGGER(I);
235 CHECK_NOT_NULL(trace); 221 CHECK_NOT_NULL(trace);
236 *trace = 222 *trace =
237 reinterpret_cast<Dart_StackTrace>(I->debugger()->CurrentStackTrace()); 223 reinterpret_cast<Dart_StackTrace>(I->debugger()->CurrentStackTrace());
238 return Api::Success(); 224 return Api::Success();
239 } 225 }
240 226
241
242 DART_EXPORT Dart_Handle Dart_GetStackTraceFromError(Dart_Handle handle, 227 DART_EXPORT Dart_Handle Dart_GetStackTraceFromError(Dart_Handle handle,
243 Dart_StackTrace* trace) { 228 Dart_StackTrace* trace) {
244 DARTSCOPE(Thread::Current()); 229 DARTSCOPE(Thread::Current());
245 CHECK_DEBUGGER(T->isolate()); 230 CHECK_DEBUGGER(T->isolate());
246 CHECK_NOT_NULL(trace); 231 CHECK_NOT_NULL(trace);
247 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); 232 const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle));
248 if (obj.IsUnhandledException()) { 233 if (obj.IsUnhandledException()) {
249 const UnhandledException& error = UnhandledException::Cast(obj); 234 const UnhandledException& error = UnhandledException::Cast(obj);
250 StackTrace& dart_stacktrace = StackTrace::Handle(Z); 235 StackTrace& dart_stacktrace = StackTrace::Handle(Z);
251 dart_stacktrace ^= error.stacktrace(); 236 dart_stacktrace ^= error.stacktrace();
252 if (dart_stacktrace.IsNull()) { 237 if (dart_stacktrace.IsNull()) {
253 *trace = NULL; 238 *trace = NULL;
254 } else { 239 } else {
255 Isolate* I = T->isolate(); 240 Isolate* I = T->isolate();
256 *trace = reinterpret_cast<Dart_StackTrace>( 241 *trace = reinterpret_cast<Dart_StackTrace>(
257 I->debugger()->StackTraceFrom(dart_stacktrace)); 242 I->debugger()->StackTraceFrom(dart_stacktrace));
258 } 243 }
259 return Api::Success(); 244 return Api::Success();
260 } else { 245 } else {
261 return Api::NewError( 246 return Api::NewError(
262 "Can only get stacktraces from error handles or " 247 "Can only get stacktraces from error handles or "
263 "instances of Error."); 248 "instances of Error.");
264 } 249 }
265 } 250 }
266 251
267
268 DART_EXPORT Dart_Handle 252 DART_EXPORT Dart_Handle
269 Dart_ActivationFrameInfo(Dart_ActivationFrame activation_frame, 253 Dart_ActivationFrameInfo(Dart_ActivationFrame activation_frame,
270 Dart_Handle* function_name, 254 Dart_Handle* function_name,
271 Dart_Handle* script_url, 255 Dart_Handle* script_url,
272 intptr_t* line_number, 256 intptr_t* line_number,
273 intptr_t* column_number) { 257 intptr_t* column_number) {
274 DARTSCOPE(Thread::Current()); 258 DARTSCOPE(Thread::Current());
275 CHECK_AND_CAST(ActivationFrame, frame, activation_frame); 259 CHECK_AND_CAST(ActivationFrame, frame, activation_frame);
276 if (function_name != NULL) { 260 if (function_name != NULL) {
277 *function_name = Api::NewHandle(T, frame->QualifiedFunctionName()); 261 *function_name = Api::NewHandle(T, frame->QualifiedFunctionName());
278 } 262 }
279 if (script_url != NULL) { 263 if (script_url != NULL) {
280 *script_url = Api::NewHandle(T, frame->SourceUrl()); 264 *script_url = Api::NewHandle(T, frame->SourceUrl());
281 } 265 }
282 if (line_number != NULL) { 266 if (line_number != NULL) {
283 *line_number = frame->LineNumber(); 267 *line_number = frame->LineNumber();
284 } 268 }
285 if (column_number != NULL) { 269 if (column_number != NULL) {
286 *column_number = frame->ColumnNumber(); 270 *column_number = frame->ColumnNumber();
287 } 271 }
288 return Api::Success(); 272 return Api::Success();
289 } 273 }
290 274
291
292 DART_EXPORT Dart_Handle 275 DART_EXPORT Dart_Handle
293 Dart_ActivationFrameGetLocation(Dart_ActivationFrame activation_frame, 276 Dart_ActivationFrameGetLocation(Dart_ActivationFrame activation_frame,
294 Dart_Handle* function_name, 277 Dart_Handle* function_name,
295 Dart_Handle* function, 278 Dart_Handle* function,
296 Dart_CodeLocation* location) { 279 Dart_CodeLocation* location) {
297 // TODO(hausner): Implement a way to recognize when there 280 // TODO(hausner): Implement a way to recognize when there
298 // is no source code for the code in the frame. 281 // is no source code for the code in the frame.
299 DARTSCOPE(Thread::Current()); 282 DARTSCOPE(Thread::Current());
300 CHECK_AND_CAST(ActivationFrame, frame, activation_frame); 283 CHECK_AND_CAST(ActivationFrame, frame, activation_frame);
301 if (function_name != NULL) { 284 if (function_name != NULL) {
(...skipping 17 matching lines...) Expand all
319 uintptr_t* frame_pointer) { 302 uintptr_t* frame_pointer) {
320 DARTSCOPE(Thread::Current()); 303 DARTSCOPE(Thread::Current());
321 CHECK_AND_CAST(ActivationFrame, frame, activation_frame); 304 CHECK_AND_CAST(ActivationFrame, frame, activation_frame);
322 305
323 if (frame_pointer != NULL) { 306 if (frame_pointer != NULL) {
324 *frame_pointer = static_cast<uintptr_t>(frame->fp()); 307 *frame_pointer = static_cast<uintptr_t>(frame->fp());
325 } 308 }
326 return Api::Success(); 309 return Api::Success();
327 } 310 }
328 311
329
330 DART_EXPORT Dart_Handle Dart_GetFunctionOrigin(Dart_Handle function_in) { 312 DART_EXPORT Dart_Handle Dart_GetFunctionOrigin(Dart_Handle function_in) {
331 DARTSCOPE(Thread::Current()); 313 DARTSCOPE(Thread::Current());
332 UNWRAP_AND_CHECK_PARAM(Function, function, function_in); 314 UNWRAP_AND_CHECK_PARAM(Function, function, function_in);
333 315
334 const Class& cls = Class::Handle(Z, function.origin()); 316 const Class& cls = Class::Handle(Z, function.origin());
335 if (!cls.IsTopLevel()) { 317 if (!cls.IsTopLevel()) {
336 return Dart_NewInteger(cls.id()); 318 return Dart_NewInteger(cls.id());
337 } 319 }
338 return Api::Null(); 320 return Api::Null();
339 } 321 }
340 322
341
342 DART_EXPORT Dart_Handle 323 DART_EXPORT Dart_Handle
343 Dart_GetLocalVariables(Dart_ActivationFrame activation_frame) { 324 Dart_GetLocalVariables(Dart_ActivationFrame activation_frame) {
344 DARTSCOPE(Thread::Current()); 325 DARTSCOPE(Thread::Current());
345 CHECK_AND_CAST(ActivationFrame, frame, activation_frame); 326 CHECK_AND_CAST(ActivationFrame, frame, activation_frame);
346 return Api::NewHandle(T, frame->GetLocalVariables()); 327 return Api::NewHandle(T, frame->GetLocalVariables());
347 } 328 }
348 329
349
350 DART_EXPORT Dart_Handle Dart_SetBreakpoint(Dart_Handle script_url_in, 330 DART_EXPORT Dart_Handle Dart_SetBreakpoint(Dart_Handle script_url_in,
351 intptr_t line_number) { 331 intptr_t line_number) {
352 DARTSCOPE(Thread::Current()); 332 DARTSCOPE(Thread::Current());
353 Isolate* I = T->isolate(); 333 Isolate* I = T->isolate();
354 CHECK_DEBUGGER(I); 334 CHECK_DEBUGGER(I);
355 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); 335 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in);
356 336
357 Debugger* debugger = I->debugger(); 337 Debugger* debugger = I->debugger();
358 Breakpoint* bpt = debugger->SetBreakpointAtLine(script_url, line_number); 338 Breakpoint* bpt = debugger->SetBreakpointAtLine(script_url, line_number);
359 if (bpt == NULL) { 339 if (bpt == NULL) {
360 return Api::NewError("%s: could not set breakpoint at line %" Pd " in '%s'", 340 return Api::NewError("%s: could not set breakpoint at line %" Pd " in '%s'",
361 CURRENT_FUNC, line_number, script_url.ToCString()); 341 CURRENT_FUNC, line_number, script_url.ToCString());
362 } 342 }
363 return Dart_NewInteger(bpt->id()); 343 return Dart_NewInteger(bpt->id());
364 } 344 }
365 345
366
367 DART_EXPORT Dart_Handle Dart_GetBreakpointURL(intptr_t bp_id) { 346 DART_EXPORT Dart_Handle Dart_GetBreakpointURL(intptr_t bp_id) {
368 DARTSCOPE(Thread::Current()); 347 DARTSCOPE(Thread::Current());
369 Isolate* I = T->isolate(); 348 Isolate* I = T->isolate();
370 CHECK_DEBUGGER(I); 349 CHECK_DEBUGGER(I);
371 Debugger* debugger = I->debugger(); 350 Debugger* debugger = I->debugger();
372 351
373 Breakpoint* bpt = debugger->GetBreakpointById(bp_id); 352 Breakpoint* bpt = debugger->GetBreakpointById(bp_id);
374 if (bpt == NULL) { 353 if (bpt == NULL) {
375 return Api::NewError("%s: breakpoint with id %" Pd " does not exist", 354 return Api::NewError("%s: breakpoint with id %" Pd " does not exist",
376 CURRENT_FUNC, bp_id); 355 CURRENT_FUNC, bp_id);
377 } 356 }
378 return Api::NewHandle(T, bpt->bpt_location()->url()); 357 return Api::NewHandle(T, bpt->bpt_location()->url());
379 } 358 }
380 359
381
382 DART_EXPORT Dart_Handle Dart_GetBreakpointLine(intptr_t bp_id) { 360 DART_EXPORT Dart_Handle Dart_GetBreakpointLine(intptr_t bp_id) {
383 DARTSCOPE(Thread::Current()); 361 DARTSCOPE(Thread::Current());
384 Isolate* I = T->isolate(); 362 Isolate* I = T->isolate();
385 CHECK_DEBUGGER(I); 363 CHECK_DEBUGGER(I);
386 Debugger* debugger = I->debugger(); 364 Debugger* debugger = I->debugger();
387 365
388 Breakpoint* bpt = debugger->GetBreakpointById(bp_id); 366 Breakpoint* bpt = debugger->GetBreakpointById(bp_id);
389 if (bpt == NULL) { 367 if (bpt == NULL) {
390 return Api::NewError("%s: breakpoint with id %" Pd " does not exist", 368 return Api::NewError("%s: breakpoint with id %" Pd " does not exist",
391 CURRENT_FUNC, bp_id); 369 CURRENT_FUNC, bp_id);
392 } 370 }
393 if (bpt->bpt_location()->IsResolved()) { 371 if (bpt->bpt_location()->IsResolved()) {
394 return Dart_NewInteger(bpt->bpt_location()->LineNumber()); 372 return Dart_NewInteger(bpt->bpt_location()->LineNumber());
395 } else { 373 } else {
396 return Dart_NewInteger(bpt->bpt_location()->requested_line_number()); 374 return Dart_NewInteger(bpt->bpt_location()->requested_line_number());
397 } 375 }
398 } 376 }
399 377
400
401 DART_EXPORT Dart_Handle 378 DART_EXPORT Dart_Handle
402 Dart_SetBreakpointAtEntry(Dart_Handle library_in, 379 Dart_SetBreakpointAtEntry(Dart_Handle library_in,
403 Dart_Handle class_name_in, 380 Dart_Handle class_name_in,
404 Dart_Handle function_name_in) { 381 Dart_Handle function_name_in) {
405 DARTSCOPE(Thread::Current()); 382 DARTSCOPE(Thread::Current());
406 Isolate* I = T->isolate(); 383 Isolate* I = T->isolate();
407 CHECK_DEBUGGER(I); 384 CHECK_DEBUGGER(I);
408 UNWRAP_AND_CHECK_PARAM(Library, library, library_in); 385 UNWRAP_AND_CHECK_PARAM(Library, library, library_in);
409 UNWRAP_AND_CHECK_PARAM(String, class_name, class_name_in); 386 UNWRAP_AND_CHECK_PARAM(String, class_name, class_name_in);
410 UNWRAP_AND_CHECK_PARAM(String, function_name, function_name_in); 387 UNWRAP_AND_CHECK_PARAM(String, function_name, function_name_in);
(...skipping 17 matching lines...) Expand all
428 405
429 Breakpoint* bpt = debugger->SetBreakpointAtEntry(bp_target, false); 406 Breakpoint* bpt = debugger->SetBreakpointAtEntry(bp_target, false);
430 if (bpt == NULL) { 407 if (bpt == NULL) {
431 const char* target_name = Debugger::QualifiedFunctionName(bp_target); 408 const char* target_name = Debugger::QualifiedFunctionName(bp_target);
432 return Api::NewError("%s: no breakpoint location found in '%s'", 409 return Api::NewError("%s: no breakpoint location found in '%s'",
433 CURRENT_FUNC, target_name); 410 CURRENT_FUNC, target_name);
434 } 411 }
435 return Dart_NewInteger(bpt->id()); 412 return Dart_NewInteger(bpt->id());
436 } 413 }
437 414
438
439 DART_EXPORT Dart_Handle Dart_OneTimeBreakAtEntry(Dart_Handle library_in, 415 DART_EXPORT Dart_Handle Dart_OneTimeBreakAtEntry(Dart_Handle library_in,
440 Dart_Handle class_name_in, 416 Dart_Handle class_name_in,
441 Dart_Handle function_name_in) { 417 Dart_Handle function_name_in) {
442 DARTSCOPE(Thread::Current()); 418 DARTSCOPE(Thread::Current());
443 Isolate* I = T->isolate(); 419 Isolate* I = T->isolate();
444 CHECK_DEBUGGER(I); 420 CHECK_DEBUGGER(I);
445 UNWRAP_AND_CHECK_PARAM(Library, library, library_in); 421 UNWRAP_AND_CHECK_PARAM(Library, library, library_in);
446 UNWRAP_AND_CHECK_PARAM(String, class_name, class_name_in); 422 UNWRAP_AND_CHECK_PARAM(String, class_name, class_name_in);
447 UNWRAP_AND_CHECK_PARAM(String, function_name, function_name_in); 423 UNWRAP_AND_CHECK_PARAM(String, function_name, function_name_in);
448 424
(...skipping 15 matching lines...) Expand all
464 } 440 }
465 441
466 const Error& error = 442 const Error& error =
467 Error::Handle(Z, debugger->OneTimeBreakAtEntry(bp_target)); 443 Error::Handle(Z, debugger->OneTimeBreakAtEntry(bp_target));
468 if (!error.IsNull()) { 444 if (!error.IsNull()) {
469 return Api::NewHandle(T, error.raw()); 445 return Api::NewHandle(T, error.raw());
470 } 446 }
471 return Api::Success(); 447 return Api::Success();
472 } 448 }
473 449
474
475 DART_EXPORT Dart_Handle Dart_RemoveBreakpoint(intptr_t bp_id) { 450 DART_EXPORT Dart_Handle Dart_RemoveBreakpoint(intptr_t bp_id) {
476 DARTSCOPE(Thread::Current()); 451 DARTSCOPE(Thread::Current());
477 Isolate* I = T->isolate(); 452 Isolate* I = T->isolate();
478 CHECK_DEBUGGER(I); 453 CHECK_DEBUGGER(I);
479 I->debugger()->RemoveBreakpoint(bp_id); 454 I->debugger()->RemoveBreakpoint(bp_id);
480 return Api::Success(); 455 return Api::Success();
481 } 456 }
482 457
483
484 DART_EXPORT Dart_Handle Dart_SetStepOver() { 458 DART_EXPORT Dart_Handle Dart_SetStepOver() {
485 DARTSCOPE(Thread::Current()); 459 DARTSCOPE(Thread::Current());
486 Isolate* I = T->isolate(); 460 Isolate* I = T->isolate();
487 CHECK_DEBUGGER(I); 461 CHECK_DEBUGGER(I);
488 I->debugger()->SetResumeAction(Debugger::kStepOver); 462 I->debugger()->SetResumeAction(Debugger::kStepOver);
489 return Api::Success(); 463 return Api::Success();
490 } 464 }
491 465
492
493 DART_EXPORT Dart_Handle Dart_SetStepInto() { 466 DART_EXPORT Dart_Handle Dart_SetStepInto() {
494 DARTSCOPE(Thread::Current()); 467 DARTSCOPE(Thread::Current());
495 Isolate* I = T->isolate(); 468 Isolate* I = T->isolate();
496 CHECK_DEBUGGER(I); 469 CHECK_DEBUGGER(I);
497 I->debugger()->SetResumeAction(Debugger::kStepInto); 470 I->debugger()->SetResumeAction(Debugger::kStepInto);
498 return Api::Success(); 471 return Api::Success();
499 } 472 }
500 473
501
502 DART_EXPORT Dart_Handle Dart_SetStepOut() { 474 DART_EXPORT Dart_Handle Dart_SetStepOut() {
503 DARTSCOPE(Thread::Current()); 475 DARTSCOPE(Thread::Current());
504 Isolate* I = T->isolate(); 476 Isolate* I = T->isolate();
505 CHECK_DEBUGGER(I); 477 CHECK_DEBUGGER(I);
506 I->debugger()->SetResumeAction(Debugger::kStepOut); 478 I->debugger()->SetResumeAction(Debugger::kStepOut);
507 return Api::Success(); 479 return Api::Success();
508 } 480 }
509 481
510
511 DART_EXPORT Dart_Handle Dart_GetInstanceFields(Dart_Handle object_in) { 482 DART_EXPORT Dart_Handle Dart_GetInstanceFields(Dart_Handle object_in) {
512 DARTSCOPE(Thread::Current()); 483 DARTSCOPE(Thread::Current());
513 Isolate* I = T->isolate(); 484 Isolate* I = T->isolate();
514 CHECK_DEBUGGER(I); 485 CHECK_DEBUGGER(I);
515 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in); 486 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in);
516 return Api::NewHandle(T, I->debugger()->GetInstanceFields(obj)); 487 return Api::NewHandle(T, I->debugger()->GetInstanceFields(obj));
517 } 488 }
518 489
519
520 DART_EXPORT Dart_Handle Dart_GetStaticFields(Dart_Handle target) { 490 DART_EXPORT Dart_Handle Dart_GetStaticFields(Dart_Handle target) {
521 DARTSCOPE(Thread::Current()); 491 DARTSCOPE(Thread::Current());
522 Isolate* I = T->isolate(); 492 Isolate* I = T->isolate();
523 CHECK_DEBUGGER(I); 493 CHECK_DEBUGGER(I);
524 const Type& type_obj = Api::UnwrapTypeHandle(Z, target); 494 const Type& type_obj = Api::UnwrapTypeHandle(Z, target);
525 if (type_obj.IsNull()) { 495 if (type_obj.IsNull()) {
526 return Api::NewError("%s expects argument 'target' to be a type", 496 return Api::NewError("%s expects argument 'target' to be a type",
527 CURRENT_FUNC); 497 CURRENT_FUNC);
528 } 498 }
529 const Class& cls = Class::Handle(Z, type_obj.type_class()); 499 const Class& cls = Class::Handle(Z, type_obj.type_class());
530 return Api::NewHandle(T, I->debugger()->GetStaticFields(cls)); 500 return Api::NewHandle(T, I->debugger()->GetStaticFields(cls));
531 } 501 }
532 502
533
534 DART_EXPORT Dart_Handle Dart_GetLibraryFields(intptr_t library_id) { 503 DART_EXPORT Dart_Handle Dart_GetLibraryFields(intptr_t library_id) {
535 DARTSCOPE(Thread::Current()); 504 DARTSCOPE(Thread::Current());
536 Isolate* I = T->isolate(); 505 Isolate* I = T->isolate();
537 CHECK_DEBUGGER(I); 506 CHECK_DEBUGGER(I);
538 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id)); 507 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id));
539 if (lib.IsNull()) { 508 if (lib.IsNull()) {
540 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 509 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
541 library_id); 510 library_id);
542 } 511 }
543 return Api::NewHandle(T, I->debugger()->GetLibraryFields(lib)); 512 return Api::NewHandle(T, I->debugger()->GetLibraryFields(lib));
544 } 513 }
545 514
546
547 DART_EXPORT Dart_Handle Dart_GetGlobalVariables(intptr_t library_id) { 515 DART_EXPORT Dart_Handle Dart_GetGlobalVariables(intptr_t library_id) {
548 DARTSCOPE(Thread::Current()); 516 DARTSCOPE(Thread::Current());
549 Isolate* I = T->isolate(); 517 Isolate* I = T->isolate();
550 CHECK_DEBUGGER(I); 518 CHECK_DEBUGGER(I);
551 519
552 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id)); 520 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id));
553 if (lib.IsNull()) { 521 if (lib.IsNull()) {
554 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 522 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
555 library_id); 523 library_id);
556 } 524 }
557 return Api::NewHandle(T, I->debugger()->GetGlobalFields(lib)); 525 return Api::NewHandle(T, I->debugger()->GetGlobalFields(lib));
558 } 526 }
559 527
560
561 DART_EXPORT Dart_Handle 528 DART_EXPORT Dart_Handle
562 Dart_ActivationFrameEvaluate(Dart_ActivationFrame activation_frame, 529 Dart_ActivationFrameEvaluate(Dart_ActivationFrame activation_frame,
563 Dart_Handle expr_in) { 530 Dart_Handle expr_in) {
564 DARTSCOPE(Thread::Current()); 531 DARTSCOPE(Thread::Current());
565 CHECK_DEBUGGER(T->isolate()); 532 CHECK_DEBUGGER(T->isolate());
566 CHECK_AND_CAST(ActivationFrame, frame, activation_frame); 533 CHECK_AND_CAST(ActivationFrame, frame, activation_frame);
567 UNWRAP_AND_CHECK_PARAM(String, expr, expr_in); 534 UNWRAP_AND_CHECK_PARAM(String, expr, expr_in);
568 const GrowableObjectArray& names = 535 const GrowableObjectArray& names =
569 GrowableObjectArray::Handle(GrowableObjectArray::New()); 536 GrowableObjectArray::Handle(GrowableObjectArray::New());
570 const GrowableObjectArray& values = 537 const GrowableObjectArray& values =
571 GrowableObjectArray::Handle(GrowableObjectArray::New()); 538 GrowableObjectArray::Handle(GrowableObjectArray::New());
572 return Api::NewHandle(T, frame->Evaluate(expr, names, values)); 539 return Api::NewHandle(T, frame->Evaluate(expr, names, values));
573 } 540 }
574 541
575
576 DART_EXPORT Dart_Handle Dart_EvaluateExpr(Dart_Handle target_in, 542 DART_EXPORT Dart_Handle Dart_EvaluateExpr(Dart_Handle target_in,
577 Dart_Handle expr_in) { 543 Dart_Handle expr_in) {
578 DARTSCOPE(Thread::Current()); 544 DARTSCOPE(Thread::Current());
579 CHECK_DEBUGGER(T->isolate()); 545 CHECK_DEBUGGER(T->isolate());
580 546
581 const Object& target = Object::Handle(Z, Api::UnwrapHandle(target_in)); 547 const Object& target = Object::Handle(Z, Api::UnwrapHandle(target_in));
582 if (target.IsError()) return target_in; 548 if (target.IsError()) return target_in;
583 if (target.IsNull()) { 549 if (target.IsNull()) {
584 return Api::NewError("%s expects argument 'target' to be non-null", 550 return Api::NewError("%s expects argument 'target' to be non-null",
585 CURRENT_FUNC); 551 CURRENT_FUNC);
(...skipping 15 matching lines...) Expand all
601 return Api::NewHandle( 567 return Api::NewHandle(
602 T, lib.Evaluate(expr, Array::empty_array(), Array::empty_array())); 568 T, lib.Evaluate(expr, Array::empty_array(), Array::empty_array()));
603 } else if (target.IsClass()) { 569 } else if (target.IsClass()) {
604 const Class& cls = Class::Cast(target); 570 const Class& cls = Class::Cast(target);
605 return Api::NewHandle( 571 return Api::NewHandle(
606 T, cls.Evaluate(expr, Array::empty_array(), Array::empty_array())); 572 T, cls.Evaluate(expr, Array::empty_array(), Array::empty_array()));
607 } 573 }
608 return Api::NewError("%s: unsupported target type", CURRENT_FUNC); 574 return Api::NewError("%s: unsupported target type", CURRENT_FUNC);
609 } 575 }
610 576
611
612 DART_EXPORT Dart_Handle Dart_GetObjClass(Dart_Handle object_in) { 577 DART_EXPORT Dart_Handle Dart_GetObjClass(Dart_Handle object_in) {
613 DARTSCOPE(Thread::Current()); 578 DARTSCOPE(Thread::Current());
614 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in); 579 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in);
615 return Api::NewHandle(T, obj.GetType(Heap::kNew)); 580 return Api::NewHandle(T, obj.GetType(Heap::kNew));
616 } 581 }
617 582
618
619 DART_EXPORT Dart_Handle Dart_GetObjClassId(Dart_Handle object_in, 583 DART_EXPORT Dart_Handle Dart_GetObjClassId(Dart_Handle object_in,
620 intptr_t* class_id) { 584 intptr_t* class_id) {
621 DARTSCOPE(Thread::Current()); 585 DARTSCOPE(Thread::Current());
622 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in); 586 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in);
623 CHECK_NOT_NULL(class_id); 587 CHECK_NOT_NULL(class_id);
624 *class_id = obj.GetClassId(); 588 *class_id = obj.GetClassId();
625 return Api::Success(); 589 return Api::Success();
626 } 590 }
627 591
628
629 DART_EXPORT Dart_Handle Dart_GetClassFromId(intptr_t class_id) { 592 DART_EXPORT Dart_Handle Dart_GetClassFromId(intptr_t class_id) {
630 DARTSCOPE(Thread::Current()); 593 DARTSCOPE(Thread::Current());
631 Isolate* I = T->isolate(); 594 Isolate* I = T->isolate();
632 if (!I->class_table()->IsValidIndex(class_id)) { 595 if (!I->class_table()->IsValidIndex(class_id)) {
633 return Api::NewError("%s: %" Pd " is not a valid class id", CURRENT_FUNC, 596 return Api::NewError("%s: %" Pd " is not a valid class id", CURRENT_FUNC,
634 class_id); 597 class_id);
635 } 598 }
636 return Api::NewHandle(T, I->class_table()->At(class_id)); 599 return Api::NewHandle(T, I->class_table()->At(class_id));
637 } 600 }
638 601
639
640 DART_EXPORT Dart_Handle Dart_GetSupertype(Dart_Handle type_in) { 602 DART_EXPORT Dart_Handle Dart_GetSupertype(Dart_Handle type_in) {
641 DARTSCOPE(Thread::Current()); 603 DARTSCOPE(Thread::Current());
642 604
643 UNWRAP_AND_CHECK_PARAM(Type, type, type_in); 605 UNWRAP_AND_CHECK_PARAM(Type, type, type_in);
644 if (!type.IsFinalized()) { 606 if (!type.IsFinalized()) {
645 return Api::NewError("%s: type in 'type_in' is not a finalized type", 607 return Api::NewError("%s: type in 'type_in' is not a finalized type",
646 CURRENT_FUNC); 608 CURRENT_FUNC);
647 } 609 }
648 if (!type.IsInstantiated()) { 610 if (!type.IsInstantiated()) {
649 return Api::NewError("%s: type in 'type_in' is not an instantiated type", 611 return Api::NewError("%s: type in 'type_in' is not an instantiated type",
(...skipping 25 matching lines...) Expand all
675 } 637 }
676 638
677 // Construct the super type object, canonicalize it and return. 639 // Construct the super type object, canonicalize it and return.
678 Type& instantiated_type = Type::Handle( 640 Type& instantiated_type = Type::Handle(
679 Type::New(super_cls, super_type_args_array, TokenPosition::kNoSource)); 641 Type::New(super_cls, super_type_args_array, TokenPosition::kNoSource));
680 ASSERT(!instantiated_type.IsNull()); 642 ASSERT(!instantiated_type.IsNull());
681 instantiated_type.SetIsFinalized(); 643 instantiated_type.SetIsFinalized();
682 return Api::NewHandle(T, instantiated_type.Canonicalize()); 644 return Api::NewHandle(T, instantiated_type.Canonicalize());
683 } 645 }
684 646
685
686 DART_EXPORT Dart_Handle Dart_GetClosureInfo(Dart_Handle closure, 647 DART_EXPORT Dart_Handle Dart_GetClosureInfo(Dart_Handle closure,
687 Dart_Handle* name, 648 Dart_Handle* name,
688 Dart_Handle* signature, 649 Dart_Handle* signature,
689 Dart_CodeLocation* location) { 650 Dart_CodeLocation* location) {
690 DARTSCOPE(Thread::Current()); 651 DARTSCOPE(Thread::Current());
691 UNWRAP_AND_CHECK_PARAM(Instance, instance, closure); 652 UNWRAP_AND_CHECK_PARAM(Instance, instance, closure);
692 CHECK_NOT_NULL(location); 653 CHECK_NOT_NULL(location);
693 654
694 if (!instance.IsClosure()) { 655 if (!instance.IsClosure()) {
695 return Api::NewError("%s: parameter 0 is not a closure", CURRENT_FUNC); 656 return Api::NewError("%s: parameter 0 is not a closure", CURRENT_FUNC);
(...skipping 21 matching lines...) Expand all
717 location->token_pos = func.token_pos().Pos(); 678 location->token_pos = func.token_pos().Pos();
718 } else { 679 } else {
719 location->script_url = Api::NewHandle(T, String::null()); 680 location->script_url = Api::NewHandle(T, String::null());
720 location->library_id = -1; 681 location->library_id = -1;
721 location->token_pos = -1; 682 location->token_pos = -1;
722 } 683 }
723 } 684 }
724 return Api::True(); 685 return Api::True();
725 } 686 }
726 687
727
728 DART_EXPORT Dart_Handle Dart_GetClassInfo(intptr_t cls_id, 688 DART_EXPORT Dart_Handle Dart_GetClassInfo(intptr_t cls_id,
729 Dart_Handle* class_name, 689 Dart_Handle* class_name,
730 intptr_t* library_id, 690 intptr_t* library_id,
731 intptr_t* super_class_id, 691 intptr_t* super_class_id,
732 Dart_Handle* static_fields) { 692 Dart_Handle* static_fields) {
733 DARTSCOPE(Thread::Current()); 693 DARTSCOPE(Thread::Current());
734 Isolate* I = T->isolate(); 694 Isolate* I = T->isolate();
735 CHECK_DEBUGGER(I); 695 CHECK_DEBUGGER(I);
736 if (!I->class_table()->IsValidIndex(cls_id)) { 696 if (!I->class_table()->IsValidIndex(cls_id)) {
737 return Api::NewError("%s: %" Pd " is not a valid class id", CURRENT_FUNC, 697 return Api::NewError("%s: %" Pd " is not a valid class id", CURRENT_FUNC,
(...skipping 13 matching lines...) Expand all
751 if (!super_cls.IsNull()) { 711 if (!super_cls.IsNull()) {
752 *super_class_id = super_cls.id(); 712 *super_class_id = super_cls.id();
753 } 713 }
754 } 714 }
755 if (static_fields != NULL) { 715 if (static_fields != NULL) {
756 *static_fields = Api::NewHandle(T, I->debugger()->GetStaticFields(cls)); 716 *static_fields = Api::NewHandle(T, I->debugger()->GetStaticFields(cls));
757 } 717 }
758 return Api::Success(); 718 return Api::Success();
759 } 719 }
760 720
761
762 DART_EXPORT Dart_Handle Dart_ScriptGetSource(intptr_t library_id, 721 DART_EXPORT Dart_Handle Dart_ScriptGetSource(intptr_t library_id,
763 Dart_Handle script_url_in) { 722 Dart_Handle script_url_in) {
764 DARTSCOPE(Thread::Current()); 723 DARTSCOPE(Thread::Current());
765 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); 724 const Library& lib = Library::Handle(Library::GetLibrary(library_id));
766 if (lib.IsNull()) { 725 if (lib.IsNull()) {
767 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 726 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
768 library_id); 727 library_id);
769 } 728 }
770 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); 729 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in);
771 const Script& script = Script::Handle(lib.LookupScript(script_url)); 730 const Script& script = Script::Handle(lib.LookupScript(script_url));
772 if (script.IsNull()) { 731 if (script.IsNull()) {
773 return Api::NewError("%s: script '%s' not found in library '%s'", 732 return Api::NewError("%s: script '%s' not found in library '%s'",
774 CURRENT_FUNC, script_url.ToCString(), 733 CURRENT_FUNC, script_url.ToCString(),
775 String::Handle(lib.url()).ToCString()); 734 String::Handle(lib.url()).ToCString());
776 } 735 }
777 return Api::NewHandle(T, script.Source()); 736 return Api::NewHandle(T, script.Source());
778 } 737 }
779 738
780
781 DART_EXPORT Dart_Handle Dart_ScriptGetTokenInfo(intptr_t library_id, 739 DART_EXPORT Dart_Handle Dart_ScriptGetTokenInfo(intptr_t library_id,
782 Dart_Handle script_url_in) { 740 Dart_Handle script_url_in) {
783 DARTSCOPE(Thread::Current()); 741 DARTSCOPE(Thread::Current());
784 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); 742 const Library& lib = Library::Handle(Library::GetLibrary(library_id));
785 if (lib.IsNull()) { 743 if (lib.IsNull()) {
786 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 744 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
787 library_id); 745 library_id);
788 } 746 }
789 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); 747 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in);
790 const Script& script = Script::Handle(lib.LookupScript(script_url)); 748 const Script& script = Script::Handle(lib.LookupScript(script_url));
791 if (script.IsNull()) { 749 if (script.IsNull()) {
792 return Api::NewError("%s: script '%s' not found in library '%s'", 750 return Api::NewError("%s: script '%s' not found in library '%s'",
793 CURRENT_FUNC, script_url.ToCString(), 751 CURRENT_FUNC, script_url.ToCString(),
794 String::Handle(lib.url()).ToCString()); 752 String::Handle(lib.url()).ToCString());
795 } 753 }
796 754
797 const GrowableObjectArray& info = 755 const GrowableObjectArray& info =
798 GrowableObjectArray::Handle(script.GenerateLineNumberArray()); 756 GrowableObjectArray::Handle(script.GenerateLineNumberArray());
799 return Api::NewHandle(T, Array::MakeFixedLength(info)); 757 return Api::NewHandle(T, Array::MakeFixedLength(info));
800 } 758 }
801 759
802
803 DART_EXPORT Dart_Handle Dart_GenerateScriptSource(Dart_Handle library_url_in, 760 DART_EXPORT Dart_Handle Dart_GenerateScriptSource(Dart_Handle library_url_in,
804 Dart_Handle script_url_in) { 761 Dart_Handle script_url_in) {
805 DARTSCOPE(Thread::Current()); 762 DARTSCOPE(Thread::Current());
806 UNWRAP_AND_CHECK_PARAM(String, library_url, library_url_in); 763 UNWRAP_AND_CHECK_PARAM(String, library_url, library_url_in);
807 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); 764 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in);
808 765
809 const Library& library = 766 const Library& library =
810 Library::Handle(Z, Library::LookupLibrary(T, library_url)); 767 Library::Handle(Z, Library::LookupLibrary(T, library_url));
811 if (library.IsNull()) { 768 if (library.IsNull()) {
812 return Api::NewError("%s: library '%s' not found", CURRENT_FUNC, 769 return Api::NewError("%s: library '%s' not found", CURRENT_FUNC,
813 library_url.ToCString()); 770 library_url.ToCString());
814 } 771 }
815 772
816 const Script& script = Script::Handle(Z, library.LookupScript(script_url)); 773 const Script& script = Script::Handle(Z, library.LookupScript(script_url));
817 if (script.IsNull()) { 774 if (script.IsNull()) {
818 return Api::NewError("%s: script '%s' not found in library '%s'", 775 return Api::NewError("%s: script '%s' not found in library '%s'",
819 CURRENT_FUNC, script_url.ToCString(), 776 CURRENT_FUNC, script_url.ToCString(),
820 library_url.ToCString()); 777 library_url.ToCString());
821 } 778 }
822 779
823 return Api::NewHandle(T, script.GenerateSource()); 780 return Api::NewHandle(T, script.GenerateSource());
824 } 781 }
825 782
826
827 DART_EXPORT Dart_Handle Dart_GetScriptURLs(Dart_Handle library_url_in) { 783 DART_EXPORT Dart_Handle Dart_GetScriptURLs(Dart_Handle library_url_in) {
828 DARTSCOPE(Thread::Current()); 784 DARTSCOPE(Thread::Current());
829 UNWRAP_AND_CHECK_PARAM(String, library_url, library_url_in); 785 UNWRAP_AND_CHECK_PARAM(String, library_url, library_url_in);
830 786
831 const Library& library = 787 const Library& library =
832 Library::Handle(Z, Library::LookupLibrary(T, library_url)); 788 Library::Handle(Z, Library::LookupLibrary(T, library_url));
833 if (library.IsNull()) { 789 if (library.IsNull()) {
834 return Api::NewError("%s: library '%s' not found", CURRENT_FUNC, 790 return Api::NewError("%s: library '%s' not found", CURRENT_FUNC,
835 library_url.ToCString()); 791 library_url.ToCString());
836 } 792 }
837 const Array& loaded_scripts = Array::Handle(Z, library.LoadedScripts()); 793 const Array& loaded_scripts = Array::Handle(Z, library.LoadedScripts());
838 ASSERT(!loaded_scripts.IsNull()); 794 ASSERT(!loaded_scripts.IsNull());
839 intptr_t num_scripts = loaded_scripts.Length(); 795 intptr_t num_scripts = loaded_scripts.Length();
840 const Array& script_list = Array::Handle(Z, Array::New(num_scripts)); 796 const Array& script_list = Array::Handle(Z, Array::New(num_scripts));
841 Script& script = Script::Handle(Z); 797 Script& script = Script::Handle(Z);
842 String& url = String::Handle(Z); 798 String& url = String::Handle(Z);
843 for (int i = 0; i < num_scripts; i++) { 799 for (int i = 0; i < num_scripts; i++) {
844 script ^= loaded_scripts.At(i); 800 script ^= loaded_scripts.At(i);
845 url = script.url(); 801 url = script.url();
846 script_list.SetAt(i, url); 802 script_list.SetAt(i, url);
847 } 803 }
848 return Api::NewHandle(T, script_list.raw()); 804 return Api::NewHandle(T, script_list.raw());
849 } 805 }
850 806
851
852 DART_EXPORT Dart_Handle Dart_GetLibraryIds() { 807 DART_EXPORT Dart_Handle Dart_GetLibraryIds() {
853 DARTSCOPE(Thread::Current()); 808 DARTSCOPE(Thread::Current());
854 Isolate* I = T->isolate(); 809 Isolate* I = T->isolate();
855 810
856 const GrowableObjectArray& libs = 811 const GrowableObjectArray& libs =
857 GrowableObjectArray::Handle(Z, I->object_store()->libraries()); 812 GrowableObjectArray::Handle(Z, I->object_store()->libraries());
858 int num_libs = libs.Length(); 813 int num_libs = libs.Length();
859 814
860 // Create new list and populate with the url of loaded libraries. 815 // Create new list and populate with the url of loaded libraries.
861 Library& lib = Library::Handle(); 816 Library& lib = Library::Handle();
862 const Array& library_id_list = Array::Handle(Z, Array::New(num_libs)); 817 const Array& library_id_list = Array::Handle(Z, Array::New(num_libs));
863 for (int i = 0; i < num_libs; i++) { 818 for (int i = 0; i < num_libs; i++) {
864 lib ^= libs.At(i); 819 lib ^= libs.At(i);
865 ASSERT(!lib.IsNull()); 820 ASSERT(!lib.IsNull());
866 ASSERT(Smi::IsValid(lib.index())); 821 ASSERT(Smi::IsValid(lib.index()));
867 library_id_list.SetAt(i, Smi::Handle(Smi::New(lib.index()))); 822 library_id_list.SetAt(i, Smi::Handle(Smi::New(lib.index())));
868 } 823 }
869 return Api::NewHandle(T, library_id_list.raw()); 824 return Api::NewHandle(T, library_id_list.raw());
870 } 825 }
871 826
872
873 DART_EXPORT Dart_Handle Dart_GetLibraryFromId(intptr_t library_id) { 827 DART_EXPORT Dart_Handle Dart_GetLibraryFromId(intptr_t library_id) {
874 DARTSCOPE(Thread::Current()); 828 DARTSCOPE(Thread::Current());
875 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id)); 829 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id));
876 if (lib.IsNull()) { 830 if (lib.IsNull()) {
877 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 831 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
878 library_id); 832 library_id);
879 } 833 }
880 return Api::NewHandle(T, lib.raw()); 834 return Api::NewHandle(T, lib.raw());
881 } 835 }
882 836
883
884 DART_EXPORT Dart_Handle Dart_LibraryId(Dart_Handle library, 837 DART_EXPORT Dart_Handle Dart_LibraryId(Dart_Handle library,
885 intptr_t* library_id) { 838 intptr_t* library_id) {
886 DARTSCOPE(Thread::Current()); 839 DARTSCOPE(Thread::Current());
887 const Library& lib = Api::UnwrapLibraryHandle(Z, library); 840 const Library& lib = Api::UnwrapLibraryHandle(Z, library);
888 if (lib.IsNull()) { 841 if (lib.IsNull()) {
889 RETURN_TYPE_ERROR(Z, library, Library); 842 RETURN_TYPE_ERROR(Z, library, Library);
890 } 843 }
891 if (library_id == NULL) { 844 if (library_id == NULL) {
892 RETURN_NULL_ERROR(library_id); 845 RETURN_NULL_ERROR(library_id);
893 } 846 }
894 *library_id = lib.index(); 847 *library_id = lib.index();
895 return Api::Success(); 848 return Api::Success();
896 } 849 }
897 850
898
899 DART_EXPORT Dart_Handle Dart_GetLibraryImports(intptr_t library_id) { 851 DART_EXPORT Dart_Handle Dart_GetLibraryImports(intptr_t library_id) {
900 DARTSCOPE(Thread::Current()); 852 DARTSCOPE(Thread::Current());
901 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); 853 const Library& lib = Library::Handle(Library::GetLibrary(library_id));
902 if (lib.IsNull()) { 854 if (lib.IsNull()) {
903 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 855 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
904 library_id); 856 library_id);
905 } 857 }
906 const GrowableObjectArray& import_list = 858 const GrowableObjectArray& import_list =
907 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); 859 GrowableObjectArray::Handle(GrowableObjectArray::New(8));
908 860
(...skipping 16 matching lines...) Expand all
925 prefix_name = String::Concat(prefix_name, Symbols::Dot()); 877 prefix_name = String::Concat(prefix_name, Symbols::Dot());
926 for (int32_t i = 0; i < prefix.num_imports(); i++) { 878 for (int32_t i = 0; i < prefix.num_imports(); i++) {
927 imported = prefix.GetLibrary(i); 879 imported = prefix.GetLibrary(i);
928 import_list.Add(prefix_name); 880 import_list.Add(prefix_name);
929 import_list.Add(Smi::Handle(Smi::New(imported.index()))); 881 import_list.Add(Smi::Handle(Smi::New(imported.index())));
930 } 882 }
931 } 883 }
932 return Api::NewHandle(T, Array::MakeFixedLength(import_list)); 884 return Api::NewHandle(T, Array::MakeFixedLength(import_list));
933 } 885 }
934 886
935
936 DART_EXPORT Dart_Handle Dart_GetLibraryURL(intptr_t library_id) { 887 DART_EXPORT Dart_Handle Dart_GetLibraryURL(intptr_t library_id) {
937 DARTSCOPE(Thread::Current()); 888 DARTSCOPE(Thread::Current());
938 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id)); 889 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id));
939 if (lib.IsNull()) { 890 if (lib.IsNull()) {
940 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 891 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
941 library_id); 892 library_id);
942 } 893 }
943 return Api::NewHandle(T, lib.url()); 894 return Api::NewHandle(T, lib.url());
944 } 895 }
945 896
946
947 DART_EXPORT Dart_Handle Dart_GetLibraryDebuggable(intptr_t library_id, 897 DART_EXPORT Dart_Handle Dart_GetLibraryDebuggable(intptr_t library_id,
948 bool* is_debuggable) { 898 bool* is_debuggable) {
949 DARTSCOPE(Thread::Current()); 899 DARTSCOPE(Thread::Current());
950 CHECK_NOT_NULL(is_debuggable); 900 CHECK_NOT_NULL(is_debuggable);
951 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); 901 const Library& lib = Library::Handle(Library::GetLibrary(library_id));
952 if (lib.IsNull()) { 902 if (lib.IsNull()) {
953 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 903 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
954 library_id); 904 library_id);
955 } 905 }
956 *is_debuggable = lib.IsDebuggable(); 906 *is_debuggable = lib.IsDebuggable();
957 return Api::Success(); 907 return Api::Success();
958 } 908 }
959 909
960
961 DART_EXPORT Dart_Handle Dart_SetLibraryDebuggable(intptr_t library_id, 910 DART_EXPORT Dart_Handle Dart_SetLibraryDebuggable(intptr_t library_id,
962 bool is_debuggable) { 911 bool is_debuggable) {
963 DARTSCOPE(Thread::Current()); 912 DARTSCOPE(Thread::Current());
964 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id)); 913 const Library& lib = Library::Handle(Z, Library::GetLibrary(library_id));
965 if (lib.IsNull()) { 914 if (lib.IsNull()) {
966 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC, 915 return Api::NewError("%s: %" Pd " is not a valid library id", CURRENT_FUNC,
967 library_id); 916 library_id);
968 } 917 }
969 lib.set_debuggable(is_debuggable); 918 lib.set_debuggable(is_debuggable);
970 return Api::Success(); 919 return Api::Success();
971 } 920 }
972 921
973
974 DART_EXPORT Dart_Isolate Dart_GetIsolate(Dart_IsolateId isolate_id) { 922 DART_EXPORT Dart_Isolate Dart_GetIsolate(Dart_IsolateId isolate_id) {
975 Isolate* isolate = PortMap::GetIsolate(isolate_id); 923 Isolate* isolate = PortMap::GetIsolate(isolate_id);
976 return Api::CastIsolate(isolate); 924 return Api::CastIsolate(isolate);
977 } 925 }
978 926
979
980 DART_EXPORT Dart_IsolateId Dart_GetIsolateId(Dart_Isolate dart_isolate) { 927 DART_EXPORT Dart_IsolateId Dart_GetIsolateId(Dart_Isolate dart_isolate) {
981 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate); 928 Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate);
982 if (isolate->debugger() == NULL) { 929 if (isolate->debugger() == NULL) {
983 return ILLEGAL_ISOLATE_ID; 930 return ILLEGAL_ISOLATE_ID;
984 } 931 }
985 return isolate->debugger()->GetIsolateId(); 932 return isolate->debugger()->GetIsolateId();
986 } 933 }
987 934
988 #else 935 #else
989 936
990 DART_EXPORT void Dart_SetPausedEventHandler(Dart_PausedEventHandler handler) { 937 DART_EXPORT void Dart_SetPausedEventHandler(Dart_PausedEventHandler handler) {
991 // NOOP. 938 // NOOP.
992 } 939 }
993 940
994 #endif // !PRODUCT 941 #endif // !PRODUCT
995 942
996 } // namespace dart 943 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698