Index: src/ast/scopes.cc |
diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc |
index 0032d4aaba9316fb82f9bc8a7720d4c602e416a7..bd57e88f649825d8fa54ac5c7c27755ba3e3c98f 100644 |
--- a/src/ast/scopes.cc |
+++ b/src/ast/scopes.cc |
@@ -171,7 +171,6 @@ void Scope::SetDefaults(ScopeType scope_type, Scope* outer_scope, |
this_function_ = nullptr; |
illegal_redecl_ = nullptr; |
scope_inside_with_ = false; |
- scope_contains_with_ = false; |
scope_calls_eval_ = false; |
scope_uses_arguments_ = false; |
scope_uses_super_property_ = false; |
@@ -210,7 +209,6 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone, |
// Reconstruct the outer scope chain from a closure's context chain. |
Scope* current_scope = NULL; |
Scope* innermost_scope = NULL; |
- bool contains_with = false; |
while (!context->IsNativeContext()) { |
if (context->IsWithContext()) { |
Scope* with_scope = new (zone) |
@@ -218,7 +216,6 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone, |
script_scope->ast_value_factory_); |
current_scope = with_scope; |
// All the inner scopes are inside a with. |
- contains_with = true; |
for (Scope* s = innermost_scope; s != NULL; s = s->outer_scope()) { |
s->scope_inside_with_ = true; |
} |
@@ -252,13 +249,7 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone, |
script_scope->ast_value_factory_->GetString(Handle<String>(name)), |
script_scope->ast_value_factory_); |
} |
- if (contains_with) current_scope->RecordWithStatement(); |
if (innermost_scope == NULL) innermost_scope = current_scope; |
- |
- // Forget about a with when we move to a context for a different function. |
- if (context->previous()->closure() != context->closure()) { |
- contains_with = false; |
- } |
context = context->previous(); |
} |
@@ -392,7 +383,6 @@ void Scope::PropagateUsageFlagsToScope(Scope* other) { |
if (uses_arguments()) other->RecordArgumentsUsage(); |
if (uses_super_property()) other->RecordSuperPropertyUsage(); |
if (calls_eval()) other->RecordEvalCall(); |
- if (scope_contains_with_) other->RecordWithStatement(); |
} |
@@ -982,7 +972,6 @@ void Scope::Print(int n) { |
Indent(n1, "// strict mode scope\n"); |
} |
if (scope_inside_with_) Indent(n1, "// scope inside 'with'\n"); |
- if (scope_contains_with_) Indent(n1, "// scope contains 'with'\n"); |
if (scope_calls_eval_) Indent(n1, "// scope calls 'eval'\n"); |
if (scope_uses_arguments_) Indent(n1, "// scope uses 'arguments'\n"); |
if (scope_uses_super_property_) |
@@ -1254,8 +1243,8 @@ bool Scope::MustAllocate(Variable* var) { |
// visible name. |
if ((var->is_this() || !var->raw_name()->IsEmpty()) && |
(var->has_forced_context_allocation() || scope_calls_eval_ || |
- inner_scope_calls_eval_ || scope_contains_with_ || is_catch_scope() || |
- is_block_scope() || is_module_scope() || is_script_scope())) { |
+ inner_scope_calls_eval_ || is_catch_scope() || is_block_scope() || |
+ is_module_scope() || is_script_scope())) { |
var->set_is_used(); |
if (scope_calls_eval_ || inner_scope_calls_eval_) var->set_maybe_assigned(); |
} |
@@ -1278,10 +1267,8 @@ bool Scope::MustAllocateInContext(Variable* var) { |
if (var->mode() == TEMPORARY) return false; |
if (is_catch_scope() || is_module_scope()) return true; |
if (is_script_scope() && IsLexicalVariableMode(var->mode())) return true; |
- return var->has_forced_context_allocation() || |
- scope_calls_eval_ || |
- inner_scope_calls_eval_ || |
- scope_contains_with_; |
+ return var->has_forced_context_allocation() || scope_calls_eval_ || |
+ inner_scope_calls_eval_; |
} |