On Fri, 15 Dec 2023 12:26:50 GMT, Adam Sotona <asot...@openjdk.org> wrote:

>> java.base java.lang.invoke package heavily uses ASM to generate lambdas and 
>> method handles.
>> 
>> This patch converts ASM calls to Classfile API.
>> 
>> This PR is continuation of https://github.com/openjdk/jdk/pull/12945
>> 
>> Any comments and suggestions are welcome.
>> 
>> Please review.
>> 
>> Thank you,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   added missing comment

src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java 
line 187:

> 185:         // generating bridges in the target class)
> 186:         useImplMethodHandle = 
> (Modifier.isProtected(implInfo.getModifiers()) &&
> 187:                                !VerifyAccess.isSamePackage(targetClass, 
> implInfo.getDeclaringClass())) ||

If the `implClass` is hidden, then it’s not possible to generate bytecode which 
correctly refers to `implMethod`, so the only way is to use the method handle 
in that case:
Suggestion:

        useImplMethodHandle = (Modifier.isProtected(implInfo.getModifiers()) &&
                               !VerifyAccess.isSamePackage(targetClass, 
implInfo.getDeclaringClass())) ||
                               implClass.isHidden() ||

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17108#discussion_r1428867973

Reply via email to