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