> 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.
Ioi Lam has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 18 additional commits since the last revision: - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - @iwanowww comment: no need for @Stable for USE_SOFT_CACHE; use final instead - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - reviews from @iwanowww and @rose00 -- move USE_SOFT_CACHE to MethodHandleNatives as a @Stable field; use system prop for init - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - @liach and @cl4es comments - Merge branch 'jep-483-step-05-8293337-archive-method-handle-intrinsics' of /jdk3/yam/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke - ... and 8 more: https://git.openjdk.org/jdk/compare/30a325cf...875c066d ------------- Changes: - all: https://git.openjdk.org/jdk/pull/21049/files - new: https://git.openjdk.org/jdk/pull/21049/files/a9ae70e2..875c066d Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=21049&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21049&range=09-10 Stats: 7 lines in 4 files changed: 2 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/21049.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/21049/head:pull/21049 PR: https://git.openjdk.org/jdk/pull/21049