| Index: runtime/vm/kernel_to_il.cc
|
| diff --git a/runtime/vm/kernel_to_il.cc b/runtime/vm/kernel_to_il.cc
|
| index a315410cbc799b1997a922536404e94a65a05944..d83f90ea4bfe14cdae97f7f04296c2a629c6156f 100644
|
| --- a/runtime/vm/kernel_to_il.cc
|
| +++ b/runtime/vm/kernel_to_il.cc
|
| @@ -794,9 +794,14 @@ Fragment FlowGraphBuilder::LoadInstantiatorTypeArguments() {
|
| return instructions;
|
| }
|
|
|
| +// KERNEL_GENERIC_METHODS_UNDONE(sjindel): This seems to work for static
|
| +// top-level functions, but probably needs to be revisited when generic methods
|
| +// are fully supported in kernel.
|
| Fragment FlowGraphBuilder::LoadFunctionTypeArguments() {
|
| - UNIMPLEMENTED(); // TODO(regis)
|
| - return Fragment(NULL);
|
| + Fragment instructions;
|
| + ASSERT(parsed_function_->function_type_arguments() != NULL);
|
| + instructions += LoadLocal(parsed_function_->function_type_arguments());
|
| + return instructions;
|
| }
|
|
|
| Fragment FlowGraphBuilder::InstantiateType(const AbstractType& type) {
|
| @@ -1286,11 +1291,11 @@ static intptr_t GetResultCidOfListFactory(Zone* zone,
|
| Fragment FlowGraphBuilder::StaticCall(TokenPosition position,
|
| const Function& target,
|
| intptr_t argument_count,
|
| - const Array& argument_names) {
|
| + const Array& argument_names,
|
| + intptr_t type_args_count) {
|
| ArgumentArray arguments = GetArguments(argument_count);
|
| - const intptr_t kTypeArgsLen = 0; // Generic static calls not yet supported.
|
| StaticCallInstr* call =
|
| - new (Z) StaticCallInstr(position, target, kTypeArgsLen, argument_names,
|
| + new (Z) StaticCallInstr(position, target, type_args_count, argument_names,
|
| arguments, ic_data_array_, GetNextDeoptId());
|
| const intptr_t list_cid =
|
| GetResultCidOfListFactory(Z, target, argument_count);
|
| @@ -1571,6 +1576,14 @@ Value* FlowGraphBuilder::Pop() {
|
| return value;
|
| }
|
|
|
| +intptr_t FlowGraphBuilder::StackDepth() {
|
| + intptr_t depth = 0;
|
| + for (Value* value = stack_; value; value = value->next_use()) {
|
| + ++depth;
|
| + }
|
| + return depth;
|
| +}
|
| +
|
| Fragment FlowGraphBuilder::Drop() {
|
| ASSERT(stack_ != NULL);
|
| Fragment instructions;
|
|
|