Browse Source

chore: enable v8_enable_private_mapping_fork_optimization by default (#39253)

* chore: enable v8_enable_private_mapping_fork_optimization by default

* chore: cherry-pick 292a4a6 from v8
Robo 1 year ago
parent
commit
b5997a012d

+ 4 - 0
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

+ 1 - 0
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

+ 34 - 0
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 <[email protected]>
+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 <[email protected]>
+Commit-Queue: Michael Lippautz <[email protected]>
+Auto-Submit: Deepak Mohan (Robo) <[email protected]>
+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