| Index: runtime/vm/kernel_to_il.cc
|
| diff --git a/runtime/vm/kernel_to_il.cc b/runtime/vm/kernel_to_il.cc
|
| index 1130320dcf1afbdfa98ba157d685267494722cf6..e55dc92fa80cf9da87571ddea51f6b85ba098daf 100644
|
| --- a/runtime/vm/kernel_to_il.cc
|
| +++ b/runtime/vm/kernel_to_il.cc
|
| @@ -1561,6 +1561,7 @@ RawObject* ConstantEvaluator::EvaluateConstConstructorCall(
|
| const Object& argument) {
|
| // Factories have one extra argument: the type arguments.
|
| // Constructors have 1 extra arguments: receiver.
|
| + const int kTypeArgsLen = 0;
|
| const int kNumArgs = 1;
|
| const int kNumExtraArgs = 1;
|
| const int num_arguments = kNumArgs + kNumExtraArgs;
|
| @@ -1581,8 +1582,9 @@ RawObject* ConstantEvaluator::EvaluateConstConstructorCall(
|
| arg_values.SetAt(0, type_arguments);
|
| }
|
| arg_values.SetAt((0 + kNumExtraArgs), argument);
|
| - const Array& args_descriptor = Array::Handle(
|
| - Z, ArgumentsDescriptor::New(num_arguments, Object::empty_array()));
|
| + const Array& args_descriptor =
|
| + Array::Handle(Z, ArgumentsDescriptor::New(kTypeArgsLen, num_arguments,
|
| + Object::empty_array()));
|
| const Object& result = Object::Handle(
|
| Z, DartEntry::InvokeFunction(constructor, arg_values, args_descriptor));
|
| ASSERT(!result.IsError());
|
| @@ -1995,8 +1997,9 @@ const Object& ConstantEvaluator::RunFunction(const Function& function,
|
| const Object& ConstantEvaluator::RunFunction(const Function& function,
|
| const Array& arguments,
|
| const Array& names) {
|
| - const Array& args_descriptor =
|
| - Array::Handle(Z, ArgumentsDescriptor::New(arguments.Length(), names));
|
| + const int kTypeArgsLen = 0; // Generic functions not yet supported.
|
| + const Array& args_descriptor = Array::Handle(
|
| + Z, ArgumentsDescriptor::New(kTypeArgsLen, arguments.Length(), names));
|
| const Object& result = Object::Handle(
|
| Z, DartEntry::InvokeFunction(function, arguments, args_descriptor));
|
| if (result.IsError()) {
|
| @@ -2532,9 +2535,10 @@ Fragment FlowGraphBuilder::InstanceCall(TokenPosition position,
|
| const Array& argument_names,
|
| intptr_t num_args_checked) {
|
| ArgumentArray arguments = GetArguments(argument_count);
|
| - InstanceCallInstr* call =
|
| - new (Z) InstanceCallInstr(position, name, kind, arguments, argument_names,
|
| - num_args_checked, ic_data_array_);
|
| + const intptr_t kTypeArgsLen = 0; // Generic instance calls not yet supported.
|
| + InstanceCallInstr* call = new (Z)
|
| + InstanceCallInstr(position, name, kind, arguments, kTypeArgsLen,
|
| + argument_names, num_args_checked, ic_data_array_);
|
| Push(call);
|
| return Fragment(call);
|
| }
|
| @@ -2544,8 +2548,10 @@ Fragment FlowGraphBuilder::ClosureCall(int argument_count,
|
| const Array& argument_names) {
|
| Value* function = Pop();
|
| ArgumentArray arguments = GetArguments(argument_count);
|
| - ClosureCallInstr* call = new (Z) ClosureCallInstr(
|
| - function, arguments, argument_names, TokenPosition::kNoSource);
|
| + const intptr_t kTypeArgsLen = 0; // Generic closures not yet supported.
|
| + ClosureCallInstr* call =
|
| + new (Z) ClosureCallInstr(function, arguments, kTypeArgsLen,
|
| + argument_names, TokenPosition::kNoSource);
|
| Push(call);
|
| return Fragment(call);
|
| }
|
| @@ -2758,8 +2764,10 @@ Fragment FlowGraphBuilder::StaticCall(TokenPosition position,
|
| intptr_t argument_count,
|
| const Array& argument_names) {
|
| ArgumentArray arguments = GetArguments(argument_count);
|
| - StaticCallInstr* call = new (Z) StaticCallInstr(
|
| - position, target, argument_names, arguments, ic_data_array_);
|
| + const intptr_t kTypeArgsLen = 0; // Generic static calls not yet supported.
|
| + StaticCallInstr* call =
|
| + new (Z) StaticCallInstr(position, target, kTypeArgsLen, argument_names,
|
| + arguments, ic_data_array_);
|
| const intptr_t list_cid =
|
| GetResultCidOfListFactory(Z, target, argument_count);
|
| if (list_cid != kDynamicCid) {
|
| @@ -2880,15 +2888,17 @@ Fragment FlowGraphBuilder::StringInterpolate(TokenPosition position) {
|
|
|
|
|
| Fragment FlowGraphBuilder::StringInterpolateSingle(TokenPosition position) {
|
| + const int kTypeArgsLen = 0;
|
| const int kNumberOfArguments = 1;
|
| const Array& kNoArgumentNames = Object::null_array();
|
| const dart::Class& cls = dart::Class::Handle(
|
| dart::Library::LookupCoreClass(Symbols::StringBase()));
|
| ASSERT(!cls.IsNull());
|
| const Function& function = Function::ZoneHandle(
|
| - Z, Resolver::ResolveStatic(cls, dart::Library::PrivateCoreLibName(
|
| - Symbols::InterpolateSingle()),
|
| - kNumberOfArguments, kNoArgumentNames));
|
| + Z,
|
| + Resolver::ResolveStatic(
|
| + cls, dart::Library::PrivateCoreLibName(Symbols::InterpolateSingle()),
|
| + kTypeArgsLen, kNumberOfArguments, kNoArgumentNames));
|
| Fragment instructions;
|
| instructions += PushArgument();
|
| instructions += StaticCall(position, function, 1);
|
| @@ -4054,6 +4064,8 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfNoSuchMethodDispatcher(
|
| Fragment body(normal_entry);
|
| body += CheckStackOverflowInPrologue();
|
|
|
| + // TODO(regis): Check if a type argument vector is passed.
|
| +
|
| // The receiver is the first argument to noSuchMethod, and it is the first
|
| // argument passed to the dispatcher function.
|
| LocalScope* scope = parsed_function_->node_sequence()->scope();
|
| @@ -4109,8 +4121,9 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfNoSuchMethodDispatcher(
|
| body += StaticCall(TokenPosition::kMinSource, allocation_function, 4);
|
| body += PushArgument(); // For the call to noSuchMethod.
|
|
|
| + const int kTypeArgsLen = 0;
|
| ArgumentsDescriptor two_arguments(
|
| - Array::Handle(Z, ArgumentsDescriptor::New(2)));
|
| + Array::Handle(Z, ArgumentsDescriptor::New(kTypeArgsLen, 2)));
|
| Function& no_such_method =
|
| Function::ZoneHandle(Z, Resolver::ResolveDynamicForReceiverClass(
|
| dart::Class::Handle(Z, function.Owner()),
|
| @@ -5017,7 +5030,9 @@ void FlowGraphBuilder::VisitStaticInvocation(StaticInvocation* node) {
|
| const Array& argument_names = H.ArgumentNames(&named);
|
|
|
| // The frontend ensures we the [StaticInvocation] has matching arguments.
|
| - ASSERT(target.AreValidArguments(argument_count, argument_names, NULL));
|
| + const intptr_t kTypeArgsLen = 0; // Generic functions not yet supported.
|
| + ASSERT(target.AreValidArguments(kTypeArgsLen, argument_count, argument_names,
|
| + NULL));
|
|
|
| Fragment instructions;
|
| LocalVariable* instance_variable = NULL;
|
|
|