RFR: JDK-8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior [v4]

Paul Sandoz psandoz at openjdk.java.net
Thu Oct 28 20:26:50 UTC 2021


On Thu, 28 Oct 2021 20:23:41 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.
>
> Mandy Chung has updated the pull request incrementally with one additional commit since the last revision:
> 
>   convert to TestNG test

Marked as reviewed by psandoz (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/5901


More information about the core-libs-dev mailing list