-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8340733: Add scope for relaxing constraint on JavaCalls from CompilerThread #21171
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
Conversation
|
👋 Welcome back dnsimon! A progress list of the required criteria for merging this PR into |
|
❗ This change is not yet ready to be integrated. |
Webrevs
|
|
@dougxc Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration. See OpenJDK Developers’ Guide for more information. |
| } | ||
|
|
||
| if (vm != null) { | ||
| vm.updateCompilerThreadCanCallJava(!state); |
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.
This is not correct.
The scope has to capture the original _can_call_java value in the constructor and restore it here in close.
Actually it works if c2v_updateCompilerThreadCanCallJava does not have C2V_BLOCK
|
Closing this so @tzezula can open a new one for the same issue. |
|
Link: #21285 |
JDK-8318694 limited the ability for JVMCI CompilerThreads to make Java upcalls. This is to mitigate against deadlock when an upcall does class loading. Class loading can easily create deadlock situations in
-Xcompor-Xbatchmode.However, for Truffle, upcalls are unavoidable if Truffle partial evaluation occurs as part of JIT compilation inlining. This occurs when the Graal inliner sees a constant Truffle AST node which allows a Truffle-specific inlining extension to perform Truffle partial evaluation (PE) on the constant. Such PE involves upcalls to the Truffle runtime (running in Java).
This PR provides the escape hatch such that Truffle specific logic can put a compiler thread into "allow Java upcall" mode during the scope of the Truffle logic.
Progress
Issue
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/21171/head:pull/21171$ git checkout pull/21171Update a local copy of the PR:
$ git checkout pull/21171$ git pull https://git.openjdk.org/jdk.git pull/21171/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 21171View PR using the GUI difftool:
$ git pr show -t 21171Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/21171.diff
Webrev
Link to Webrev Comment