| Index: runtime/lib/mirrors.cc
|
| diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
|
| index 01d97cdc116ffbb0f5fcad9b1fa995844d1e72de..7a1194b6826969e8ae8fbdec4d8a0f12c86125c2 100644
|
| --- a/runtime/lib/mirrors.cc
|
| +++ b/runtime/lib/mirrors.cc
|
| @@ -1300,26 +1300,26 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 5) {
|
| GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
|
|
|
| Class& klass = Class::Handle(reflectee.clazz());
|
| - Function& function = Function::Handle(
|
| - Resolver::ResolveDynamicAnyArgs(klass, function_name));
|
| + Function& function = Function::Handle(zone,
|
| + Resolver::ResolveDynamicAnyArgs(zone, klass, function_name));
|
|
|
| const Array& args_descriptor =
|
| - Array::Handle(ArgumentsDescriptor::New(args.Length(), arg_names));
|
| + Array::Handle(zone, ArgumentsDescriptor::New(args.Length(), arg_names));
|
|
|
| if (function.IsNull()) {
|
| // Didn't find a method: try to find a getter and invoke call on its result.
|
| const String& getter_name =
|
| - String::Handle(Field::GetterName(function_name));
|
| - function = Resolver::ResolveDynamicAnyArgs(klass, getter_name);
|
| + String::Handle(zone, Field::GetterName(function_name));
|
| + function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
|
| if (!function.IsNull()) {
|
| ASSERT(function.kind() != RawFunction::kMethodExtractor);
|
| // Invoke the getter.
|
| const int kNumArgs = 1;
|
| - const Array& getter_args = Array::Handle(Array::New(kNumArgs));
|
| + const Array& getter_args = Array::Handle(zone, Array::New(kNumArgs));
|
| getter_args.SetAt(0, reflectee);
|
| const Array& getter_args_descriptor =
|
| - Array::Handle(ArgumentsDescriptor::New(getter_args.Length()));
|
| - const Instance& getter_result = Instance::Handle(
|
| + Array::Handle(zone, ArgumentsDescriptor::New(getter_args.Length()));
|
| + const Instance& getter_result = Instance::Handle(zone,
|
| InvokeDynamicFunction(reflectee,
|
| function,
|
| getter_name,
|
| @@ -1329,7 +1329,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 5) {
|
| args.SetAt(0, getter_result);
|
| // Call the closure.
|
| const Object& call_result =
|
| - Object::Handle(DartEntry::InvokeClosure(args, args_descriptor));
|
| + Object::Handle(zone, DartEntry::InvokeClosure(args, args_descriptor));
|
| if (call_result.IsError()) {
|
| Exceptions::PropagateError(Error::Cast(call_result));
|
| UNREACHABLE();
|
| @@ -1357,24 +1357,24 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 3) {
|
|
|
| const String& internal_getter_name = String::Handle(
|
| Field::GetterName(getter_name));
|
| - Function& function = Function::Handle(
|
| - Resolver::ResolveDynamicAnyArgs(klass, internal_getter_name));
|
| + Function& function = Function::Handle(zone,
|
| + Resolver::ResolveDynamicAnyArgs(zone, klass, internal_getter_name));
|
|
|
| // Check for method extraction when method extractors are not created.
|
| if (function.IsNull() && !FLAG_lazy_dispatchers) {
|
| - function = Resolver::ResolveDynamicAnyArgs(klass, getter_name);
|
| + function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
|
| if (!function.IsNull()) {
|
| const Function& closure_function =
|
| - Function::Handle(function.ImplicitClosureFunction());
|
| + Function::Handle(zone, function.ImplicitClosureFunction());
|
| return closure_function.ImplicitInstanceClosure(reflectee);
|
| }
|
| }
|
|
|
| const int kNumArgs = 1;
|
| - const Array& args = Array::Handle(Array::New(kNumArgs));
|
| + const Array& args = Array::Handle(zone, Array::New(kNumArgs));
|
| args.SetAt(0, reflectee);
|
| const Array& args_descriptor =
|
| - Array::Handle(ArgumentsDescriptor::New(args.Length()));
|
| + Array::Handle(zone, ArgumentsDescriptor::New(args.Length()));
|
|
|
| // InvokeDynamic invokes NoSuchMethod if the provided function is null.
|
| return InvokeDynamicFunction(reflectee,
|
| @@ -1393,18 +1393,18 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 4) {
|
| GET_NON_NULL_NATIVE_ARGUMENT(String, setter_name, arguments->NativeArgAt(2));
|
| GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(3));
|
|
|
| - const Class& klass = Class::Handle(reflectee.clazz());
|
| + const Class& klass = Class::Handle(zone, reflectee.clazz());
|
| const String& internal_setter_name =
|
| - String::Handle(Field::SetterName(setter_name));
|
| - const Function& setter = Function::Handle(
|
| - Resolver::ResolveDynamicAnyArgs(klass, internal_setter_name));
|
| + String::Handle(zone, Field::SetterName(setter_name));
|
| + const Function& setter = Function::Handle(zone,
|
| + Resolver::ResolveDynamicAnyArgs(zone, klass, internal_setter_name));
|
|
|
| const int kNumArgs = 2;
|
| - const Array& args = Array::Handle(Array::New(kNumArgs));
|
| + const Array& args = Array::Handle(zone, Array::New(kNumArgs));
|
| args.SetAt(0, reflectee);
|
| args.SetAt(1, value);
|
| const Array& args_descriptor =
|
| - Array::Handle(ArgumentsDescriptor::New(args.Length()));
|
| + Array::Handle(zone, ArgumentsDescriptor::New(args.Length()));
|
|
|
| return InvokeDynamicFunction(reflectee,
|
| setter,
|
|
|