RFR: 8350550: Preload classes from AOT cache during VM bootstrap [v7]
Ioi Lam
iklam at openjdk.org
Wed Sep 10 18:30:57 UTC 2025
On Wed, 10 Sep 2025 14:47:19 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:
>> 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:
>>
>> - @ashu-mehra review comments
>> - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>> - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>> - @DanHeidinga comments -- added comments and asserts about the handling of enums
>> - @DanHeidinga comment - add test: user enum types are not initialized in assembly phase
>> - @DanHeidinga comment -- assembly phase should check if URLStreamHandler might be overridden in the production run
>> - @DanHeidinga comments
>> - tightened SystemDictionary::preload_class()
>> - Fixed bugs found in JCK
>> - added entry in ProblemList-AotJdk.txt due to 8323727
>> - ... and 12 more: https://git.openjdk.org/jdk/compare/8cd4e7d8...959a2c91
>
> src/hotspot/share/cds/filemap.cpp line 1861:
>
>> 1859: const char* archive_type = CDSConfig::type_of_archive_being_loaded();
>> 1860: CDSConfig::set_has_aot_linked_classes(true);
>> 1861: if (is_static()) {
>
> `CDSConfig` is a global configuration, not specific to static or dynamic archive, and IIUC it is not possible to just load a dynamic archive, without loading a static archive. So it seems `is_static()` check is redundant here.
> Continuing with this line of thought, it seems if `has_aot_linked_classes` is true then `is_using_preloaded_classes` will also be true. Then why do we even need this additional flag to indicate preloading of classes? This is going to be the default behavior when `has_aot_linked_classes` is true.
There is actually a tricky situation -- static archive doesn't have `-XX:+AOTClassLinking` but the dynamic archive was created with `-XX:+AOTClassLinking`.
I have created [JDK-8367366](https://bugs.openjdk.org/browse/JDK-8367366) to remove support for `-XX:+AOTClassLinking` for the dynamic archive. If that gets reviewed and integrated, then I will update this PR to remove `is_using_preloaded_classes()`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26375#discussion_r2337574998
More information about the core-libs-dev
mailing list