| Index: runtime/lib/mirrors.cc
|
| diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
|
| index cc278b2ebd795c39e106810d01c78d14e57d9182..2009249dfc641020c689ead9eeda022b475c8825 100644
|
| --- a/runtime/lib/mirrors.cc
|
| +++ b/runtime/lib/mirrors.cc
|
| @@ -427,6 +427,19 @@ DEFINE_NATIVE_ENTRY(Mirrors_makeLocalTypeMirror, 1) {
|
| return CreateTypeMirror(type);
|
| }
|
|
|
| +DEFINE_NATIVE_ENTRY(Mirrors_mangleName, 2) {
|
| + GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(0));
|
| + GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1));
|
| + const Library& lib = Library::Handle(ref.GetLibraryReferent());
|
| + return lib.IsPrivate(name) ? lib.PrivateName(name) : name.raw();
|
| +}
|
| +
|
| +DEFINE_NATIVE_ENTRY(Mirrors_unmangleName, 1) {
|
| + GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(0));
|
| + return Library::IsPrivate(name) ?
|
| + String::IdentifierPrettyName(name) : name.raw();
|
| +}
|
| +
|
|
|
| DEFINE_NATIVE_ENTRY(MirrorReference_equals, 2) {
|
| GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, a, arguments->NativeArgAt(0));
|
| @@ -803,7 +816,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 5) {
|
|
|
| Class& klass = Class::Handle(reflectee.clazz());
|
| Function& function = Function::Handle(
|
| - Resolver::ResolveDynamicAnyArgsAllowPrivate(klass, function_name));
|
| + Resolver::ResolveDynamicAnyArgs(klass, function_name));
|
|
|
| const Array& args_descriptor =
|
| Array::Handle(ArgumentsDescriptor::New(args.Length(), arg_names));
|
| @@ -826,7 +839,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 3) {
|
| Class& klass = Class::Handle(reflectee.clazz());
|
| String& internal_getter_name = String::Handle(Field::GetterName(getter_name));
|
| Function& function = Function::Handle(
|
| - Resolver::ResolveDynamicAnyArgsAllowPrivate(klass, internal_getter_name));
|
| + Resolver::ResolveDynamicAnyArgs(klass, internal_getter_name));
|
|
|
| const int kNumArgs = 1;
|
| const Array& args = Array::Handle(Array::New(kNumArgs));
|
| @@ -867,7 +880,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 4) {
|
| ThrowMirroredCompilationError(message);
|
| UNREACHABLE();
|
| }
|
| - setter = klass.LookupDynamicFunctionAllowPrivate(internal_setter_name);
|
| + setter = klass.LookupDynamicFunction(internal_setter_name);
|
| if (!setter.IsNull()) {
|
| break;
|
| }
|
| @@ -936,8 +949,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invoke, 5) {
|
| Array::Handle(ArgumentsDescriptor::New(args.Length(), arg_names));
|
|
|
| const Function& function = Function::Handle(
|
| - klass.LookupStaticFunctionAllowPrivate(function_name));
|
| -
|
| + klass.LookupStaticFunction(function_name));
|
|
|
| ArgumentsDescriptor args_descriptor(args_descriptor_array);
|
| if (function.IsNull() ||
|
| @@ -975,11 +987,11 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeGetter, 3) {
|
| const String& internal_getter_name = String::Handle(
|
| Field::GetterName(getter_name));
|
| Function& getter = Function::Handle(
|
| - klass.LookupStaticFunctionAllowPrivate(internal_getter_name));
|
| + klass.LookupStaticFunction(internal_getter_name));
|
|
|
| if (getter.IsNull() || !getter.is_visible()) {
|
| if (getter.IsNull()) {
|
| - getter = klass.LookupStaticFunctionAllowPrivate(getter_name);
|
| + getter = klass.LookupStaticFunction(getter_name);
|
| if (!getter.IsNull()) {
|
| // Looking for a getter but found a regular method: closurize.
|
| const Function& closure_function =
|
| @@ -1023,7 +1035,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeSetter, 4) {
|
| const String& internal_setter_name = String::Handle(
|
| Field::SetterName(setter_name));
|
| const Function& setter = Function::Handle(
|
| - klass.LookupStaticFunctionAllowPrivate(internal_setter_name));
|
| + klass.LookupStaticFunction(internal_setter_name));
|
|
|
| if (setter.IsNull() || !setter.is_visible()) {
|
| ThrowNoSuchMethod(AbstractType::Handle(klass.RareType()),
|
| @@ -1084,7 +1096,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeConstructor, 5) {
|
| }
|
|
|
| Function& lookup_constructor = Function::Handle(
|
| - klass.LookupFunctionAllowPrivate(internal_constructor_name));
|
| + klass.LookupFunction(internal_constructor_name));
|
|
|
| if (lookup_constructor.IsNull() ||
|
| !(lookup_constructor.IsConstructor() || lookup_constructor.IsFactory()) ||
|
| @@ -1200,7 +1212,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invoke, 5) {
|
| Array::Handle(ArgumentsDescriptor::New(args.Length(), arg_names));
|
|
|
| const Function& function = Function::Handle(
|
| - library.LookupFunctionAllowPrivate(function_name));
|
| + library.LookupLocalFunction(function_name));
|
|
|
| ArgumentsDescriptor args_descriptor(args_descriptor_array);
|
| if (function.IsNull() ||
|
| @@ -1236,15 +1248,15 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 3) {
|
| // getter Function. The getter function may either be in the
|
| // library or in the field's owner class, depending.
|
| const Field& field = Field::Handle(
|
| - library.LookupFieldAllowPrivate(getter_name));
|
| + library.LookupLocalField(getter_name));
|
| Function& getter = Function::Handle();
|
| if (field.IsNull()) {
|
| // No field found and no ambiguity error. Check for a getter in the lib.
|
| const String& internal_getter_name =
|
| String::Handle(Field::GetterName(getter_name));
|
| - getter = library.LookupFunctionAllowPrivate(internal_getter_name);
|
| + getter = library.LookupLocalFunction(internal_getter_name);
|
| if (getter.IsNull()) {
|
| - getter = library.LookupFunctionAllowPrivate(getter_name);
|
| + getter = library.LookupLocalFunction(getter_name);
|
| if (!getter.IsNull()) {
|
| // Looking for a getter but found a regular method: closurize.
|
| const Function& closure_function =
|
| @@ -1257,7 +1269,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 3) {
|
| const Class& klass = Class::Handle(field.owner());
|
| const String& internal_getter_name =
|
| String::Handle(Field::GetterName(getter_name));
|
| - getter = klass.LookupStaticFunctionAllowPrivate(internal_getter_name);
|
| + getter = klass.LookupStaticFunction(internal_getter_name);
|
| }
|
|
|
| if (!getter.IsNull() && getter.is_visible()) {
|
| @@ -1296,13 +1308,13 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invokeSetter, 4) {
|
| // setter Function. The setter function may either be in the
|
| // library or in the field's owner class, depending.
|
| const Field& field = Field::Handle(
|
| - library.LookupFieldAllowPrivate(setter_name));
|
| + library.LookupLocalField(setter_name));
|
|
|
| if (field.IsNull()) {
|
| const String& internal_setter_name =
|
| String::Handle(Field::SetterName(setter_name));
|
| const Function& setter = Function::Handle(
|
| - library.LookupFunctionAllowPrivate(internal_setter_name));
|
| + library.LookupLocalFunction(internal_setter_name));
|
| if (setter.IsNull() || !setter.is_visible()) {
|
| ThrowNoSuchMethod(Instance::null_instance(),
|
| setter_name,
|
|
|