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 <joyeec9h3@gmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
This commit is contained in:
Refael Ackermann 2018-10-16 18:25:44 -04:00
parent 56881b0d95
commit e9dc1ebb13
2 changed files with 7 additions and 4 deletions

View File

@ -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.7',

View File

@ -566,6 +566,12 @@ parser.add_option('--verbose',
default=False,
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',
@ -1138,7 +1144,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'