RFR: 8354890: AOT-initialize j.l.i.MethodHandleImpl and inner classes [v2]

Ioi Lam iklam at openjdk.org
Mon May 5 23:50:31 UTC 2025


> This is a general fix for all the "points to a static field that may hold a different value" failures related to `java/lang/invoke/MethodHandleImpl`. E.g., [JDK-8354840](https://bugs.openjdk.org/browse/JDK-8354840), [JDK-8353330](https://bugs.openjdk.org/browse/JDK-8353330).
> 
> AOT-cached method handles quite often refer to the static fields in `MethodHandleImpl` or its inner classes. In the production run, if the value of these static field changes, we may have unexpected behavior related to identity of objects in these static fields. `CDSHeapVerifier` makes a very conservative check for such static fields, but sometimes gives false positives (as in the above two JBS issues)
> 
> In this PR, we AOT-initialize `MethodHandleImpl` and its inner classes. This is a more authentic snapshot of the state of `java.lang.invoke` during the assembly phase. We also avoid the need to add and maintain entries in the `cdsHeapVerifier.cpp` table.
> 
> I also added more code in `MethodHandleTest.java` to simulate potential usage patterns of `MethodHandle` by the Java core libraries. Hopefully this will reduce the likelihood for innocent core lib changes breaking the AOT assembly phase.

Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:

  Comments from @liach and @ExE-Boss

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/24956/files
  - new: https://git.openjdk.org/jdk/pull/24956/files/0f6a2e0a..a1e3743b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=24956&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24956&range=00-01

  Stats: 8 lines in 3 files changed: 5 ins; 2 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/24956.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24956/head:pull/24956

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


More information about the hotspot-dev mailing list