| Index: runtime/lib/mirrors.cc
|
| ===================================================================
|
| --- runtime/lib/mirrors.cc (revision 25568)
|
| +++ runtime/lib/mirrors.cc (working copy)
|
| @@ -291,6 +291,7 @@
|
| }
|
|
|
| Dart_Handle args[] = {
|
| + CreateMirrorReference(target),
|
| CreateLazyMirror(return_type),
|
| CreateParameterMirrorListUsingApi(sig),
|
| };
|
| @@ -327,36 +328,6 @@
|
| }
|
|
|
|
|
| -static Dart_Handle CreateImplementsList(Dart_Handle intf) {
|
| - intptr_t len = 0;
|
| - Dart_Handle result = Dart_ClassGetInterfaceCount(intf, &len);
|
| - if (Dart_IsError(result)) {
|
| - return result;
|
| - }
|
| -
|
| - Dart_Handle mirror_list = Dart_NewList(len);
|
| - if (Dart_IsError(mirror_list)) {
|
| - return mirror_list;
|
| - }
|
| -
|
| - for (intptr_t i = 0; i < len; i++) {
|
| - Dart_Handle interface = Dart_ClassGetInterfaceAt(intf, i);
|
| - if (Dart_IsError(interface)) {
|
| - return interface;
|
| - }
|
| - Dart_Handle mirror = CreateLazyMirror(interface);
|
| - if (Dart_IsError(mirror)) {
|
| - return mirror;
|
| - }
|
| - Dart_Handle result = Dart_ListSetAt(mirror_list, i, mirror);
|
| - if (Dart_IsError(result)) {
|
| - return result;
|
| - }
|
| - }
|
| - return mirror_list;
|
| -}
|
| -
|
| -
|
| static Dart_Handle CreateTypeVariableMirrorUsingApi(Dart_Handle type_var,
|
| Dart_Handle type_var_name,
|
| Dart_Handle owner_mirror) {
|
| @@ -508,10 +479,6 @@
|
| return type;
|
| }
|
|
|
| - Dart_Handle super_class = Dart_Null();
|
| - // TODO(turnidge): Simplify code, now that default classes have been removed.
|
| - Dart_Handle default_class = Dart_Null();
|
| -
|
| Dart_Handle intf_mirror = CreateLazyMirror(intf);
|
| if (Dart_IsError(intf_mirror)) {
|
| return intf_mirror;
|
| @@ -524,11 +491,6 @@
|
| Dart_Handle args[] = {
|
| CreateMirrorReference(intf),
|
| Dart_Null(), // "name"
|
| - Dart_NewBoolean(Dart_IsClass(intf)),
|
| - lib_mirror,
|
| - super_class,
|
| - CreateImplementsList(intf),
|
| - CreateLazyMirror(default_class),
|
| type_var_map,
|
| };
|
| Dart_Handle mirror = Dart_New(type, Dart_Null(), ARRAY_SIZE(args), args);
|
| @@ -970,6 +932,20 @@
|
| return klass.super_type();
|
| }
|
|
|
| +
|
| +DEFINE_NATIVE_ENTRY(ClassMirror_interfaces, 1) {
|
| + GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0));
|
| + const Class& klass = Class::Handle(ref.GetClassReferent());
|
| +
|
| + const Error& error = Error::Handle(klass.EnsureIsFinalized(isolate));
|
| + if (!error.IsNull()) {
|
| + ThrowInvokeError(error);
|
| + }
|
| +
|
| + return klass.interfaces();
|
| +}
|
| +
|
| +
|
| DEFINE_NATIVE_ENTRY(ClassMirror_members, 2) {
|
| GET_NON_NULL_NATIVE_ARGUMENT(Instance,
|
| owner_mirror,
|
|
|