RFR: 8367387: Add @AOTInitialize annotation [v4]

Ioi Lam iklam at openjdk.org
Fri Sep 19 02:14:31 UTC 2025


On Wed, 17 Sep 2025 19:05:37 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:

>> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Added logging about @AOTSafeClassInitializer classes that have not been initialized
>
> src/hotspot/share/cds/aotClassInitializer.cpp line 53:
> 
>> 51: 
>> 52:   if (ik->force_aot_initialization()) {
>> 53:     assert(ik->is_initialized(), "must have been initialized before this check");
> 
> Is it not possible for a jdk class to be loaded but not initialized during an application run? If such a jdk class is marked with AOTInitialize annotation, this assert would trigger during the assembly phase.

We come to here only in the assembly phase, after this check:


  if (!CDSConfig::is_initing_classes_at_dump_time()) {
    return false;
  }


In the training run, `is_initing_classes_at_dump_time()` returns false.

Also, in `AOTMetaspace::try_link_class()`, which is called before we enter the CDS safepoint, we try to initialize all `force_aot_initialization()` classes in this loop:

https://github.com/openjdk/jdk/blob/d21bfb1231bec75bc6eb6eaac33c95ed833565fb/src/hotspot/share/cds/aotMetaspace.cpp#L1262-L1272

When we come to here, we are already in the CDS safepoint, so all classes with  `force_aot_initialization()` must have been initialized.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27024#discussion_r2361539771


More information about the core-libs-dev mailing list