| Index: src/parsing/preparser.h
 | 
| diff --git a/src/parsing/preparser.h b/src/parsing/preparser.h
 | 
| index 1f822a46c3591e7b6922adf095ac8433b4dcf4ab..77fe061f42a40798847e39f6f17fa80a49d5e9b7 100644
 | 
| --- a/src/parsing/preparser.h
 | 
| +++ b/src/parsing/preparser.h
 | 
| @@ -886,6 +886,9 @@ class PreParser : public ParserBase<PreParser> {
 | 
|                                   bool is_module = false) {
 | 
|      DCHECK_NULL(scope_state_);
 | 
|      DeclarationScope* scope = NewScriptScope();
 | 
| +#ifdef DEBUG
 | 
| +    scope->set_is_being_lazily_parsed(true);
 | 
| +#endif
 | 
|  
 | 
|      // ModuleDeclarationInstantiation for Source Text Module Records creates a
 | 
|      // new Module Environment Record whose outer lexical environment record is
 | 
| @@ -1089,9 +1092,19 @@ class PreParser : public ParserBase<PreParser> {
 | 
|    }
 | 
|  
 | 
|    V8_INLINE PreParserStatement DeclareFunction(
 | 
| -      PreParserIdentifier variable_name, PreParserExpression function, int pos,
 | 
| -      bool is_generator, bool is_async, ZoneList<const AstRawString*>* names,
 | 
| +      PreParserIdentifier variable_name, PreParserExpression function,
 | 
| +      VariableMode mode, int pos, bool is_generator, bool is_async,
 | 
| +      bool is_sloppy_block_function, ZoneList<const AstRawString*>* names,
 | 
|        bool* ok) {
 | 
| +    DCHECK_NULL(names);
 | 
| +    if (variable_name.string_ != nullptr) {
 | 
| +      DCHECK(track_unresolved_variables_);
 | 
| +      scope()->DeclareVariableName(variable_name.string_, mode);
 | 
| +      if (is_sloppy_block_function) {
 | 
| +        GetDeclarationScope()->DeclareSloppyBlockFunction(variable_name.string_,
 | 
| +                                                          scope());
 | 
| +      }
 | 
| +    }
 | 
|      return Statement::Default();
 | 
|    }
 | 
|  
 | 
| @@ -1616,8 +1629,8 @@ PreParserStatementList PreParser::ParseEagerFunctionBody(
 | 
|      FunctionLiteral::FunctionType function_type, bool* ok) {
 | 
|    PreParserStatementList result;
 | 
|  
 | 
| -  Scope* inner_scope = scope();
 | 
| -  if (!parameters.is_simple) inner_scope = NewScope(BLOCK_SCOPE);
 | 
| +  DeclarationScope* inner_scope = scope()->AsDeclarationScope();
 | 
| +  if (!parameters.is_simple) inner_scope = NewVarblockScope();
 | 
|  
 | 
|    {
 | 
|      BlockState block_state(&scope_state_, inner_scope);
 | 
| @@ -1626,6 +1639,10 @@ PreParserStatementList PreParser::ParseEagerFunctionBody(
 | 
|    }
 | 
|  
 | 
|    Expect(Token::RBRACE, ok);
 | 
| +
 | 
| +  if (is_sloppy(inner_scope->language_mode())) {
 | 
| +    inner_scope->HoistSloppyBlockFunctions(nullptr);
 | 
| +  }
 | 
|    return result;
 | 
|  }
 | 
|  
 | 
| 
 |