RFR: 8340733: Add scope for relaxing constraint on JavaCalls from CompilerThread
Tomáš Zezula
duke at openjdk.org
Tue Oct 1 11:02:56 UTC 2024
[JDK-8318694](https://bugs.openjdk.org/browse/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 -Xcomp or -Xbatch mode.
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.
-------------
Commit messages:
- Using tristate CompilerThread::_can_call_java.
- rename changeCompilerThreadCanCallJava to updateCompilerThreadCanCallJava
- added CompilerThreadCanCallJavaScope
Changes: https://git.openjdk.org/jdk/pull/21285/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21285&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8340733
Stats: 160 lines in 8 files changed: 134 ins; 2 del; 24 mod
Patch: https://git.openjdk.org/jdk/pull/21285.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/21285/head:pull/21285
PR: https://git.openjdk.org/jdk/pull/21285
More information about the hotspot-compiler-dev
mailing list