Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 2961a1aeb8e4e52ff0fadd8c1bbc4e6430ea4c0c..6ba59f3e06f09e871b7a8f7caf2ad9272f139d3f 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -519,6 +519,7 @@ void ParserTraits::CheckPossibleEvalCall(Expression* expression, |
if (callee != NULL && |
callee->raw_name() == parser_->ast_value_factory()->eval_string()) { |
scope->DeclarationScope()->RecordEvalCall(); |
+ scope->RecordEvalCall(); |
} |
} |
@@ -3329,8 +3330,8 @@ Statement* Parser::DesugarLexicalBindingsInForStatement( |
clear_first = |
factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition); |
} |
- Statement* clear_first_or_next = |
- factory()->NewIfStatement(compare, clear_first, next, next->position()); |
+ Statement* clear_first_or_next = factory()->NewIfStatement( |
+ compare, clear_first, next, RelocInfo::kNoPosition); |
inner_block->AddStatement(clear_first_or_next, zone()); |
} |
@@ -4038,6 +4039,10 @@ FunctionLiteral* Parser::ParseFunctionLiteral( |
parenthesized_function_ = false; // The bit was set for this function only. |
if (is_lazily_parsed) { |
+ for (Scope* s = scope_->outer_scope(); |
+ s != nullptr && (s != s->DeclarationScope()); s = s->outer_scope()) { |
+ s->ForceContextAllocation(); |
+ } |
SkipLazyFunctionBody(&materialized_literal_count, |
&expected_property_count, CHECK_OK); |
} else { |