build: fix pointer compression builds · nodejs/node@db7f413 · GitHub
Skip to content

Commit db7f413

Browse files
joyeecheungtargos
authored andcommitted
build: fix pointer compression builds
- Remove usage of deprecated V8::InitializeSandbox(). - External code space and pointer compression shared cage must be enabled when pointer compression builds are enabled. - We cannot enable the sandbox because that requires allocating the array buffer backing stores in the sandbox - we currently have many backing stores tied to pointers from C++ land that are not even necessarily dynamic (e.g. in static storage). Until we manage to get rid of all those, sandbox cannot be enabled. Note that enabling pointer compression without enabling sandbox is unsupported by V8, and can be broken at any time. PR-URL: #58171 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent c094bea commit db7f413

4 files changed

Lines changed: 22 additions & 4 deletions

File tree

common.gypi

Lines changed: 5 additions & 0 deletions

configure.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1718,7 +1718,15 @@ def configure_v8(o, configs):
17181718
o['variables']['v8_enable_maglev'] = B(not options.v8_disable_maglev and
17191719
o['variables']['target_arch'] in maglev_enabled_architectures)
17201720
o['variables']['v8_enable_pointer_compression'] = 1 if options.enable_pointer_compression else 0
1721-
o['variables']['v8_enable_sandbox'] = 1 if options.enable_pointer_compression else 0
1721+
# Using the sandbox requires always allocating array buffer backing stores in the sandbox.
1722+
# We currently have many backing stores tied to pointers from C++ land that are not
1723+
# even necessarily dynamic (e.g. in static storage) for fast communication between JS and C++.
1724+
# Until we manage to get rid of all those, v8_enable_sandbox cannot be used.
1725+
# Note that enabling pointer compression without enabling sandbox is unsupported by V8,
1726+
# so this can be broken at any time.
1727+
o['variables']['v8_enable_sandbox'] = 0
1728+
o['variables']['v8_enable_pointer_compression_shared_cage'] = 1 if options.enable_pointer_compression else 0
1729+
o['variables']['v8_enable_external_code_space'] = 1 if options.enable_pointer_compression else 0
17221730
o['variables']['v8_enable_31bit_smis_on_64bit_arch'] = 1 if options.enable_pointer_compression else 0
17231731
o['variables']['v8_enable_extensible_ro_snapshot'] = 0
17241732
o['variables']['v8_trace_maps'] = 1 if options.trace_maps else 0

test/cctest/node_test_fixture.cc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ void NodeTestEnvironment::SetUp() {
2121
NodeZeroIsolateTestFixture::platform.reset(
2222
new node::NodePlatform(kV8ThreadPoolSize, tracing_controller));
2323
v8::V8::InitializePlatform(NodeZeroIsolateTestFixture::platform.get());
24-
#ifdef V8_ENABLE_SANDBOX
25-
ASSERT_TRUE(v8::V8::InitializeSandbox());
26-
#endif
2724
cppgc::InitializeProcess(
2825
NodeZeroIsolateTestFixture::platform->GetPageAllocator());
2926

tools/v8_gypfiles/features.gypi

Lines changed: 8 additions & 0 deletions

0 commit comments

Comments
 (0)