Index: runtime/lib/mirrors.cc |
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc |
index 89774e53c8961ac7be513c967907856c5ba3b48e..1cb1c748c48bd91f39c824440b14fdc3cab93de1 100644 |
--- a/runtime/lib/mirrors.cc |
+++ b/runtime/lib/mirrors.cc |
@@ -559,69 +559,37 @@ static Dart_Handle CreateClassMirror(Dart_Handle intf, |
static Dart_Handle CreateMethodMirror(Dart_Handle func, |
Dart_Handle owner_mirror) { |
- ASSERT(Dart_IsFunction(func)); |
+ // TODO(11742): Unwrapping is needed until the whole method is converted. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
+ const Function& func_obj = Api::UnwrapFunctionHandle(isolate, func); |
+ |
Dart_Handle mirror_cls_name = NewString("_LocalMethodMirrorImpl"); |
Dart_Handle mirror_type = Dart_GetType(MirrorLib(), mirror_cls_name, 0, NULL); |
if (Dart_IsError(mirror_type)) { |
return mirror_type; |
} |
- bool is_static = false; |
- bool is_abstract = false; |
- bool is_getter = false; |
- bool is_setter = false; |
- bool is_constructor = false; |
- |
- Dart_Handle result = Dart_FunctionIsStatic(func, &is_static); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- result = Dart_FunctionIsAbstract(func, &is_abstract); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- result = Dart_FunctionIsGetter(func, &is_getter); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- result = Dart_FunctionIsSetter(func, &is_setter); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- result = Dart_FunctionIsConstructor(func, &is_constructor); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- |
Dart_Handle return_type = Dart_FunctionReturnType(func); |
if (Dart_IsError(return_type)) { |
return return_type; |
} |
- int64_t fixed_param_count; |
- int64_t opt_param_count; |
- result = Dart_FunctionParameterCounts(func, |
- &fixed_param_count, |
- &opt_param_count); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- |
// TODO(turnidge): Implement constructor kinds (arguments 7 - 10). |
Dart_Handle args[] = { |
CreateMirrorReference(func), |
owner_mirror, |
CreateParameterMirrorList(func), |
CreateLazyMirror(return_type), |
- Dart_NewBoolean(is_static), |
- Dart_NewBoolean(is_abstract), |
- Dart_NewBoolean(is_getter), |
- Dart_NewBoolean(is_setter), |
- Dart_NewBoolean(is_constructor), |
- Dart_False(), |
- Dart_False(), |
- Dart_False(), |
- Dart_False(), |
+ func_obj.is_static() ? Api::True() : Api::False(), |
+ func_obj.is_abstract() ? Api::True() : Api::False(), |
+ func_obj.IsGetterFunction() ? Api::True() : Api::False(), |
+ func_obj.IsSetterFunction() ? Api::True() : Api::False(), |
+ func_obj.IsConstructor() ? Api::True() : Api::False(), |
+ Api::False(), |
+ Api::False(), |
+ Api::False(), |
+ Api::False() |
}; |
Dart_Handle mirror = |
Dart_New(mirror_type, Dart_Null(), ARRAY_SIZE(args), args); |