On Tue, 1 Jul 2025 23:20:59 GMT, Chen Liang <li...@openjdk.org> wrote:

>> I have updated this patch to avoid a redundant `runtimeSetup` annotation - 
>> we have agreed that the requirement for setup is a side effect of 
>> initialization, and such methods in AOTCI classes must be automatically 
>> recognized. This latest revision implements that model.
>> 
>> I intentionally avoided handling Class and ClassLoader `resetArchivedStates` 
>> and `MethodType::assemblySetup` - we talked about a generic 
>> `assemblyCleanup` method, but I did not find out where is the best place to 
>> call such a method in the assembly phase. We cna handle this in a subsequent 
>> patch.
>> 
>> In particular, please review the new AOT.md design document - I split it 
>> from the AOTCI annotation to prevent jamming; we can put general AOT 
>> information there when we have more AOT-specific annotations.
>> 
>> ---
>> 
>> Old description:
>> Currently, the list of classes that have <clinit> interdependencies and 
>> those that need runtimeSetup are maintained in a hardcoded list in CDS. This 
>> makes it risky for core library developers as they might introduce new 
>> interdependencies and observe CDS to fail. By moving the mechanism of these 
>> lists to core library annotations as a first step, we can gradually expose 
>> the AOT contracts as program semantics described by internal annotations, 
>> and also helps us to explore how we can expose these functionalities to the 
>> public later.
>
> Chen Liang has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Reviewed the diff on github

src/java.base/share/classes/jdk/internal/vm/annotation/AOT.md line 67:

> 65: only the data images created by such threads.
> 66: 
> 67: Therefore, if a class A is marked `AOTClassInitializer`, and it has

This mentions the annotation without saying what it is or how it relates to the 
preceding discussion. Can we maybe introduce it at this point? Something like 
this:

"Annotation `AOTClassInitializer` is provided to declare that a specific JDK 
class's metadata, its class mirror and, potentially, its instances can safely 
be included in an AOT cache. If a class A is marked ..."

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25922#discussion_r2179407537

Reply via email to