`-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