Integrated: JDK-8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior

Mandy Chung mchung at openjdk.java.net
Thu Oct 28 22:28:24 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.

This pull request has now been integrated.

Changeset: 21da2183
Author:    Mandy Chung <mchung at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/21da2183875feca3dbf4f1bd875b268a7fc8d560
Stats:     136 lines in 2 files changed: 135 ins; 0 del; 1 mod

8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior

Reviewed-by: psandoz, dlsmith

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

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


More information about the core-libs-dev mailing list