| Index: runtime/vm/parser.h
|
| ===================================================================
|
| --- runtime/vm/parser.h (revision 41393)
|
| +++ runtime/vm/parser.h (working copy)
|
| @@ -44,7 +44,7 @@
|
| node_sequence_(NULL),
|
| instantiator_(NULL),
|
| default_parameter_values_(Array::ZoneHandle(isolate, Array::null())),
|
| - saved_current_context_var_(NULL),
|
| + current_context_var_(NULL),
|
| saved_entry_context_var_(NULL),
|
| expression_temp_var_(NULL),
|
| finally_return_temp_var_(NULL),
|
| @@ -58,6 +58,13 @@
|
| async_saved_try_ctx_name_(String::ZoneHandle(isolate, String::null())),
|
| isolate_(isolate) {
|
| ASSERT(function.IsZoneHandle());
|
| + // Every function has a local variable for the current context.
|
| + LocalVariable* temp = new(isolate) LocalVariable(
|
| + function.token_pos(),
|
| + Symbols::CurrentContextVar(),
|
| + Type::ZoneHandle(isolate, Type::DynamicType()));
|
| + ASSERT(temp != NULL);
|
| + current_context_var_ = temp;
|
| }
|
|
|
| const Function& function() const { return function_; }
|
| @@ -81,16 +88,9 @@
|
| default_parameter_values_ = default_parameter_values.raw();
|
| }
|
|
|
| - LocalVariable* saved_current_context_var() const {
|
| - return saved_current_context_var_;
|
| + LocalVariable* current_context_var() const {
|
| + return current_context_var_;
|
| }
|
| - void set_saved_current_context_var(LocalVariable* saved_current_context_var) {
|
| - ASSERT(saved_current_context_var != NULL);
|
| - saved_current_context_var_ = saved_current_context_var;
|
| - }
|
| - bool has_saved_current_context_var() const {
|
| - return saved_current_context_var_ != NULL;
|
| - }
|
|
|
| LocalVariable* saved_entry_context_var() const {
|
| return saved_entry_context_var_;
|
| @@ -125,7 +125,6 @@
|
| }
|
| void EnsureFinallyReturnTemp();
|
|
|
| - static LocalVariable* CreateExpressionTempVar(intptr_t token_pos);
|
| LocalVariable* EnsureExpressionTemp();
|
|
|
| bool HasDeferredPrefixes() const { return deferred_prefixes_->length() != 0; }
|
| @@ -173,7 +172,7 @@
|
| SequenceNode* node_sequence_;
|
| LocalVariable* instantiator_;
|
| Array& default_parameter_values_;
|
| - LocalVariable* saved_current_context_var_;
|
| + LocalVariable* current_context_var_;
|
| LocalVariable* saved_entry_context_var_;
|
| LocalVariable* expression_temp_var_;
|
| LocalVariable* finally_return_temp_var_;
|
| @@ -734,7 +733,6 @@
|
| void CheckOperatorArity(const MemberDesc& member);
|
|
|
| void EnsureExpressionTemp();
|
| - void EnsureSavedCurrentContext();
|
| bool IsLegalAssignableSyntax(AstNode* expr, intptr_t end_pos);
|
| AstNode* CreateAssignmentNode(AstNode* original,
|
| AstNode* rhs,
|
|
|