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

Chen Liang liach at openjdk.org
Tue Jul 8 17:20:34 UTC 2025


> 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 with a new target base due to a merge or a rebase. The pull request now contains 23 commits:

 - Merge branch 'master' of https://github.com/openjdk/jdk into exp/cds-mh-anno
 - Reviews
 - Documentation
 - Don't fail for patching tests
 - Remove design document from code
 - Some more from reviews
 - Reviewed the diff on github
 - Stage
 - Missed comment updates
 - Mark AbstractMap due to CHM
 - ... and 13 more: https://git.openjdk.org/jdk/compare/85331943...574273a6

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

Changes: https://git.openjdk.org/jdk/pull/25922/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25922&range=09
  Stats: 453 lines in 38 files changed: 280 ins; 150 del; 23 mod
  Patch: https://git.openjdk.org/jdk/pull/25922.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25922/head:pull/25922

PR: https://git.openjdk.org/jdk/pull/25922


More information about the core-libs-dev mailing list