On Tue, 17 Sep 2024 23:48:11 GMT, Ioi Lam <ik...@openjdk.org> wrote: > This is the 6th PR for [JEP 483: Ahead-of-Time Class Loading & > Linking](https://bugs.openjdk.org/browse/JDK-8315737). > > The implementation of java.lang.invoke uses SoftReferences so that unused > MethodHandles, LambdaForms, etc, can be garbage collected. > > However, if we want to store java.lang.invoke objects in the AOT cache > ([JDK-8293336](https://bugs.openjdk.org/browse/JDK-8293336), the final step > in JEP 493), it's difficult to cache these SoftReferences -- SoftReferences > in turn point to ReferenceQueues, etc, which have dependencies on the current > execution state (Threads, etc) which are difficult to cache. > > The proposal is to add a new flag: `MethodHandleStatics.NO_SOFT_CACHE`. When > this flag is true, we avoid using SoftReferences, and store a direct > reference to the target object instead. > > [JDK-8293336](https://bugs.openjdk.org/browse/JDK-8293336) stores only > java.lang.invoke objects that refer to classes loaded by the > boot/platform/app loaders. These classes are never unloaded, so it's not > necessary to point to them using SoftReferences. > > This RFE modifies only the LambdaFormEditor and MethodTypeForm classes, as > that's the minimal modification required by > [JDK-8293336](https://bugs.openjdk.org/browse/JDK-8293336). > > --- > See [here](https://bugs.openjdk.org/browse/JDK-8315737) for the sequence of > dependent RFEs for implementing JEP 483.
This seems quite reasonable for dumping the static archive. A couple of typos. Thanks src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java line 62: > 60: static final boolean PROFILE_GWT; > 61: static final int CUSTOMIZE_THRESHOLD; > 62: static final boolean NO_SOFT_CACHE; // Don't use SoftReference in > LambdaFormEditor and MethodTypeForm so they can archived by CDS. Suggestion: static final boolean NO_SOFT_CACHE; // Don't use SoftReference in LambdaFormEditor and MethodTypeForm so they can be archived by CDS. src/java.base/share/classes/jdk/internal/misc/CDS.java line 81: > 79: /* > 80: * Wwhen dumping the static archive, CDS is able to archive > MethodHandles. > 81: * However, CDS cannot archive SoftReferences objects, so we need to Suggestion: * However, CDS cannot archive SoftReference objects, so we need to ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/21049#pullrequestreview-2311403651 PR Review Comment: https://git.openjdk.org/jdk/pull/21049#discussion_r1764251342 PR Review Comment: https://git.openjdk.org/jdk/pull/21049#discussion_r1764253505