[7u-dev] Request for approval 8046233: VerifyError on backward branch

harold seigel harold.seigel at oracle.com
Thu Sep 4 13:14:56 UTC 2014


Hi,

Please approve this small fix for bug 8046233 for JDK7u-dev.

Section 4.10.2.4 
<http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.2.4> 
of the JVM-7 Spec says:

    A valid instruction sequence must not have an uninitialized object
    on the operand stack or in a local variable at the target of a
    backwards branch if the special type of the uninitialized object is
    merged with a special type other than itself ...

Currently, the split verifier does not allow any backward branches into 
a block containing an uninitialized object.  This fix allows such 
backward branches if the originating block contains an uninitialized 
object of the same special type.

Bug: https://bugs.openjdk.java.net/browse/JDK-8046233
Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8046233_7/
Review thread: 
https://www.mail-archive.com/jdk7u-dev@openjdk.java.net/msg09346.html

The fix was tested with the JCK lang, vm, and api/java_lang tests, the 
JTREG hotspot tests, and tests that reproduced the problem. With this 
fix, the tests that reproduce the problem get the same result with both 
the old and the split verifier.

This bug has already been fixed in JDK-8u and JDK-9.  But, a straight 
back-port to JDK-7u could not be done because the JVM-8 Spec differs 
from the JVM-7 Spec for this case.

Thanks, Harold


More information about the jdk7u-dev mailing list