On Mon, 12 Jul 2021 02:57:26 GMT, Yi Yang <yy...@openjdk.org> wrote:

>> Generated lambda class can not access protected static method of the target 
>> class. The following exception is thrown when executing the attached 
>> reproducible program:
>> 
>> 
>> Exception in thread "main" java.lang.IllegalAccessError: class 
>> AccessProtectedStaticMethodFromSuper$B$$Lambda$15/0x0000000800b8ea48 tried 
>> to access protected method 'void 
>> AccessProtectedStaticMethodFromSuper$A.func()' 
>> (AccessProtectedStaticMethodFromSuper$B$$Lambda$15/0x0000000800b8ea48 is in 
>> unnamed module of loader AccessProtectedStaticMethodFromSuper$1Loader 
>> @71dac704; AccessProtectedStaticMethodFromSuper$A is in unnamed module of 
>> loader AccessProtectedStaticMethodFromSuper$1Loader @39ed3c8d)
>>      at 
>> AccessProtectedStaticMethodFromSuper.main(AccessProtectedStaticMethodFromSuper.java:51)
>> 
>> 
>> This issue is similar to JDK-8254975(#767) with slight differences: 
>> generated lambda proxy calls static protected method rather than protected 
>> member method.
>> 
>> The proposed fix 1) tries to use MethodHandle instead of invoking forwardee 
>> directly(since the lambda class has no access to the resolved method) and 2) 
>> does not force accepting an implClass as the first argument when invoking a 
>> static method.
>> 
>> Testing:
>> - test/jdk/java/ with release mode
>> - presubmit tests
>
> Yi Yang has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   mistake

Thanks Mandy for review!

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

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

Reply via email to