RFR: 8355798: Implement JEP 514: Ahead-of-Time Command Line Ergonomics [v9]
Ioi Lam
iklam at openjdk.org
Thu May 15 03:23:40 UTC 2025
> This is the implementation of the draft [JEP: Ahead-of-time Command Line Ergonomics](https://bugs.openjdk.org/browse/JDK-8350022)
>
> - Implemented new flag `AOTCacheOutput`, which can be used to create an AOT cache using the "one-command workflow"
> - Added processing of the `JAVA_AOT_OPTIONS` environment variable that can supply extra VM options when creating an AOT cache
> - Added `%p` substitution for `AOTCache`, `AOTCacheOutput`, and `AOTConfiguration` options
>
> Please see the [JEP](https://bugs.openjdk.org/browse/JDK-8350022) and [CSR](https://bugs.openjdk.org/browse/JDK-8356010) for detailed specification.
>
> Examples:
>
>
> # Create an AOT cache with a single command:
> $ java -cp HelloWorld.jar -XX:AOTMode=record -XX:AOTCacheOutput=foo.aot HelloWorld
> Hello World
> Temporary AOTConfiguration recorded: foo.aot.config
> Launching child process /usr/bin/java to assemble AOT cache foo.aot using configuration foo.aot.config
> Picked up JAVA_TOOL_OPTIONS: -Djava.class.path=HelloWorld.jar -XX:AOTCacheOutput=foo.aot -XX:AOTConfiguration=foo.aot.config -XX:AOTMode=create
> Reading AOTConfiguration foo.aot.config and writing AOTCache foo.aot
> AOTCache creation is complete: foo.aot 10240000 bytes
>
> # Create logging file for the AOT cache assembly phase
> $ export AOT_TOOL_COMMAND=-Xlog:cds:file=log.txt
> $ java -cp HelloWorld.jar -XX:AOTMode=record -XX:AOTCacheOutput=foo.aot HelloWorld
>
>
> Note: the child process is launched with Java API because the HotSpot native APIs are not sufficient (no way to set env vars for child process).
Ioi Lam has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 22 commits:
- @vnkozlov comments
- added info about JTREG/AOT_JDK testing
- fixed whitespace
- Merge branch 'master' into 8355798-implement-leyden-ergo-jep-8350022
- java.md updates from @rose00
- Resolved differences with CSR JDK-8356010
- Added param to makefile function SetupAOT for choosing onestep vs twostep
- Allow one-step training even when -XX:AOTMode=auto is specified
- Merge branch 'master' into 8355798-implement-leyden-ergo-jep-8350022
- Update java man page
- ... and 12 more: https://git.openjdk.org/jdk/compare/5e50a584...7f4c0e8b
-------------
Changes: https://git.openjdk.org/jdk/pull/24942/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24942&range=08
Stats: 2082 lines in 24 files changed: 1558 ins; 459 del; 65 mod
Patch: https://git.openjdk.org/jdk/pull/24942.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/24942/head:pull/24942
PR: https://git.openjdk.org/jdk/pull/24942
More information about the core-libs-dev
mailing list