changeset 23037:a54b0edb0aea

Skip over empty block targets for parsing time constant conditional jumps.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 20 Nov 2015 00:43:44 +0100
parents b2243b94f6c1
children 71bb0eb7b094
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Fri Nov 20 00:36:25 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Fri Nov 20 00:43:44 2015 +0100
@@ -2909,7 +2909,15 @@
         if (value) {
             nextBlock = trueBlock;
         }
-        appendGoto(nextBlock);
+        int startBci = nextBlock.startBci;
+        int targetAtStart = stream.readUByte(startBci);
+        if (targetAtStart == Bytecodes.GOTO) {
+            // This is an empty block. Skip it.
+            appendGoto(nextBlock.successors.get(0));
+            assert nextBlock.numNormalSuccessors() == 1;
+        } else {
+            appendGoto(nextBlock);
+        }
     }
 
     private int checkPositiveIntConstantPushed(BciBlock block) {