From 51947a515d3977dab388801888beb43591edac2c Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Tue, 16 Oct 2018 18:25:44 -0400 Subject: [PATCH] build: configure default v8_optimized_debug Under the assumption that debugging is more often focused on node core source. This setting compiles V8 with only partial optimizations, DCHECKS, and debug symbols, so it is still very much debuggable, but it is much faster. It does disable SLOW_DCHECKS, but at the advice of the V8 team, those are more important for deep V8 debugging. Override is configurable with `./configure --v8-non-optimized-debug`. PR-URL: https://github.com/nodejs/node/pull/23704 Reviewed-By: Joyee Cheung Reviewed-By: Ujjwal Sharma --- common.gypi | 3 --- configure.py | 8 +++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common.gypi b/common.gypi index f0315b198a85a0..b07b854be6217f 100644 --- a/common.gypi +++ b/common.gypi @@ -28,9 +28,6 @@ 'openssl_fips%': '', - # Default to -O0 for debug builds. - 'v8_optimized_debug%': 0, - # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. 'v8_embedder_string': '-node.44', diff --git a/configure.py b/configure.py index a5075bd9d8a60b..bf9a10d6474805 100755 --- a/configure.py +++ b/configure.py @@ -576,6 +576,12 @@ default=True, help='get more output from this script') +parser.add_option('--v8-non-optimized-debug', + action='store_true', + dest='v8_non_optimized_debug', + default=False, + help='compile V8 with minimal optimizations and with runtime checks') + # Create compile_commands.json in out/Debug and out/Release. parser.add_option('-C', action='store_true', @@ -1156,7 +1162,7 @@ def configure_library(lib, output): def configure_v8(o): o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0 o['variables']['v8_no_strict_aliasing'] = 1 # Work around compiler bugs. - o['variables']['v8_optimized_debug'] = 0 # Compile with -O0 in debug builds. + o['variables']['v8_optimized_debug'] = 0 if options.v8_non_optimized_debug else 1 o['variables']['v8_random_seed'] = 0 # Use a random seed for hash tables. o['variables']['v8_promise_internal_field_count'] = 1 # Add internal field to promises for async hooks. o['variables']['v8_use_snapshot'] = 'false' if options.without_snapshot else 'true'