On Fri, 11 Jun 2021 18:17:10 GMT, Vicente Romero <vrom...@openjdk.org> wrote:

>> This PR is a copy of [PR-4416](https://github.com/openjdk/jdk/pull/4416) 
>> which was intended to openjdk/jdk.
>> 
>> Please review this PR which is syncing the implementation of 
>> `DirectMethodHandleDesc.Kind.valueOf(int)` and 
>> `DirectMethodHandleDesc.Kind.valueOf(int, boolean)` with its spec. My 
>> reading of the method's spec is that if the value of the refKind parameter 
>> is: MethodHandleInfo.REF_invokeInterface, then 
>> DirectMethodHandleDesc.Kind.valueOf(int, boolean) should be called with a 
>> value of true for its second argument, currently it is invoked with false 
>> regardless of the value of the refKind parameter
>> 
>> TIA
>
> Vicente Romero has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   updating after review comments

Marked as reviewed by mchung (Reviewer).

src/java.base/share/classes/java/lang/constant/DirectMethodHandleDesc.java line 
138:

> 136:             int i = tableIndex(refKind, isInterface);
> 137:             if (i >= 2 && i < TABLE.length) {
> 138:                 return TABLE[i];

This fix looks good.   The resulting `TABLE` has two entries per `refKind` for 
`isInterface` = `true` and `false`.

test/jdk/java/lang/constant/MethodHandleDescTest.java line 379:

> 377:         for (int refKind : isInterfaceIgnored) {
> 378:             assertEquals(Kind.valueOf(refKind, false), 
> Kind.valueOf(refKind, true));
> 379:         }

Can you also add the test cases to verify `Kind::valueOf` with 
`REF_invokeStatic` and `REF_invokeSpecial`?

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

PR: https://git.openjdk.java.net/jdk17/pull/29

Reply via email to