| Index: src/parsing/parser.cc
|
| diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
|
| index 8dcd92beb80ed44cb0b9f7fc853a755fbcffee1f..799c7b9616f1accbccc53be72aafcb769f8404b7 100644
|
| --- a/src/parsing/parser.cc
|
| +++ b/src/parsing/parser.cc
|
| @@ -603,19 +603,19 @@ Parser::Parser(ParseInfo* info)
|
| }
|
| }
|
|
|
| -void Parser::DeserializeScopeChain(ParseInfo* info,
|
| - MaybeHandle<Context> maybe_context) {
|
| +void Parser::DeserializeScopeChain(
|
| + ParseInfo* info, MaybeHandle<ScopeInfo> maybe_outer_scope_info) {
|
| DCHECK(ThreadId::Current().Equals(info->isolate()->thread_id()));
|
| // TODO(wingo): Add an outer SCRIPT_SCOPE corresponding to the native
|
| // context, which will have the "this" binding for script scopes.
|
| DeclarationScope* script_scope = NewScriptScope();
|
| info->set_script_scope(script_scope);
|
| Scope* scope = script_scope;
|
| - Handle<Context> context;
|
| - if (maybe_context.ToHandle(&context) && !context->IsNativeContext()) {
|
| + Handle<ScopeInfo> outer_scope_info;
|
| + if (maybe_outer_scope_info.ToHandle(&outer_scope_info)) {
|
| scope = Scope::DeserializeScopeChain(
|
| - info->isolate(), zone(), *context, script_scope, ast_value_factory(),
|
| - Scope::DeserializationMode::kScopesOnly);
|
| + info->isolate(), zone(), *outer_scope_info, script_scope,
|
| + ast_value_factory(), Scope::DeserializationMode::kScopesOnly);
|
| DCHECK(!info->is_module() || scope->is_module_scope());
|
| }
|
| original_scope_ = scope;
|
| @@ -649,7 +649,7 @@ FunctionLiteral* Parser::ParseProgram(Isolate* isolate, ParseInfo* info) {
|
| cached_parse_data_->Initialize();
|
| }
|
|
|
| - DeserializeScopeChain(info, info->context());
|
| + DeserializeScopeChain(info, info->maybe_outer_scope_info());
|
|
|
| source = String::Flatten(source);
|
| FunctionLiteral* result;
|
| @@ -814,7 +814,7 @@ FunctionLiteral* Parser::ParseLazy(Isolate* isolate, ParseInfo* info) {
|
| timer.Start();
|
| }
|
| Handle<SharedFunctionInfo> shared_info = info->shared_info();
|
| - DeserializeScopeChain(info, info->context());
|
| + DeserializeScopeChain(info, info->maybe_outer_scope_info());
|
|
|
| // Initialize parser state.
|
| source = String::Flatten(source);
|
| @@ -4052,7 +4052,7 @@ void Parser::ParseOnBackground(ParseInfo* info) {
|
| info->source_stream_encoding()));
|
| stream_ptr = stream.get();
|
| }
|
| - DCHECK(info->context().is_null() || info->context()->IsNativeContext());
|
| + DCHECK(info->maybe_outer_scope_info().is_null());
|
|
|
| DCHECK(original_scope_);
|
|
|
|
|