| Index: src/parsing/parser.h | 
| diff --git a/src/parsing/parser.h b/src/parsing/parser.h | 
| index af4aa1013ac7c5dc165a5417a41907bd96621b45..f2fb7d3cae50806d0a1d55f5435cff87a151f446 100644 | 
| --- a/src/parsing/parser.h | 
| +++ b/src/parsing/parser.h | 
| @@ -824,6 +824,20 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { | 
| } | 
| } | 
|  | 
| +  // Pessimistically assume that top-level variables will be assigned. | 
| +  // | 
| +  // Top-level variables in a script can be accessed by other scripts or even | 
| +  // become global properties. While this does not apply to top-level variables | 
| +  // in a module (assuming they are not exported), we must still mark these as | 
| +  // assigned because they might be accessed by a lazily parsed top-level | 
| +  // function, which, for efficiency, we preparse without variable tracking. | 
| +  V8_INLINE static void MarkTopLevelVariableAsAssigned(Scope* scope, | 
| +                                                       VariableProxy* proxy) { | 
| +    if (scope->is_script_scope() || scope->is_module_scope()) { | 
| +      proxy->set_is_assigned(); | 
| +    } | 
| +  } | 
| + | 
| // Returns true if we have a binary expression between two numeric | 
| // literals. In that case, *x will be changed to an expression which is the | 
| // computed value. | 
|  |