From b185ed40611d8b5b1a6b8eea7288c28bc5d9b4d8 Mon Sep 17 00:00:00 2001 From: conradw Date: Thu, 17 Sep 2015 02:38:22 -0700 Subject: [PATCH] Fix temp_zone scoping when parsing inner function literals BUG=v8:4392 LOG=Y Review URL: https://codereview.chromium.org/1354523003 Cr-Commit-Position: refs/heads/master@{#30792} --- src/ast.h | 4 ++-- src/parser.cc | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ast.h b/src/ast.h index 34de3e4c74..af82541ec6 100644 --- a/src/ast.h +++ b/src/ast.h @@ -3676,9 +3676,9 @@ class AstNodeFactory final BASE_EMBEDDED { // Handles use of temporary zones when parsing inner function bodies. class BodyScope { public: - BodyScope(AstNodeFactory* factory, Zone* temp_zone, bool can_use_temp_zone) + BodyScope(AstNodeFactory* factory, Zone* temp_zone, bool use_temp_zone) : factory_(factory), prev_zone_(factory->local_zone_) { - if (can_use_temp_zone) { + if (use_temp_zone) { factory->local_zone_ = temp_zone; } } diff --git a/src/parser.cc b/src/parser.cc index 6f51d82e64..3273668828 100644 --- a/src/parser.cc +++ b/src/parser.cc @@ -4224,7 +4224,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral( // FunctionExpression; even without enclosing parentheses it might be // immediately invoked. // - The function literal shouldn't be hinted to eagerly compile. - bool can_use_temp_zone = + bool use_temp_zone = FLAG_lazy && !allow_natives() && extension_ == NULL && allow_lazy() && function_type == FunctionLiteral::DECLARATION && eager_compile_hint != FunctionLiteral::kShouldEagerCompile; @@ -4237,14 +4237,14 @@ FunctionLiteral* Parser::ParseFunctionLiteral( // parser-persistent zone (see parser_zone_ in AstNodeFactory). { Zone temp_zone; - AstNodeFactory::BodyScope(factory(), &temp_zone, can_use_temp_zone); + AstNodeFactory::BodyScope inner(factory(), &temp_zone, use_temp_zone); body = ParseEagerFunctionBody(function_name, pos, formals, kind, function_type, CHECK_OK); } materialized_literal_count = function_state.materialized_literal_count(); expected_property_count = function_state.expected_property_count(); - if (can_use_temp_zone) { + if (use_temp_zone) { // If the preconditions are correct the function body should never be // accessed, but do this anyway for better behaviour if they're wrong. body = NULL;