| Index: src/parsing/parser-base.h | 
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h | 
| index 9ea328daf9fd32e3f1158adbc4338549c7a072bf..d430297c28ca276847e256a0edff5769eda445e9 100644 | 
| --- a/src/parsing/parser-base.h | 
| +++ b/src/parsing/parser-base.h | 
| @@ -3922,6 +3922,12 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( | 
| FunctionKind kind = formal_parameters.scope->function_kind(); | 
| FunctionLiteral::EagerCompileHint eager_compile_hint = | 
| default_eager_compile_hint_; | 
| +  bool can_preparse = mode() == PARSE_LAZILY && | 
| +                      eager_compile_hint == FunctionLiteral::kShouldLazyCompile; | 
| +  // TODO(marja): consider lazy-parsing inner arrow functions too. is_this | 
| +  // handling in Scope::ResolveVariable needs to change. | 
| +  bool is_lazy_top_level_function = | 
| +      can_preparse && scope()->AllowsLazyParsingWithoutUnresolvedVariables(); | 
| bool should_be_used_once_hint = false; | 
| { | 
| FunctionState function_state(&function_state_, &scope_state_, | 
| @@ -3938,14 +3944,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( | 
| // Multiple statement body | 
| Consume(Token::LBRACE); | 
| DCHECK_EQ(scope(), formal_parameters.scope); | 
| -      bool is_lazily_parsed = | 
| -          (mode() == PARSE_LAZILY && | 
| -           formal_parameters.scope | 
| -               ->AllowsLazyParsingWithoutUnresolvedVariables() && | 
| -           eager_compile_hint == FunctionLiteral::kShouldLazyCompile); | 
| -      // TODO(marja): consider lazy-parsing inner arrow functions too. is_this | 
| -      // handling in Scope::ResolveVariable needs to change. | 
| -      if (is_lazily_parsed) { | 
| +      if (is_lazy_top_level_function) { | 
| Scanner::BookmarkScope bookmark(scanner()); | 
| bookmark.Set(); | 
| LazyParsingResult result = impl()->SkipLazyFunctionBody( | 
| @@ -3962,7 +3961,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( | 
| if (result == kLazyParsingAborted) { | 
| bookmark.Apply(); | 
| // Trigger eager (re-)parsing, just below this block. | 
| -          is_lazily_parsed = false; | 
| +          is_lazy_top_level_function = false; | 
|  | 
| // This is probably an initialization function. Inform the compiler it | 
| // should also eager-compile this function, and that we expect it to | 
| @@ -3971,7 +3970,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( | 
| should_be_used_once_hint = true; | 
| } | 
| } | 
| -      if (!is_lazily_parsed) { | 
| +      if (!is_lazy_top_level_function) { | 
| body = impl()->ParseEagerFunctionBody( | 
| impl()->EmptyIdentifier(), kNoSourcePosition, formal_parameters, | 
| kind, FunctionLiteral::kAnonymousExpression, CHECK_OK); | 
|  |