RFR(XS) 8136632: VM format checking requires Code attribute from abstract/native non-initializer <clinit>

Lois Foltan lois.foltan at oracle.com
Tue Sep 29 14:59:30 UTC 2015


Looks good.  Picky nit, can you align the 2nd line of the if statement, 
the "s" in signature under the "n" in name?
Thanks,
Lois
On 9/29/2015 9:49 AM, harold seigel wrote:
> Hi,
>
> Please review this small change to fix bug 8136632. Section 2.9 
> <http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.9> 
> of the JVM 8 Spec says:
>
>    A class or interface has at most one /class or interface
>    initialization method/ and is initialized (§5.5
> <http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.5>)
>    by invoking that method. The initialization method of a class or
>    interface has the special name |<clinit>|, takes no arguments, and
>    is void (§4.3.3
> <http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.3>).
>
>
>    Other methods named |<clinit>| in a |class| file are of no
>    consequence. They are not class or interface initialization methods.
>    They cannot be invoked by any Java Virtual Machine instruction and
>    are never invoked by the Java Virtual Machine itself.
>
>    In a |class| file whose version number is 51.0 or above, the method
>    must additionally have its |ACC_STATIC| flag (§4.6
> <http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6>)
>    set in order to be the class or interface initialization method.
>
> This fix avoids checking the access flags of methods named <clinit> if 
> they take arguments and/or are not void because such methods are not 
> class nor interface initialization methods.
>
> Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8136632/
>
> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8136632
>
> The fix was tested with JCK Lang, VM, and API java_lang tests, the UTE 
> quick and split verifier tests, and the hotspot, JDK vm, java/io, 
> java/lang, and java/util JTreg tests, the JCK tests that are currently 
> excluded because of this bug, and the test cases in the bug report.
>
> This scenario will be tested by JCK-9.  So there's no regression test 
> in this webrev.
>
> Thanks, Harold



More information about the hotspot-runtime-dev mailing list