| Index: runtime/vm/parser.h
|
| diff --git a/runtime/vm/parser.h b/runtime/vm/parser.h
|
| index 539435b11e45d372a97365d8fb769dd0a7fa8927..a696a2814e9e19fba2629635a918b847b2aa7cfa 100644
|
| --- a/runtime/vm/parser.h
|
| +++ b/runtime/vm/parser.h
|
| @@ -96,6 +96,7 @@ class ParsedFunction : public ZoneAllocated {
|
| node_sequence_(NULL),
|
| regexp_compile_data_(NULL),
|
| instantiator_(NULL),
|
| + function_instantiator_(NULL),
|
| current_context_var_(NULL),
|
| expression_temp_var_(NULL),
|
| finally_return_temp_var_(NULL),
|
| @@ -130,9 +131,16 @@ class ParsedFunction : public ZoneAllocated {
|
|
|
| LocalVariable* instantiator() const { return instantiator_; }
|
| void set_instantiator(LocalVariable* instantiator) {
|
| - // May be NULL.
|
| + ASSERT(instantiator != NULL);
|
| instantiator_ = instantiator;
|
| }
|
| + LocalVariable* function_instantiator() const {
|
| + return function_instantiator_;
|
| + }
|
| + void set_function_instantiator(LocalVariable* function_instantiator) {
|
| + ASSERT(function_instantiator != NULL);
|
| + function_instantiator_ = function_instantiator;
|
| + }
|
|
|
| void set_default_parameter_values(ZoneGrowableArray<const Instance*>* list) {
|
| default_parameter_values_ = list;
|
| @@ -224,6 +232,7 @@ class ParsedFunction : public ZoneAllocated {
|
| SequenceNode* node_sequence_;
|
| RegExpCompileData* regexp_compile_data_;
|
| LocalVariable* instantiator_;
|
| + LocalVariable* function_instantiator_;
|
| LocalVariable* current_context_var_;
|
| LocalVariable* expression_temp_var_;
|
| LocalVariable* finally_return_temp_var_;
|
| @@ -670,7 +679,8 @@ class Parser : public ValueObject {
|
| LocalVariable* LookupTypeArgumentsParameter(LocalScope* from_scope,
|
| bool test_only);
|
| void CaptureInstantiator();
|
| - void CaptureFunctionInstantiator();
|
| + void CaptureFunctionInstantiators();
|
| + void CaptureAllInstantiators();
|
| AstNode* LoadReceiver(TokenPosition token_pos);
|
| AstNode* LoadFieldIfUnresolved(AstNode* node);
|
| AstNode* LoadClosure(PrimaryNode* primary);
|
| @@ -834,6 +844,8 @@ class Parser : public ValueObject {
|
| bool ParsingStaticMember() const;
|
| const AbstractType* ReceiverType(const Class& cls);
|
| bool IsInstantiatorRequired() const;
|
| + bool AreFunctionInstantiatorsRequired() const;
|
| + bool InGenericFunctionScope() const;
|
| bool ResolveIdentInLocalScope(TokenPosition ident_pos,
|
| const String& ident,
|
| AstNode** node,
|
|
|