diff --git a/build/args/all.gn b/build/args/all.gn index c63574b7ac..7105de72a0 100644 --- a/build/args/all.gn +++ b/build/args/all.gn @@ -56,3 +56,7 @@ v8_builtins_profiling_log_file = "" # https://chromium.googlesource.com/chromium/src/+/main/docs/dangling_ptr.md # TODO(vertedinde): hunt down dangling pointers on Linux enable_dangling_raw_ptr_checks = false + +# This flag speeds up the performance of fork/execve on linux systems. +# Ref: https://chromium-review.googlesource.com/c/v8/v8/+/4602858 +v8_enable_private_mapping_fork_optimization = true diff --git a/patches/v8/.patches b/patches/v8/.patches index 4bd64c3307..562b73cdd4 100644 --- a/patches/v8/.patches +++ b/patches/v8/.patches @@ -2,3 +2,4 @@ build_gn.patch do_not_export_private_v8_symbols_on_windows.patch fix_build_deprecated_attribute_for_older_msvc_versions.patch chore_allow_customizing_microtask_policy_per_context.patch +fix_compile_error_on_macos_with_fork_optimization.patch diff --git a/patches/v8/fix_compile_error_on_macos_with_fork_optimization.patch b/patches/v8/fix_compile_error_on_macos_with_fork_optimization.patch new file mode 100644 index 0000000000..d1fc9ccdbc --- /dev/null +++ b/patches/v8/fix_compile_error_on_macos_with_fork_optimization.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: deepak1556 +Date: Tue, 15 Aug 2023 23:59:59 +0900 +Subject: fix: compile error on macOS with + v8_enable_private_mapping_fork_optimization=true + +Follow-up to https://chromium-review.googlesource.com/c/v8/v8/+/4602858, +we are trying to enable this flag in Electron without any OS conditions in +args.gn which results in a compilation failure on macOS due to the lack of MADV_DONTFORK. + +Given that Node.js and Electron both use posix_spawn on macOS which +by default does not copy MAP_JIT locations, it would be safe to isolate +the change only for linux. + +Change-Id: I58ad50e557016fa573d7a27f33a60e2e5b7d1804 +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4780212 +Reviewed-by: Michael Lippautz +Commit-Queue: Michael Lippautz +Auto-Submit: Deepak Mohan (Robo) +Cr-Commit-Position: refs/heads/main@{#89557} + +diff --git a/src/base/platform/platform-posix.cc b/src/base/platform/platform-posix.cc +index 77fd9e8f6dd5938d38344ffb0074fb70a0969fd9..73cdbdb19df2aecf3046b2bb2b6cb121f4dc5ca7 100644 +--- a/src/base/platform/platform-posix.cc ++++ b/src/base/platform/platform-posix.cc +@@ -161,7 +161,7 @@ void* Allocate(void* hint, size_t size, OS::MemoryPermission access, + void* result = mmap(hint, size, prot, flags, kMmapFd, kMmapFdOffset); + if (result == MAP_FAILED) return nullptr; + +-#if V8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION ++#if V8_OS_LINUX && V8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION + // This is advisory, so we ignore errors. + madvise(result, size, MADV_DONTFORK); + #endif