RFR: 8345826: Do not automatically resolve jdk.internal.vm.ci when libgraal is used [v5]
Doug Simon
dnsimon at openjdk.org
Fri May 16 21:06:39 UTC 2025
> The `EnableJVMCI` flag currently serves 2 purposes:
> * Guards VM code ([example](https://github.com/openjdk/jdk/blob/b1e778d9d2ad13ee5f1ed629a8805008580f86c0/src/hotspot/share/runtime/sharedRuntime.cpp#L652)).
> * [Adds](https://github.com/openjdk/jdk/blob/b1e778d9d2ad13ee5f1ed629a8805008580f86c0/src/hotspot/share/runtime/arguments.cpp#L1804) `jdk.internal.vm.ci` to the root module set.
>
> This PR changes nothing about the first point.
>
> On the second point, to use the `jdk.internal.vm.ci` module when libgraal is enabled, `--add-modules=jdk.internal.vm.ci` must be specified.
> If libgraal is not enabled, +EnableJVMCI will continue to add `jdk.internal.vm.ci` to the root module set.
>
> The primary motivation is to make use of libgraal compatible with `-XX:+AOTClassLinking`. This flag relies on the root module set archive created in a training run. If the root module set is different in the production run, the AOTClassLinking [optimizations](https://bugs.openjdk.org/browse/JDK-8342279) are disabled. As `jdk.internal.vm.ci` is not resolved in the training run, it must not be resolved in production run. As such, `-XX:+EnableJVMCI` must not cause resolution of `jdk.internal.vm.ci`, otherwise libgraal will not have the startup advantages of AOTClassLinking.
Doug Simon has updated the pull request incrementally with two additional commits since the last revision:
- load the JVMCI module if +EnableJVMCI is set on the command line
- JAVA_NOT_ENABLED_ERROR_MESSAGE -> JVMCI_NOT_ENABLED_ERROR_MESSAGE
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/25240/files
- new: https://git.openjdk.org/jdk/pull/25240/files/1fe56b41..d9223afb
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=25240&range=04
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=25240&range=03-04
Stats: 15 lines in 6 files changed: 0 ins; 4 del; 11 mod
Patch: https://git.openjdk.org/jdk/pull/25240.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25240/head:pull/25240
PR: https://git.openjdk.org/jdk/pull/25240
More information about the graal-dev
mailing list