RFR: 8267421: j.l.constant.DirectMethodHandleDesc.Kind.valueOf(int) implementation doesn't conform to the spec regarding REF_invokeInterface handling
Mandy Chung
mchung at openjdk.java.net
Wed Jun 9 17:25:15 UTC 2021
On Tue, 8 Jun 2021 16:46:36 GMT, Vicente Romero <vromero at openjdk.org> wrote:
> Please review this PR which is just syncing the implementation of DirectMethodHandleDesc.Kind.valueOf(int) 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
test/jdk/java/lang/constant/MethodHandleDescTest.java line 362:
> 360: public void testKind() {
> 361: for (Kind k : Kind.values()) {
> 362: assertEquals(Kind.valueOf(k.refKind), Kind.valueOf(k.refKind, k.refKind == MethodHandleInfo.REF_invokeInterface));
Looks like the test does not verify the cases specified by `valueOf(int refKind, boolean isInterface)`.
i.e. For most values of refKind, there is an exact match regardless of the value of isInterface except `REF_invokeStatic` and `REF_invokeSpecial`.
Do you mind adding those cases?
-------------
PR: https://git.openjdk.java.net/jdk/pull/4416
More information about the core-libs-dev
mailing list