-
Notifications
You must be signed in to change notification settings - Fork 15k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: enable pointer compression and 31bit smis (#21468)
- Loading branch information
Showing
3 changed files
with
47 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Jeremy Apthorp <nornagon@nornagon.net> | ||
Date: Tue, 10 Dec 2019 15:02:21 -0800 | ||
Subject: enable 31 bit smis on 64bit arch and ptr compression | ||
|
||
This aligns with the defaults set on the Chromium build. Without this, native | ||
node modules will have different (wrong) ideas about how v8 structs are laid | ||
out in memory on 64-bit machines, and will summarily fail to work. | ||
|
||
diff --git a/common.gypi b/common.gypi | ||
index 412f613e7cfcf563fa6a000b932723166ab567da..6e2ad757781f794333b3656ec05f6e48ade86d2e 100644 | ||
--- a/common.gypi | ||
+++ b/common.gypi | ||
@@ -75,6 +75,9 @@ | ||
# TODO(refack): make v8-perfetto happen | ||
'v8_use_perfetto': 0, | ||
|
||
+ 'v8_enable_pointer_compression%': 0, | ||
+ 'v8_enable_31bit_smis_on_64bit_arch': 1, | ||
+ | ||
##### end V8 defaults ##### | ||
|
||
# When building native modules using 'npm install' with the system npm, | ||
@@ -152,6 +155,9 @@ | ||
['OS=="mac"', { | ||
'clang%': 1, | ||
}], | ||
+ ['target_arch == "arm64" or target_arch == "x64"', { | ||
+ 'v8_enable_pointer_compression': 1, | ||
+ }], | ||
], | ||
}, | ||
|
||
@@ -375,6 +381,12 @@ | ||
}], | ||
], | ||
}], | ||
+ ['v8_enable_pointer_compression == 1', { | ||
+ 'defines': ['V8_COMPRESS_POINTERS'], | ||
+ }], | ||
+ ['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', { | ||
+ 'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'], | ||
+ }], | ||
['OS == "win"', { | ||
'defines': [ | ||
'WIN32', |