RFR(xs): 8196920: VerifierTest_1A.java and VerifierTest_1B.java fail: assert(receiver_klass->is_subtype_of(static_receiver_klass))
David Holmes
david.holmes at oracle.com
Wed Feb 14 03:21:18 UTC 2018
On 14/02/2018 12:19 PM, Calvin Cheung wrote:
> On 2/13/18, 5:48 PM, David Holmes wrote:
>> Hi Calvin,
>>
>> Changes look good to me.
> Thanks for your review, David.
>>
>> Aside: why does this test have unnecessary {} scopes ??
> Not sure since I didn't write the original test. Perhaps they're there
> for better code readability?
> I can replace them with blank lines like the following:
>> cw.visit(V1_8, ACC_ABSTRACT + ACC_INTERFACE,
>> "UnverifiableIntf", null, "java/lang/Object", null);
>>
>> fv = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC,
>> "x", "LVerifierTest0;", null, null);
>> fv.visitEnd();
>>
>> mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null,
>> null);
>> mv.visitCode();
>> mv.visitTypeInsn(NEW, "VerifierTest0");
>> mv.visitInsn(DUP);
>> mv.visitMethodInsn(INVOKESPECIAL, "VerifierTest0",
>> "<init>", "()V", false);
>> mv.visitFieldInsn(PUTSTATIC, "UnverifiableIntf", "x",
>> "LVerifierTest0;");
>> mv.visitInsn(RETURN);
>> mv.visitMaxs(2, 0);
>> mv.visitEnd();
>>
>> addBadMethod(cw);
>> cw.visitEnd();
> Do you prefer the above?
Sure - with indent fixed too of course. :)
But don't waste too much time on it.
Thanks,
David
> thanks,
> Calvin
>
>
>>
>> Thanks,
>> David
>>
>> On 14/02/2018 9:23 AM, Calvin Cheung wrote:
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8196920
>>> (sorry, the bug was marked confidential)
>>>
>>> webrev: http://cr.openjdk.java.net/~ccheung/8196920/webrev.00/
>>> (the above change was suggested by Ioi)
>>>
>>> By design, the test created a unverifiable class:
>>>
>>> Expected exception:
>>> java.lang.VerifyError: Call to wrong <init> method
>>> Exception Details:
>>> Location:
>>> UnverifiableBase.<clinit>()V @4: invokespecial
>>> Reason:
>>> Type 'java/lang/Object' (constant pool 4) is not assignable to
>>> 'VerifierTest0' (constant pool 14)
>>>
>>> Due to some recent changes, the test doesn't work with the following
>>> vm options combination in hs-tier4 testing:
>>> -Xcomp -XX:-TieredCompilation -Xverify:none
>>> and resulting in assert in sharedRuntime.cpp:
>>> assert(receiver_klass->is_subtype_of(static_receiver_klass)) failed:
>>> actual receiver must be subclass of static receiver klass
>>>
>>> A fix is to replace the above with a "bad" method which will never be
>>> executed during runtime:
>>>
>>> Expected exception:
>>> java.lang.VerifyError: Operand stack underflow
>>> Exception Details:
>>> Location:
>>> UnverifiableBase.bad()V @0: areturn
>>> Reason:
>>> Attempt to pop empty stack.
>>>
>>> thanks,
>>> Calvin
More information about the hotspot-runtime-dev
mailing list