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, |