Chromium Code Reviews| Index: runtime/vm/dart_api_impl.cc |
| =================================================================== |
| --- runtime/vm/dart_api_impl.cc (revision 23883) |
| +++ runtime/vm/dart_api_impl.cc (working copy) |
| @@ -4348,6 +4348,29 @@ |
| } |
| +// --- Metadata ---- |
| + |
| +DART_EXPORT Dart_Handle Dart_GetMetadata(Dart_Handle object) { |
| + Isolate* isolate = Isolate::Current(); |
| + CHECK_ISOLATE(isolate); |
| + DARTSCOPE(isolate); |
| + Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
| + Class& cls = Class::Handle(isolate); |
| + if (obj.IsClass()) { |
| + cls ^= obj.raw(); |
| + } else if (obj.IsFunction()) { |
| + cls = Function::Cast(obj).origin(); |
| + } else if (obj.IsField()) { |
| + cls = Field::Cast(obj).origin(); |
| + } else { |
| + return Api::NewHandle(isolate, Array::New(0)); |
|
siva
2013/06/12 00:16:52
return Api::NewHandle(isolate, Object::empty_array
hausner
2013/06/12 01:10:05
Done.
|
| + } |
| + const Library& lib = Library::Handle(cls.library()); |
| + obj = lib.GetMetadata(obj); |
| + return Api::NewHandle(isolate, obj.raw()); |
|
siva
2013/06/12 00:16:52
why not:
return Api::NewHandle(isolate, lib.GetMe
hausner
2013/06/12 01:10:05
Done.
|
| +} |
| + |
| + |
| // --- Scripts and Libraries --- |