RFR: JDK-8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior
Alan Bateman
alanb at openjdk.java.net
Tue Oct 12 10:24:50 UTC 2021
On Mon, 11 Oct 2021 20:55:23 GMT, Mandy Chung <mchung at openjdk.org> wrote:
> Classes compiled prior to the nestmate support will generate `REF_invokeSpecial` if the implementation method is a private instance method. Since a lambda proxy class is a hidden class, a nestmate of the host class, it can invoke the private implementation method but it has to use `REF_invokeVirtual` or `REF_invokeInterface`. In order to support the old classes running on the new runtime, LMF implementation adjusts the reference kind from `REF_invokeSpecial` to `REF_invokeVirtual/REF_invokeInterface`.
>
> This PR fixes the check properly to ensure the adjustment is only made if the implementation method is private method in the host class.
filelist line 1:
> 1: test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodImpl.java
I assume "filelist" is not meant to be in this match, I assume this is why the "jdk" label was added.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5901
More information about the core-libs-dev
mailing list