RFR: 8360163: Create annotations to mark dumping method handles and runtime setup required classes

John R Rose jrose at openjdk.org
Wed Jun 25 00:36:30 UTC 2025


On Sat, 21 Jun 2025 00:03:26 GMT, Chen Liang <liach at openjdk.org> 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


More information about the hotspot-dev mailing list