OLD | NEW |
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 return -1; | 58 return -1; |
59 } | 59 } |
60 return isolate->debugger()->CacheObject(obj); | 60 return isolate->debugger()->CacheObject(obj); |
61 } | 61 } |
62 | 62 |
63 | 63 |
64 DART_EXPORT Dart_Handle Dart_GetCachedObject(intptr_t obj_id) { | 64 DART_EXPORT Dart_Handle Dart_GetCachedObject(intptr_t obj_id) { |
65 Isolate* isolate = Isolate::Current(); | 65 Isolate* isolate = Isolate::Current(); |
66 DARTSCOPE(isolate); | 66 DARTSCOPE(isolate); |
67 if (!isolate->debugger()->IsValidObjectId(obj_id)) { | 67 if (!isolate->debugger()->IsValidObjectId(obj_id)) { |
68 return Api::NewError("%s: object id %"Pd" is invalid", | 68 return Api::NewError("%s: object id %" Pd " is invalid", |
69 CURRENT_FUNC, obj_id); | 69 CURRENT_FUNC, obj_id); |
70 } | 70 } |
71 return Api::NewHandle(isolate, isolate->debugger()->GetCachedObject(obj_id)); | 71 return Api::NewHandle(isolate, isolate->debugger()->GetCachedObject(obj_id)); |
72 } | 72 } |
73 | 73 |
74 | 74 |
75 DART_EXPORT Dart_Handle Dart_StackTraceLength( | 75 DART_EXPORT Dart_Handle Dart_StackTraceLength( |
76 Dart_StackTrace trace, | 76 Dart_StackTrace trace, |
77 intptr_t* length) { | 77 intptr_t* length) { |
78 Isolate* isolate = Isolate::Current(); | 78 Isolate* isolate = Isolate::Current(); |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 Dart_Handle state = Api::CheckIsolateState(isolate); | 294 Dart_Handle state = Api::CheckIsolateState(isolate); |
295 if (::Dart_IsError(state)) { | 295 if (::Dart_IsError(state)) { |
296 return state; | 296 return state; |
297 } | 297 } |
298 | 298 |
299 Debugger* debugger = isolate->debugger(); | 299 Debugger* debugger = isolate->debugger(); |
300 ASSERT(debugger != NULL); | 300 ASSERT(debugger != NULL); |
301 SourceBreakpoint* bpt = | 301 SourceBreakpoint* bpt = |
302 debugger->SetBreakpointAtLine(script_url, line_number); | 302 debugger->SetBreakpointAtLine(script_url, line_number); |
303 if (bpt == NULL) { | 303 if (bpt == NULL) { |
304 return Api::NewError("%s: could not set breakpoint at line %"Pd" in '%s'", | 304 return Api::NewError("%s: could not set breakpoint at line %" Pd " in '%s'", |
305 CURRENT_FUNC, line_number, script_url.ToCString()); | 305 CURRENT_FUNC, line_number, script_url.ToCString()); |
306 } | 306 } |
307 return Dart_NewInteger(bpt->id()); | 307 return Dart_NewInteger(bpt->id()); |
308 } | 308 } |
309 | 309 |
310 | 310 |
311 DART_EXPORT Dart_Handle Dart_GetBreakpointURL(intptr_t bp_id) { | 311 DART_EXPORT Dart_Handle Dart_GetBreakpointURL(intptr_t bp_id) { |
312 Isolate* isolate = Isolate::Current(); | 312 Isolate* isolate = Isolate::Current(); |
313 DARTSCOPE(isolate); | 313 DARTSCOPE(isolate); |
314 Debugger* debugger = isolate->debugger(); | 314 Debugger* debugger = isolate->debugger(); |
315 ASSERT(debugger != NULL); | 315 ASSERT(debugger != NULL); |
316 | 316 |
317 SourceBreakpoint* bpt = debugger->GetBreakpointById(bp_id); | 317 SourceBreakpoint* bpt = debugger->GetBreakpointById(bp_id); |
318 if (bpt == NULL) { | 318 if (bpt == NULL) { |
319 return Api::NewError("%s: breakpoint with id %"Pd" does not exist", | 319 return Api::NewError("%s: breakpoint with id %" Pd " does not exist", |
320 CURRENT_FUNC, bp_id); | 320 CURRENT_FUNC, bp_id); |
321 } | 321 } |
322 return Api::NewHandle(isolate, bpt->SourceUrl()); | 322 return Api::NewHandle(isolate, bpt->SourceUrl()); |
323 } | 323 } |
324 | 324 |
325 | 325 |
326 DART_EXPORT Dart_Handle Dart_GetBreakpointLine(intptr_t bp_id) { | 326 DART_EXPORT Dart_Handle Dart_GetBreakpointLine(intptr_t bp_id) { |
327 Isolate* isolate = Isolate::Current(); | 327 Isolate* isolate = Isolate::Current(); |
328 DARTSCOPE(isolate); | 328 DARTSCOPE(isolate); |
329 Debugger* debugger = isolate->debugger(); | 329 Debugger* debugger = isolate->debugger(); |
330 ASSERT(debugger != NULL); | 330 ASSERT(debugger != NULL); |
331 | 331 |
332 SourceBreakpoint* bpt = debugger->GetBreakpointById(bp_id); | 332 SourceBreakpoint* bpt = debugger->GetBreakpointById(bp_id); |
333 if (bpt == NULL) { | 333 if (bpt == NULL) { |
334 return Api::NewError("%s: breakpoint with id %"Pd" does not exist", | 334 return Api::NewError("%s: breakpoint with id %" Pd " does not exist", |
335 CURRENT_FUNC, bp_id); | 335 CURRENT_FUNC, bp_id); |
336 } | 336 } |
337 return Dart_NewInteger(bpt->LineNumber()); | 337 return Dart_NewInteger(bpt->LineNumber()); |
338 } | 338 } |
339 | 339 |
340 | 340 |
341 DART_EXPORT Dart_Handle Dart_SetBreakpointAtEntry( | 341 DART_EXPORT Dart_Handle Dart_SetBreakpointAtEntry( |
342 Dart_Handle library_in, | 342 Dart_Handle library_in, |
343 Dart_Handle class_name_in, | 343 Dart_Handle class_name_in, |
344 Dart_Handle function_name_in) { | 344 Dart_Handle function_name_in) { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 return Api::NewHandle(isolate, isolate->debugger()->GetStaticFields(cls)); | 471 return Api::NewHandle(isolate, isolate->debugger()->GetStaticFields(cls)); |
472 } | 472 } |
473 | 473 |
474 | 474 |
475 DART_EXPORT Dart_Handle Dart_GetLibraryFields(intptr_t library_id) { | 475 DART_EXPORT Dart_Handle Dart_GetLibraryFields(intptr_t library_id) { |
476 Isolate* isolate = Isolate::Current(); | 476 Isolate* isolate = Isolate::Current(); |
477 DARTSCOPE(isolate); | 477 DARTSCOPE(isolate); |
478 const Library& lib = | 478 const Library& lib = |
479 Library::Handle(isolate, Library::GetLibrary(library_id)); | 479 Library::Handle(isolate, Library::GetLibrary(library_id)); |
480 if (lib.IsNull()) { | 480 if (lib.IsNull()) { |
481 return Api::NewError("%s: %"Pd" is not a valid library id", | 481 return Api::NewError("%s: %" Pd " is not a valid library id", |
482 CURRENT_FUNC, library_id); | 482 CURRENT_FUNC, library_id); |
483 } | 483 } |
484 return Api::NewHandle(isolate, isolate->debugger()->GetLibraryFields(lib)); | 484 return Api::NewHandle(isolate, isolate->debugger()->GetLibraryFields(lib)); |
485 } | 485 } |
486 | 486 |
487 | 487 |
488 DART_EXPORT Dart_Handle Dart_GetGlobalVariables(intptr_t library_id) { | 488 DART_EXPORT Dart_Handle Dart_GetGlobalVariables(intptr_t library_id) { |
489 Isolate* isolate = Isolate::Current(); | 489 Isolate* isolate = Isolate::Current(); |
490 ASSERT(isolate != NULL); | 490 ASSERT(isolate != NULL); |
491 DARTSCOPE(isolate); | 491 DARTSCOPE(isolate); |
492 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 492 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
493 if (lib.IsNull()) { | 493 if (lib.IsNull()) { |
494 return Api::NewError("%s: %"Pd" is not a valid library id", | 494 return Api::NewError("%s: %" Pd " is not a valid library id", |
495 CURRENT_FUNC, library_id); | 495 CURRENT_FUNC, library_id); |
496 } | 496 } |
497 return Api::NewHandle(isolate, isolate->debugger()->GetGlobalFields(lib)); | 497 return Api::NewHandle(isolate, isolate->debugger()->GetGlobalFields(lib)); |
498 } | 498 } |
499 | 499 |
500 | 500 |
501 DART_EXPORT Dart_Handle Dart_EvaluateExpr(Dart_Handle target, | 501 DART_EXPORT Dart_Handle Dart_EvaluateExpr(Dart_Handle target, |
502 Dart_Handle expr_in) { | 502 Dart_Handle expr_in) { |
503 Isolate* isolate = Isolate::Current(); | 503 Isolate* isolate = Isolate::Current(); |
504 DARTSCOPE(isolate); | 504 DARTSCOPE(isolate); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 | 584 |
585 DART_EXPORT Dart_Handle Dart_GetClassInfo( | 585 DART_EXPORT Dart_Handle Dart_GetClassInfo( |
586 intptr_t cls_id, | 586 intptr_t cls_id, |
587 Dart_Handle* class_name, | 587 Dart_Handle* class_name, |
588 intptr_t* library_id, | 588 intptr_t* library_id, |
589 intptr_t* super_class_id, | 589 intptr_t* super_class_id, |
590 Dart_Handle* static_fields) { | 590 Dart_Handle* static_fields) { |
591 Isolate* isolate = Isolate::Current(); | 591 Isolate* isolate = Isolate::Current(); |
592 DARTSCOPE(isolate); | 592 DARTSCOPE(isolate); |
593 if (!isolate->class_table()->IsValidIndex(cls_id)) { | 593 if (!isolate->class_table()->IsValidIndex(cls_id)) { |
594 return Api::NewError("%s: %"Pd" is not a valid class id", | 594 return Api::NewError("%s: %" Pd " is not a valid class id", |
595 CURRENT_FUNC, cls_id); | 595 CURRENT_FUNC, cls_id); |
596 } | 596 } |
597 Class& cls = Class::Handle(isolate, isolate->class_table()->At(cls_id)); | 597 Class& cls = Class::Handle(isolate, isolate->class_table()->At(cls_id)); |
598 if (class_name != NULL) { | 598 if (class_name != NULL) { |
599 *class_name = Api::NewHandle(isolate, cls.Name()); | 599 *class_name = Api::NewHandle(isolate, cls.Name()); |
600 } | 600 } |
601 if (library_id != NULL) { | 601 if (library_id != NULL) { |
602 const Library& lib = Library::Handle(isolate, cls.library()); | 602 const Library& lib = Library::Handle(isolate, cls.library()); |
603 *library_id = lib.index(); | 603 *library_id = lib.index(); |
604 } | 604 } |
(...skipping 12 matching lines...) Expand all Loading... |
617 } | 617 } |
618 | 618 |
619 | 619 |
620 DART_EXPORT Dart_Handle Dart_ScriptGetSource( | 620 DART_EXPORT Dart_Handle Dart_ScriptGetSource( |
621 intptr_t library_id, | 621 intptr_t library_id, |
622 Dart_Handle script_url_in) { | 622 Dart_Handle script_url_in) { |
623 Isolate* isolate = Isolate::Current(); | 623 Isolate* isolate = Isolate::Current(); |
624 DARTSCOPE(isolate); | 624 DARTSCOPE(isolate); |
625 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 625 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
626 if (lib.IsNull()) { | 626 if (lib.IsNull()) { |
627 return Api::NewError("%s: %"Pd" is not a valid library id", | 627 return Api::NewError("%s: %" Pd " is not a valid library id", |
628 CURRENT_FUNC, library_id); | 628 CURRENT_FUNC, library_id); |
629 } | 629 } |
630 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); | 630 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); |
631 const Script& script = Script::Handle(lib.LookupScript(script_url)); | 631 const Script& script = Script::Handle(lib.LookupScript(script_url)); |
632 if (script.IsNull()) { | 632 if (script.IsNull()) { |
633 return Api::NewError("%s: script '%s' not found in library '%s'", | 633 return Api::NewError("%s: script '%s' not found in library '%s'", |
634 CURRENT_FUNC, script_url.ToCString(), | 634 CURRENT_FUNC, script_url.ToCString(), |
635 String::Handle(lib.url()).ToCString()); | 635 String::Handle(lib.url()).ToCString()); |
636 } | 636 } |
637 return Api::NewHandle(isolate, script.Source()); | 637 return Api::NewHandle(isolate, script.Source()); |
638 } | 638 } |
639 | 639 |
640 | 640 |
641 DART_EXPORT Dart_Handle Dart_ScriptGetTokenInfo( | 641 DART_EXPORT Dart_Handle Dart_ScriptGetTokenInfo( |
642 intptr_t library_id, | 642 intptr_t library_id, |
643 Dart_Handle script_url_in) { | 643 Dart_Handle script_url_in) { |
644 Isolate* isolate = Isolate::Current(); | 644 Isolate* isolate = Isolate::Current(); |
645 DARTSCOPE(isolate); | 645 DARTSCOPE(isolate); |
646 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 646 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
647 if (lib.IsNull()) { | 647 if (lib.IsNull()) { |
648 return Api::NewError("%s: %"Pd" is not a valid library id", | 648 return Api::NewError("%s: %" Pd " is not a valid library id", |
649 CURRENT_FUNC, library_id); | 649 CURRENT_FUNC, library_id); |
650 } | 650 } |
651 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); | 651 UNWRAP_AND_CHECK_PARAM(String, script_url, script_url_in); |
652 const Script& script = Script::Handle(lib.LookupScript(script_url)); | 652 const Script& script = Script::Handle(lib.LookupScript(script_url)); |
653 if (script.IsNull()) { | 653 if (script.IsNull()) { |
654 return Api::NewError("%s: script '%s' not found in library '%s'", | 654 return Api::NewError("%s: script '%s' not found in library '%s'", |
655 CURRENT_FUNC, script_url.ToCString(), | 655 CURRENT_FUNC, script_url.ToCString(), |
656 String::Handle(lib.url()).ToCString()); | 656 String::Handle(lib.url()).ToCString()); |
657 } | 657 } |
658 | 658 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 return Api::NewHandle(isolate, library_id_list.raw()); | 759 return Api::NewHandle(isolate, library_id_list.raw()); |
760 } | 760 } |
761 | 761 |
762 | 762 |
763 DART_EXPORT Dart_Handle Dart_GetLibraryImports(intptr_t library_id) { | 763 DART_EXPORT Dart_Handle Dart_GetLibraryImports(intptr_t library_id) { |
764 Isolate* isolate = Isolate::Current(); | 764 Isolate* isolate = Isolate::Current(); |
765 ASSERT(isolate != NULL); | 765 ASSERT(isolate != NULL); |
766 DARTSCOPE(isolate); | 766 DARTSCOPE(isolate); |
767 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 767 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
768 if (lib.IsNull()) { | 768 if (lib.IsNull()) { |
769 return Api::NewError("%s: %"Pd" is not a valid library id", | 769 return Api::NewError("%s: %" Pd " is not a valid library id", |
770 CURRENT_FUNC, library_id); | 770 CURRENT_FUNC, library_id); |
771 } | 771 } |
772 const GrowableObjectArray& import_list = | 772 const GrowableObjectArray& import_list = |
773 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); | 773 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); |
774 | 774 |
775 String& prefix_name = String::Handle(isolate); | 775 String& prefix_name = String::Handle(isolate); |
776 Library& imported = Library::Handle(isolate); | 776 Library& imported = Library::Handle(isolate); |
777 intptr_t num_imports = lib.num_imports(); | 777 intptr_t num_imports = lib.num_imports(); |
778 for (int i = 0; i < num_imports; i++) { | 778 for (int i = 0; i < num_imports; i++) { |
779 import_list.Add(prefix_name); // Null prefix name means no prefix. | 779 import_list.Add(prefix_name); // Null prefix name means no prefix. |
(...skipping 18 matching lines...) Expand all Loading... |
798 return Api::NewHandle(isolate, Array::MakeArray(import_list)); | 798 return Api::NewHandle(isolate, Array::MakeArray(import_list)); |
799 } | 799 } |
800 | 800 |
801 | 801 |
802 DART_EXPORT Dart_Handle Dart_GetLibraryURL(intptr_t library_id) { | 802 DART_EXPORT Dart_Handle Dart_GetLibraryURL(intptr_t library_id) { |
803 Isolate* isolate = Isolate::Current(); | 803 Isolate* isolate = Isolate::Current(); |
804 ASSERT(isolate != NULL); | 804 ASSERT(isolate != NULL); |
805 DARTSCOPE(isolate); | 805 DARTSCOPE(isolate); |
806 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 806 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
807 if (lib.IsNull()) { | 807 if (lib.IsNull()) { |
808 return Api::NewError("%s: %"Pd" is not a valid library id", | 808 return Api::NewError("%s: %" Pd " is not a valid library id", |
809 CURRENT_FUNC, library_id); | 809 CURRENT_FUNC, library_id); |
810 } | 810 } |
811 return Api::NewHandle(isolate, lib.url()); | 811 return Api::NewHandle(isolate, lib.url()); |
812 } | 812 } |
813 | 813 |
814 | 814 |
815 DART_EXPORT Dart_Handle Dart_GetLibraryDebuggable(intptr_t library_id, | 815 DART_EXPORT Dart_Handle Dart_GetLibraryDebuggable(intptr_t library_id, |
816 bool* is_debuggable) { | 816 bool* is_debuggable) { |
817 Isolate* isolate = Isolate::Current(); | 817 Isolate* isolate = Isolate::Current(); |
818 ASSERT(isolate != NULL); | 818 ASSERT(isolate != NULL); |
819 DARTSCOPE(isolate); | 819 DARTSCOPE(isolate); |
820 CHECK_NOT_NULL(is_debuggable); | 820 CHECK_NOT_NULL(is_debuggable); |
821 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 821 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
822 if (lib.IsNull()) { | 822 if (lib.IsNull()) { |
823 return Api::NewError("%s: %"Pd" is not a valid library id", | 823 return Api::NewError("%s: %" Pd " is not a valid library id", |
824 CURRENT_FUNC, library_id); | 824 CURRENT_FUNC, library_id); |
825 } | 825 } |
826 *is_debuggable = lib.IsDebuggable(); | 826 *is_debuggable = lib.IsDebuggable(); |
827 return Api::Success(); | 827 return Api::Success(); |
828 } | 828 } |
829 | 829 |
830 | 830 |
831 DART_EXPORT Dart_Handle Dart_SetLibraryDebuggable(intptr_t library_id, | 831 DART_EXPORT Dart_Handle Dart_SetLibraryDebuggable(intptr_t library_id, |
832 bool is_debuggable) { | 832 bool is_debuggable) { |
833 Isolate* isolate = Isolate::Current(); | 833 Isolate* isolate = Isolate::Current(); |
834 ASSERT(isolate != NULL); | 834 ASSERT(isolate != NULL); |
835 DARTSCOPE(isolate); | 835 DARTSCOPE(isolate); |
836 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); | 836 const Library& lib = Library::Handle(Library::GetLibrary(library_id)); |
837 if (lib.IsNull()) { | 837 if (lib.IsNull()) { |
838 return Api::NewError("%s: %"Pd" is not a valid library id", | 838 return Api::NewError("%s: %" Pd " is not a valid library id", |
839 CURRENT_FUNC, library_id); | 839 CURRENT_FUNC, library_id); |
840 } | 840 } |
841 lib.set_debuggable(is_debuggable); | 841 lib.set_debuggable(is_debuggable); |
842 return Api::Success(); | 842 return Api::Success(); |
843 } | 843 } |
844 | 844 |
845 | 845 |
846 DART_EXPORT Dart_Isolate Dart_GetIsolate(Dart_IsolateId isolate_id) { | 846 DART_EXPORT Dart_Isolate Dart_GetIsolate(Dart_IsolateId isolate_id) { |
847 Isolate* isolate = PortMap::GetIsolate(isolate_id); | 847 Isolate* isolate = PortMap::GetIsolate(isolate_id); |
848 return Api::CastIsolate(isolate); | 848 return Api::CastIsolate(isolate); |
849 } | 849 } |
850 | 850 |
851 | 851 |
852 DART_EXPORT char* Dart_GetVmStatus(const char* request) { | 852 DART_EXPORT char* Dart_GetVmStatus(const char* request) { |
853 if (strncmp(request, "/isolate/", 9) == 0) { | 853 if (strncmp(request, "/isolate/", 9) == 0) { |
854 return Isolate::GetStatus(request); | 854 return Isolate::GetStatus(request); |
855 } | 855 } |
856 return NULL; | 856 return NULL; |
857 } | 857 } |
858 | 858 |
859 } // namespace dart | 859 } // namespace dart |
OLD | NEW |