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