On Sat, 21 Jun 2025 00:03:26 GMT, Chen Liang <[email protected]> wrote:
> 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.
Please update the comment in `aotArtifactFinder.hpp` to mention the annotation;
it currently mentions the C++ accessor but should also mention the annotation
that drives it.
A class is AOT-init if EITHER it has the `@AOTClInit` annotation OR it is in
the heap for other reasons. So it’s harmless to put `@AOTClInit` on those
extra classes that need `runtimeSetup` calls.
If you agree with that logic, then I recommend not having a separate `@RTS`
anno as well. I don’t think that second anno pulls its weight. Just execute
the `runtimeSetup` method in any annotated class, as part of the contract of
that annotation.
In the future we may also want an `assemblyCleanup` hook in the same potential
places.
src/java.base/share/classes/java/lang/invoke/VarHandles.java line 751:
> 749: // System.out.println("import
> jdk.internal.vm.annotation.ForceInline;");
> 750: // System.out.println("import
> jdk.internal.vm.annotation.Hidden;");
> 751: // System.out.println("import
> jdk.internal.vm.annotation.MethodHandleArchived;");
this name needs to be adjusted in the comments
-------------
Changes requested by jrose (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/25922#pullrequestreview-2955770916
PR Review Comment: https://git.openjdk.org/jdk/pull/25922#discussion_r2165174485