| 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.
|
|
|