Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1435)

Unified Diff: src/parsing/parser.cc

Issue 2293803002: Don't reuse the name scope for multiple variables in DoParseLazy (Closed)
Patch Set: updates Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/parsing/parser.cc
diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
index e978f0b6b4ed311c5c55229dbe4ce41f31b12b88..945af996676b88a3ca3492e12b6296d009800760 100644
--- a/src/parsing/parser.cc
+++ b/src/parsing/parser.cc
@@ -670,13 +670,13 @@ FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) {
FunctionLiteral* result = NULL;
{
Scope* outer = original_scope_;
+ DCHECK_NOT_NULL(outer);
// If there's a chance that there's a reference to global 'this', predeclare
// it as a dynamic global on the script scope.
if (outer->GetReceiverScope()->is_script_scope()) {
info->script_scope()->DeclareDynamicGlobal(
ast_value_factory()->this_string(), Variable::THIS);
}
- DCHECK(outer);
if (info->is_eval()) {
if (!outer->is_script_scope() || is_strict(info->language_mode())) {
parsing_mode = PARSE_EAGERLY;
@@ -839,17 +839,17 @@ FunctionLiteral* Parser::DoParseLazy(ParseInfo* info,
{
// Parse the function literal.
- Scope* scope = original_scope_;
- DCHECK(scope);
+ Scope* outer = original_scope_;
+ DCHECK(outer);
// If there's a chance that there's a reference to global 'this', predeclare
// it as a dynamic global on the script scope.
- if (info->is_arrow() && scope->GetReceiverScope()->is_script_scope()) {
+ if (info->is_arrow() && outer->GetReceiverScope()->is_script_scope()) {
info->script_scope()->DeclareDynamicGlobal(
ast_value_factory()->this_string(), Variable::THIS);
}
- FunctionState function_state(&function_state_, &scope_state_, scope,
+ FunctionState function_state(&function_state_, &scope_state_, outer,
info->function_kind());
- DCHECK(is_sloppy(scope->language_mode()) ||
+ DCHECK(is_sloppy(outer->language_mode()) ||
is_strict(info->language_mode()));
FunctionLiteral::FunctionType function_type = ComputeFunctionType(info);
bool ok = true;
@@ -927,7 +927,7 @@ FunctionLiteral* Parser::DoParseLazy(ParseInfo* info,
}
}
} else if (info->is_default_constructor()) {
- DCHECK_EQ(this->scope(), scope);
+ DCHECK_EQ(scope(), outer);
result = DefaultConstructor(
raw_name, IsSubclassConstructor(info->function_kind()),
info->start_position(), info->end_position(), info->language_mode());
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698