Chromium Code Reviews| Index: src/ast/scopes.cc | 
| diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc | 
| index 417345a5ef8b6ae33969c54126d16c98d5d4188d..63f9b5ddc3acc9b996f52f04800ef055aa54b78b 100644 | 
| --- a/src/ast/scopes.cc | 
| +++ b/src/ast/scopes.cc | 
| @@ -91,7 +91,6 @@ Scope::Scope(Zone* zone, Scope* outer_scope, ScopeType scope_type) | 
| force_context_allocation_ = | 
| !is_function_scope() && outer_scope->has_forced_context_allocation(); | 
| outer_scope_->AddInnerScope(this); | 
| - scope_inside_with_ = outer_scope_->scope_inside_with_ || is_with_scope(); | 
| } | 
| } | 
| @@ -208,7 +207,6 @@ void Scope::SetDefaults() { | 
| set_language_mode(SLOPPY); | 
| - scope_inside_with_ = false; | 
| scope_calls_eval_ = false; | 
| scope_uses_super_property_ = false; | 
| has_arguments_parameter_ = false; | 
| @@ -256,10 +254,6 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone, | 
| with_scope->set_is_debug_evaluate_scope(); | 
| } | 
| current_scope = with_scope; | 
| - // All the inner scopes are inside a with. | 
| - for (Scope* s = innermost_scope; s != nullptr; s = s->outer_scope()) { | 
| - s->scope_inside_with_ = true; | 
| - } | 
| } else if (context->IsScriptContext()) { | 
| Handle<ScopeInfo> scope_info(context->scope_info(), isolate); | 
| current_scope = new (zone) | 
| @@ -886,7 +880,7 @@ bool Scope::HasTrivialContext() const { | 
| // return true. | 
| for (const Scope* scope = this; scope != NULL; scope = scope->outer_scope_) { | 
| if (scope->is_eval_scope()) return false; | 
| - if (scope->scope_inside_with_) return false; | 
| + if (scope->InsideWithScope()) return false; | 
| if (scope->ContextLocalCount() > 0) return false; | 
| if (scope->ContextGlobalCount() > 0) return false; | 
| } | 
| @@ -895,12 +889,11 @@ bool Scope::HasTrivialContext() const { | 
| bool Scope::HasTrivialOuterContext() const { | 
| - Scope* outer = outer_scope_; | 
| - if (outer == NULL) return true; | 
| + if (outer_scope_ == nullptr) return true; | 
| // Note that the outer context may be trivial in general, but the current | 
| // scope may be inside a 'with' statement in which case the outer context | 
| // for this scope is not trivial. | 
| - return !scope_inside_with_ && outer->HasTrivialContext(); | 
| + return !is_with_scope() && outer_scope_->HasTrivialContext(); | 
| 
 
neis
2016/08/19 14:33:41
Now the code doesn't quite match the comment anymo
 
Toon Verwaest
2016/08/19 18:00:35
I'll do so in a follow-up
 
 | 
| } | 
| @@ -1171,7 +1164,6 @@ void Scope::Print(int n) { | 
| } | 
| if (IsAsmModule()) Indent(n1, "// scope is an asm module\n"); | 
| if (IsAsmFunction()) Indent(n1, "// scope is an asm function\n"); | 
| - if (scope_inside_with_) Indent(n1, "// scope inside 'with'\n"); | 
| if (scope_calls_eval_) Indent(n1, "// scope calls 'eval'\n"); | 
| if (scope_uses_super_property_) | 
| Indent(n1, "// scope uses 'super' property\n"); |