Index: vm/parser.cc |
=================================================================== |
--- vm/parser.cc (revision 16285) |
+++ vm/parser.cc (working copy) |
@@ -7844,7 +7844,6 @@ |
const String& getter_name = |
String::Handle(Field::GetterName(field_name)); |
const Class& cls = Class::Handle(field.owner()); |
- GrowableArray<const Object*> arguments; // no arguments. |
const int kNumArguments = 0; // no arguments. |
const Array& kNoArgumentNames = Array::Handle(); |
const Function& func = |
@@ -7855,8 +7854,8 @@ |
Resolver::kIsQualified)); |
ASSERT(!func.IsNull()); |
ASSERT(func.kind() == RawFunction::kConstImplicitGetter); |
- Object& const_value = Object::Handle( |
- DartEntry::InvokeStatic(func, arguments, kNoArgumentNames)); |
+ const Array& args = Array::Handle(Object::empty_array()); |
+ Object& const_value = Object::Handle(DartEntry::InvokeStatic(func, args)); |
if (const_value.IsError()) { |
const Error& error = Error::Cast(const_value); |
if (error.IsUnhandledException()) { |
@@ -7894,8 +7893,9 @@ |
const AbstractTypeArguments& type_arguments, |
const Function& constructor, |
ArgumentListNode* arguments) { |
- // +2 for implicit receiver and construction phase arguments. |
- GrowableArray<const Object*> arg_values(arguments->length() + 2); |
+ const int kNumExtraArgs = 2; // implicit rcvr and construction phase args. |
+ const int num_arguments = arguments->length() + kNumExtraArgs; |
+ const Array& arg_values = Array::Handle(Array::New(num_arguments)); |
Instance& instance = Instance::Handle(); |
ASSERT(!constructor.IsFactory()); |
instance = Instance::New(type_class, Heap::kOld); |
@@ -7906,17 +7906,21 @@ |
instance.SetTypeArguments( |
AbstractTypeArguments::Handle(type_arguments.Canonicalize())); |
} |
- arg_values.Add(&instance); |
- arg_values.Add(&Smi::ZoneHandle(Smi::New(Function::kCtorPhaseAll))); |
+ arg_values.SetAt(0, instance); |
+ arg_values.SetAt(1, Smi::Handle(Smi::New(Function::kCtorPhaseAll))); |
for (int i = 0; i < arguments->length(); i++) { |
AstNode* arg = arguments->NodeAt(i); |
// Arguments have been evaluated to a literal value already. |
ASSERT(arg->IsLiteralNode()); |
- arg_values.Add(&arg->AsLiteralNode()->literal()); |
+ arg_values.SetAt((i + kNumExtraArgs), arg->AsLiteralNode()->literal()); |
} |
- const Array& opt_arg_names = arguments->names(); |
- const Object& result = Object::Handle( |
- DartEntry::InvokeStatic(constructor, arg_values, opt_arg_names)); |
+ const Array& arg_descriptor = |
+ Array::Handle(ArgumentsDescriptor::New(num_arguments, |
+ arguments->names())); |
+ const Object& result = |
+ Object::Handle(DartEntry::InvokeStatic(constructor, |
+ arg_values, |
+ arg_descriptor)); |
if (result.IsError()) { |
if (result.IsUnhandledException()) { |
return result.raw(); |
@@ -9116,15 +9120,12 @@ |
} |
// Build argument array to pass to the interpolation function. |
- GrowableArray<const Object*> interpolate_arg; |
- interpolate_arg.Add(&value_arr); |
- const Array& kNoArgumentNames = Array::Handle(); |
+ const Array& interpolate_arg = Array::Handle(Array::New(1)); |
+ interpolate_arg.SetAt(0, value_arr); |
// Call interpolation function. |
String& concatenated = String::ZoneHandle(); |
- concatenated ^= DartEntry::InvokeStatic(func, |
- interpolate_arg, |
- kNoArgumentNames); |
+ concatenated ^= DartEntry::InvokeStatic(func, interpolate_arg); |
if (concatenated.IsUnhandledException()) { |
ErrorMsg("Exception thrown in Parser::Interpolate"); |
} |