Skip to content

Commit 367b0c1

Browse files
victorgomesCommit Bot
authored andcommitted
[runtime] Change default scope info for SyntheticFunctionContexts
This changes the default scope info for SyntheticFunctionContexts to the EmptyScopeInfo which does not contain an extension slot. The bug happened because, previously, the native context scope info was used as dummy. Change-Id: I4d6bf6918c11c79201d16bde99ed76800ad6f6c5 Bug: v8:10629 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2277806 Commit-Queue: Victor Gomes <[email protected]> Commit-Queue: Leszek Swirski <[email protected]> Auto-Submit: Victor Gomes <[email protected]> Reviewed-by: Leszek Swirski <[email protected]> Cr-Commit-Position: refs/heads/master@{#68636}
1 parent f672635 commit 367b0c1

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/codegen/code-stub-assembler.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12961,8 +12961,7 @@ void CodeStubAssembler::InitializeSyntheticFunctionContext(
1296112961
SmiConstant(slots));
1296212962

1296312963
TNode<Context> context = CAST(context_heap_object);
12964-
const TNode<Object> empty_scope_info =
12965-
LoadContextElement(native_context, Context::SCOPE_INFO_INDEX);
12964+
const TNode<Object> empty_scope_info = LoadRoot(RootIndex::kEmptyScopeInfo);
1296612965
StoreContextElementNoWriteBarrier(context, Context::SCOPE_INFO_INDEX,
1296712966
empty_scope_info);
1296812967
StoreContextElementNoWriteBarrier(context, Context::PREVIOUS_INDEX,

test/cctest/test-code-stub-assembler.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2491,7 +2491,7 @@ TEST(CreatePromiseResolvingFunctionsContext) {
24912491
ft.Call(isolate->factory()->undefined_value()).ToHandleChecked();
24922492
CHECK(result->IsContext());
24932493
Handle<Context> context_js = Handle<Context>::cast(result);
2494-
CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info());
2494+
CHECK_EQ(isolate->root(RootIndex::kEmptyScopeInfo), context_js->scope_info());
24952495
CHECK_EQ(*isolate->native_context(), context_js->native_context());
24962496
CHECK(context_js->get(PromiseBuiltins::kPromiseSlot).IsJSPromise());
24972497
CHECK_EQ(ReadOnlyRoots(isolate).false_value(),
@@ -2649,7 +2649,7 @@ TEST(CreatePromiseGetCapabilitiesExecutorContext) {
26492649
CHECK(result_obj->IsContext());
26502650
Handle<Context> context_js = Handle<Context>::cast(result_obj);
26512651
CHECK_EQ(PromiseBuiltins::kCapabilitiesContextLength, context_js->length());
2652-
CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info());
2652+
CHECK_EQ(isolate->root(RootIndex::kEmptyScopeInfo), context_js->scope_info());
26532653
CHECK_EQ(*isolate->native_context(), context_js->native_context());
26542654
CHECK(
26552655
context_js->get(PromiseBuiltins::kCapabilitySlot).IsPromiseCapability());
@@ -2698,7 +2698,8 @@ TEST(NewPromiseCapability) {
26982698

26992699
for (auto&& callback : callbacks) {
27002700
Handle<Context> context(Context::cast(callback->context()), isolate);
2701-
CHECK_EQ(isolate->native_context()->scope_info(), context->scope_info());
2701+
CHECK_EQ(isolate->root(RootIndex::kEmptyScopeInfo),
2702+
context->scope_info());
27022703
CHECK_EQ(*isolate->native_context(), context->native_context());
27032704
CHECK_EQ(PromiseBuiltins::kPromiseContextLength, context->length());
27042705
CHECK_EQ(context->get(PromiseBuiltins::kPromiseSlot), result->promise());

0 commit comments

Comments
 (0)