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.

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

Depends on: https://git.openjdk.org/jdk/pull/20959

Commit messages:
 - Do not use system property to limit usage to only CDS static dumps
 - 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/yak/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/yak/open into jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke
 - 8311071: Add an option to avoid using SoftReferences in 
java.lang.invoke.MethodHandle

Changes: https://git.openjdk.org/jdk/pull/21049/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21049&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8311071
  Stats: 72 lines in 4 files changed: 46 ins; 2 del; 24 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

Reply via email to