RFR: 8352437: -XX:+AOTClassLinking is not compatible with --add-export

Ioi Lam iklam at openjdk.org
Thu Mar 20 04:54:01 UTC 2025


`-XX:+AOTClassLinking` requires the CDS archived full module graph (FMG).

- Before this PR, when  `--add-export` is specified,  FMG is disabled, so AOT caches created with `-XX:+AOTClassLinking` cannot be loaded.
- After this PR, if the exact same `--add-export` flags as specified across the training/assembly/production phases, the FMG can be used, so we can use so AOT caches created with `-XX:+AOTClassLinking`.

The change itself is straight-forward: just remember the `--add-export` flags specified during AOT cache creation, and check the exact same ones are used during the production run.

I did a fair amount of refactoring to change the "exact options specified" checks in modules.cpp, so more such options can be easily added in the future (we need to handle `--add-reads` and `--add-opens` in future RFEs).

(Note: this PR depends on #24122 )

-------------

Depends on: https://git.openjdk.org/jdk/pull/24122

Commit messages:
 - Fixed whitespaces
 - clean up
 - 8352437: -XX:+AOTClassLinking is not compatible with --add-export

Changes: https://git.openjdk.org/jdk/pull/24124/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24124&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8352437
  Stats: 575 lines in 16 files changed: 457 ins; 65 del; 53 mod
  Patch: https://git.openjdk.org/jdk/pull/24124.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24124/head:pull/24124

PR: https://git.openjdk.org/jdk/pull/24124


More information about the core-libs-dev mailing list