On Wed, 31 May 2023 01:40:22 GMT, Chen Liang <li...@openjdk.org> wrote:

>> The access hack for array class clone is only applied to `checkAccess` but 
>> missing before call to `restrictProtectedReceiver`, causing the array 
>> receiver type to be incorrectly replaced by the lookupClass type. This patch 
>> fixes that and adds a test to ensure an original lookup resolves `clone` for 
>> both array classes (public) and Object (inherited protected) correctly, and 
>> restores the old MethodHandlesGeneralTest from 
>> [JDK-8001105](https://bugs.openjdk.org/browse/JDK-8001105) which ensures 
>> correctness for publicLookup (which is already correct).
>
> Chen Liang has updated the pull request with a new target base due to a merge 
> or a rebase. The incremental webrev excludes the unrelated changes brought in 
> by the merge/rebase. The pull request contains three additional commits since 
> the last revision:
> 
>  - Update per review
>  - Merge branch 'master' into fix/lookup-array-clone
>  - 8299505: findVirtual on array classes incorrectly restricts the receiver 
> type

Looks good.

test/jdk/java/lang/invoke/findVirtual/FindVirtualArrayCloneTest.java line 70:

> 68:         var cloneMh = MethodHandles.lookup()
> 69:                 .findVirtual(String[].class, "clone", 
> MethodType.methodType(Object.class));
> 70:         var mhClone = (String[]) (Object) cloneMh.invokeExact((String[]) 
> array);

Suggestion:

        var mhClone = (String[]) cloneMh.invokeExact((String[]) array);

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

Marked as reviewed by mchung (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13855#pullrequestreview-1452075058
PR Review Comment: https://git.openjdk.org/jdk/pull/13855#discussion_r1210994587

Reply via email to