Fix temp_zone scoping when parsing inner function literals
authorconradw <conradw@chromium.org>
Thu, 17 Sep 2015 09:38:22 +0000 (02:38 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 17 Sep 2015 09:38:33 +0000 (09:38 +0000)
BUG=v8:4392
LOG=Y

Review URL: https://codereview.chromium.org/1354523003

Cr-Commit-Position: refs/heads/master@{#30792}

src/ast.h
src/parser.cc

index 34de3e4c74b5e876b395f136f8ee4379f605a0b3..af82541ec668e60bcd4098da1c10ea39d4c9af5f 100644 (file)
--- 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;
       }
     }
index 6f51d82e643d3e94625bc0505255f173c05efdac..32736688287addff1ff9c0f68badf8c3db88d14f 100644 (file)
@@ -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;