|
@@ -0,0 +1,46 @@
|
|
|
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
+From: Jeremy Apthorp <[email protected]>
|
|
|
+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',
|