-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[canary] GYP v8 embedded builtins #22920
Conversation
b55c5bb
to
ef1ca13
Compare
I updated CI: https://ci.nodejs.org/job/node-test-pull-request/17273/ |
There's a problem somewhere with the generated files. It keeps recreating the
|
Yes, and it seems very similar to #22006. I'm investigating... |
67ca583
to
0f6d4d3
Compare
Some more tweaks https://ci.nodejs.org/job/node-test-commit/21635/ |
|
|
Hundreds of lines like this one:
@nodejs/platform-aix |
AFAICT there is still a dependency race I need to fix (code looking for generated files that have not been generated yet).
/CC @nodejs/v8 |
Is it possible to get hold of the |
@richardlau command line (interesting bits in the middle)
|
One thought that comes to mind is: Do we know if upstream V8 are using gas on AIX instead of the AIX assembler? On the Node.js CI we're definitely using the AIX assembler, based on the I am assuming that this all works upstream. cc @john-yan (since he was pinged in nodejs/node-v8#79) |
a6069bb
to
278d205
Compare
|
||
'v8_perf_prof_unwinding_info%': 0, | ||
|
||
'v8_enable_fast_mksnapshot%': 0, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nodejs/v8-update do we want to turn any of these for node by default?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally it makes sense to copy the settings from BUILD.gn, so
- Disable pointer compression. That's work-in-progress.
- Enable embedded builtins. I think that's the point of this PR. You save quite a lot of memory per isolate this way. But that does not work for ia32 yet.
- Disable handle zapping. That's for debugging, and should not be used in production.
- Disable untrusted code mitigations. That's to address Spectre, but that's outside Node.js' threat model.
- Disable fast mksnapshot. That's only to make mksnapshot run faster, giving a shorter turnaround during development.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw untrusted code mitigations are actually disabled from common.gypi
already.
deps/v8/gypfiles/v8.gyp
Outdated
'../src/torque/types.h', | ||
'../src/torque/utils.cc', | ||
'../src/torque/utils.h', | ||
"../src/torque/ast.h", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any reason for switching to double quotes?
@@ -481,7 +481,7 @@ build-ci: | |||
# - node-test-commit-linux-coverage: where the build and the tests need | |||
# to be instrumented, see `coverage`. | |||
run-ci: build-ci | |||
$(MAKE) test-ci | |||
$(MAKE) test-ci -j1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it because of #23255?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No because of #22006
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, because of #22006
This looks very good to me overall! |
deps/v8/gypfiles/features.gypi
Outdated
@@ -113,6 +113,13 @@ | |||
|
|||
'v8_enable_fast_mksnapshot%': 0, | |||
}, | |||
'conditions': [ | |||
['(OS=="aix") or (OS=="win" and (clang!=1 or v8_target_arch=="ia32"))', { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should embedded builtins only be disabled for 32-bit Intel on Windows only or on all 32-bit Intel platforms? (I know we only support 32-bit Intel on Windows for Node.js but thinking of others).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll replicate the predicate in BUILD.gn:
https://github.com/nodejs/node/blob/ae461f52330710858f1282bfacdd2da6e0145dd9/deps/v8/BUILD.gn#L74-L77
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For reference, the condition in BUILD.gn:
# Enable embedded builtins.
# TODO(jgruber,v8:6666): Support ia32 and maybe MSVC.
v8_enable_embedded_builtins = v8_use_snapshot && v8_current_cpu != "x86" &&
!is_aix && (!is_win || is_clang)
This comment has been minimized.
This comment has been minimized.
3a80db9
to
0dc2c7d
Compare
This comment has been minimized.
This comment has been minimized.
enable v8_enable_embedded_builtins reorder conditions proccessing for `run_mksnapshot`
0dc2c7d
to
b65f4d2
Compare
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passesRoughly working. In CI I've stumbled into #22006 on more platforms, probably because the dep-chain changed.
Would live some review @nodejs/gyp @nodejs/python @nodejs/build-files @nodejs/v8-update
Fixes: nodejs/node-v8#75
Fixes: nodejs/node-v8#39
Fixes: nodejs/node-v8#74
Fixes: #22757