On Sat, 20 Sep 2025 02:57:50 GMT, Ioi Lam <[email protected]> wrote: > This is an alternative to https://github.com/openjdk/jdk/pull/27024. Thanks > to @ashu-mehra for the suggestion. > > ### Background: > > The AOT Assembly Phase is in essence a small Java program that executes a > limited set of Java bytecodes. This program bootstraps the module system, > loads classes, and performs certain ahead-of-time optimizations such as > resolving `invokedynamic` call sites. > > As a side effect of Java program execution, a small set of Java classes are > initialized in the Assembly Phase. > > Since [JDK-8360163](https://bugs.openjdk.org/browse/JDK-8360163), if a class > `X` is annotated with `@AOTSafeClassInitializer` *and* is initialized in the > Assembly Phase, then `X` will be stored in the AOT cache in the "initialized" > state. When the AOT cache is used in the Production Run, `X::<clinit>` will > not be executed, and the static variables of `X` will be available upon JVM > bootstrap. > > ### Problem: > > The Assembly Phase doesn't touch many classes that may benefit from > `@AOTSafeClassInitializer`. For example, > `jdk.internal.math.MathUtils::<clinit>` creates a few large tables. Caching > `MathUtils` in the "initialized" state will improve start-up time. However, > since no bytecodes executed by the Assembly Phase use `MathUtils`. it will > not be initialized. > > ### Fix: > > If a class `X` has the `@AOTSafeClassInitializer` annotation *and* was > initialized in the AOT Training Run, the JVM will proactively initialize `X` > in the Assembly Phase. This will ensure that `X` will be cached in the > "initialized" state. > > As a proof of concept, `@AOTSafeClassInitializer` is added to `MathUtils`. > `@AOTSafeClassInitializer` will be added to more classes in future RFEs.
This pull request has now been integrated. Changeset: 17accf4a Author: Ioi Lam <[email protected]> URL: https://git.openjdk.org/jdk/commit/17accf4a06fe654fef6db8dbd0dcd3411729316f Stats: 289 lines in 11 files changed: 198 ins; 47 del; 44 mod 8368174: Proactive initialization of @AOTSafeClassInitializer classes Reviewed-by: liach, adinn, asmehra ------------- PR: https://git.openjdk.org/jdk/pull/27402
