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