On Mon, 5 May 2025 23:50:31 GMT, Ioi Lam <ik...@openjdk.org> wrote:

>> 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

The Java code change and the BSM coverage looks good to me. Requiring another 
reviewer for hotspot changes.

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

Marked as reviewed by liach (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24956#pullrequestreview-2816431978

Reply via email to