Index: runtime/lib/function.cc |
diff --git a/runtime/lib/function.cc b/runtime/lib/function.cc |
index 8ba93bafaa59c0c14ee02d4321c58a8c94558f7d..c1c141c5c4e73ac444964875fbe7daa617333a32 100644 |
--- a/runtime/lib/function.cc |
+++ b/runtime/lib/function.cc |
@@ -14,12 +14,16 @@ |
namespace dart { |
DEFINE_NATIVE_ENTRY(Function_apply, 2) { |
- const Array& fun_arguments = Array::CheckedHandle(arguments->NativeArgAt(0)); |
- const Array& fun_arg_names = Array::CheckedHandle(arguments->NativeArgAt(1)); |
+ const int kTypeArgsLen = 0; // TODO(regis): Add support for generic function. |
+ const Array& fun_arguments = |
+ Array::CheckedHandle(zone, arguments->NativeArgAt(0)); |
+ const Array& fun_arg_names = |
+ Array::CheckedHandle(zone, arguments->NativeArgAt(1)); |
const Array& fun_args_desc = Array::Handle( |
- ArgumentsDescriptor::New(fun_arguments.Length(), fun_arg_names)); |
- const Object& result = |
- Object::Handle(DartEntry::InvokeClosure(fun_arguments, fun_args_desc)); |
+ zone, ArgumentsDescriptor::New(kTypeArgsLen, fun_arguments.Length(), |
+ fun_arg_names)); |
+ const Object& result = Object::Handle( |
+ zone, DartEntry::InvokeClosure(fun_arguments, fun_args_desc)); |
if (result.IsError()) { |
Exceptions::PropagateError(Error::Cast(result)); |
} |
@@ -34,26 +38,27 @@ DEFINE_NATIVE_ENTRY(Closure_equals, 2) { |
ASSERT(!other.IsNull()); |
if (receiver.raw() == other.raw()) return Bool::True().raw(); |
if (other.IsClosure()) { |
- const Function& func_a = Function::Handle(receiver.function()); |
- const Function& func_b = Function::Handle(Closure::Cast(other).function()); |
+ const Function& func_a = Function::Handle(zone, receiver.function()); |
+ const Function& func_b = |
+ Function::Handle(zone, Closure::Cast(other).function()); |
if (func_a.raw() == func_b.raw()) { |
ASSERT(!func_a.IsImplicitStaticClosureFunction()); |
if (func_a.IsImplicitInstanceClosureFunction()) { |
- const Context& context_a = Context::Handle(receiver.context()); |
+ const Context& context_a = Context::Handle(zone, receiver.context()); |
const Context& context_b = |
- Context::Handle(Closure::Cast(other).context()); |
- const Object& receiver_a = Object::Handle(context_a.At(0)); |
- const Object& receiver_b = Object::Handle(context_b.At(0)); |
+ Context::Handle(zone, Closure::Cast(other).context()); |
+ const Object& receiver_a = Object::Handle(zone, context_a.At(0)); |
+ const Object& receiver_b = Object::Handle(zone, context_b.At(0)); |
if (receiver_a.raw() == receiver_b.raw()) return Bool::True().raw(); |
} |
} else if (func_a.IsImplicitInstanceClosureFunction() && |
func_b.IsImplicitInstanceClosureFunction()) { |
// TODO(rmacnak): Patch existing tears off during reload instead. |
- const Context& context_a = Context::Handle(receiver.context()); |
+ const Context& context_a = Context::Handle(zone, receiver.context()); |
const Context& context_b = |
- Context::Handle(Closure::Cast(other).context()); |
- const Object& receiver_a = Object::Handle(context_a.At(0)); |
- const Object& receiver_b = Object::Handle(context_b.At(0)); |
+ Context::Handle(zone, Closure::Cast(other).context()); |
+ const Object& receiver_a = Object::Handle(zone, context_a.At(0)); |
+ const Object& receiver_b = Object::Handle(zone, context_b.At(0)); |
if ((receiver_a.raw() == receiver_b.raw()) && |
(func_a.name() == func_b.name()) && |
(func_a.Owner() == func_b.Owner())) { |
@@ -68,7 +73,7 @@ DEFINE_NATIVE_ENTRY(Closure_equals, 2) { |
DEFINE_NATIVE_ENTRY(Closure_hashCode, 1) { |
const Closure& receiver = |
Closure::CheckedHandle(zone, arguments->NativeArgAt(0)); |
- const Function& func = Function::Handle(receiver.function()); |
+ const Function& func = Function::Handle(zone, receiver.function()); |
return func.GetClosureHashCode(); |
} |