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