RFR: 8355638: Allow -Xlog:aot to be used as an alias for -Xlog:cds when using AOT cache [v3]
David Holmes
dholmes at openjdk.org
Thu May 8 01:37:54 UTC 2025
On Wed, 7 May 2025 18:13:41 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> *Specification:*
>>
>> When the JVM is started with any of the following options: AOTCache, AOTCacheOutput, AOTConfiguration, AOTMode:
>>
>> - Any `-Xlog` options that starts with the `aot` tag should also match any `LogTagSets` whose first tag is `LogTag::_cds`
>> - When printing a `LogTagSet` whose first tag is `LogTag::_cds`, if its `tags` decoration is to be printed, then the first tag in the decoration should be printed as `aot`.
>>
>> *Examples:*
>>
>> Control case -- this is an example of an old "cds" log. The decoration should be printed as "cds" to be backwards compatible
>>
>> $ java -Xshare:auto -Xlog:cds --version | grep trying
>> [0.003s][info][cds] trying to map /jdk3/bld/vox/images/jdk/lib/server/classes.jsa
>>
>>
>> "aot" can be used to select the "cds" log, but the log will be printed with "aot" as its decoration
>>
>> $ java -XX:AOTMode=auto -Xlog:aot --version | grep trying
>> [0.015s][info][aot] trying to map /jdk3/bld/vox/images/jdk/lib/server/classes.jsa
>>
>>
>> When using new -XX:AOT flags, even if you specify -Xlog:cds, the output will use "aot" decoration
>>
>> $ java -XX:AOTMode=auto -Xlog:cds --version | grep tryi
>> [0.004s][info][aot] trying to map /jdk3/bld/vox/images/jdk/lib/server/classes.jsa
>>
>>
>> When using new -XX:AOT flags, error messages should be logged with "aot" decoration even when no -Xlog flags are specified
>>
>> $ java -XX:AOTMode=auto -XX:AOTCache=nofile.aot --version
>> [0.009s][error][aot] An error has occurred while processing the AOT cache. Run with -Xlog:aot for details.
>> [0.009s][error][aot] Loading AOT cache failed: nofile.aot
>> java 25-internal 2025-09-16
>> Java(TM) SE Runtime Environment (build 25-internal-adhoc.iklam.vox)
>> Java HotSpot(TM) 64-Bit Server VM (build 25-internal-adhoc.iklam.vox, mixed mode)
>
> Ioi Lam has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 14 additional commits since the last revision:
>
> - cds+aot+load -> aot+load
> - Merge branch 'master' into 8355638-xlog-aot-as-alias-for-xlog-cds
> - @jdksjolen comment
> - Fixed comment
> - clean up of existing UL logs for cds
> - Fixed test cases
> - Merge branch 'master' into 8355638-xlog-aot-as-alias-for-xlog-cds
> - Much more simplification
> - Much simplified
> - More tightening .... but this may be the wrong approach
> - ... and 4 more: https://git.openjdk.org/jdk/compare/15d8a3ec...b772b3d4
This PR seems to be combining a few things:
- establishing the "aliasing" mechanism
- changing some logging statements from CDS to AOT (which already has its own JBS issue IIRC)
- adding new configuration error checking
It may be cleaner to keep these distinct.
I'm also wondering whether we can have a more direct, and general-purpose, aliasing mechanism, that simply connects two tags as aliases such that enabling one enables the other and changes it's printed name? That would be less intrusive than putting this AOT specific logic (which is still an experiment/preview feature isn't it?) into the UL code.
src/hotspot/share/logging/logSelection.cpp line 190:
> 188: if (PrintCDSLogsAsAOTLogs && _ntags > 0 && _tags[0] == LogTag::_aot && ts.tag(0) == LogTag::_cds) {
> 189: // Consider it a match
> 190: i ++;
Suggestion:
i++;
-------------
PR Review: https://git.openjdk.org/jdk/pull/24895#pullrequestreview-2823584480
PR Review Comment: https://git.openjdk.org/jdk/pull/24895#discussion_r2078740159
More information about the hotspot-runtime-dev
mailing list