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 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 Isolate* isolate = Isolate::Current(); | 500 Isolate* isolate = Isolate::Current(); |
501 DARTSCOPE(isolate); | 501 DARTSCOPE(isolate); |
502 | 502 |
503 const Object& target = Object::Handle(isolate, Api::UnwrapHandle(target_in)); | 503 const Object& target = Object::Handle(isolate, Api::UnwrapHandle(target_in)); |
504 if (target.IsError()) return target_in; | 504 if (target.IsError()) return target_in; |
505 if (target.IsNull()) { | 505 if (target.IsNull()) { |
506 return Api::NewError("%s expects argument 'target' to be non-null", | 506 return Api::NewError("%s expects argument 'target' to be non-null", |
507 CURRENT_FUNC); | 507 CURRENT_FUNC); |
508 } | 508 } |
509 UNWRAP_AND_CHECK_PARAM(String, expr, expr_in); | 509 UNWRAP_AND_CHECK_PARAM(String, expr, expr_in); |
| 510 // Type extends Instance, must check first. |
510 if (target.IsType()) { | 511 if (target.IsType()) { |
511 const Class& cls = Class::Handle(isolate, Type::Cast(target).type_class()); | 512 const Class& cls = Class::Handle(isolate, Type::Cast(target).type_class()); |
512 return Api::NewHandle(isolate, cls.Evaluate(expr)); | 513 return Api::NewHandle(isolate, cls.Evaluate(expr)); |
513 } else if (target.IsInstance()) { | 514 } else if (target.IsInstance()) { |
514 return Api::NewHandle(isolate, Instance::Cast(target).Evaluate(expr)); | 515 return Api::NewHandle(isolate, Instance::Cast(target).Evaluate(expr)); |
515 } else if (target.IsLibrary()) { | 516 } else if (target.IsLibrary()) { |
516 return Api::NewHandle(isolate, Library::Cast(target).Evaluate(expr)); | 517 return Api::NewHandle(isolate, Library::Cast(target).Evaluate(expr)); |
| 518 } else if (target.IsClass()) { |
| 519 return Api::NewHandle(isolate, Class::Cast(target).Evaluate(expr)); |
517 } | 520 } |
518 return Api::NewError("%s: unsupported target type", CURRENT_FUNC); | 521 return Api::NewError("%s: unsupported target type", CURRENT_FUNC); |
519 } | 522 } |
520 | 523 |
521 | 524 |
522 DART_EXPORT Dart_Handle Dart_GetObjClass(Dart_Handle object_in) { | 525 DART_EXPORT Dart_Handle Dart_GetObjClass(Dart_Handle object_in) { |
523 Isolate* isolate = Isolate::Current(); | 526 Isolate* isolate = Isolate::Current(); |
524 DARTSCOPE(isolate); | 527 DARTSCOPE(isolate); |
525 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in); | 528 UNWRAP_AND_CHECK_PARAM(Instance, obj, object_in); |
526 return Api::NewHandle(isolate, obj.GetType()); | 529 return Api::NewHandle(isolate, obj.GetType()); |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 | 886 |
884 | 887 |
885 DART_EXPORT char* Dart_GetVmStatus(const char* request) { | 888 DART_EXPORT char* Dart_GetVmStatus(const char* request) { |
886 if (strncmp(request, "/isolate/", 9) == 0) { | 889 if (strncmp(request, "/isolate/", 9) == 0) { |
887 return Isolate::GetStatus(request); | 890 return Isolate::GetStatus(request); |
888 } | 891 } |
889 return NULL; | 892 return NULL; |
890 } | 893 } |
891 | 894 |
892 } // namespace dart | 895 } // namespace dart |
OLD | NEW |