changeset 23042:cbe35e56ae82

Fix corner case when short-cutting gotos in the bytecode parser.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 20 Nov 2015 03:08:32 +0100
parents 48da66152e59
children c00fc84509da
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Fri Nov 20 02:12:52 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Fri Nov 20 03:08:32 2015 +0100
@@ -2911,9 +2911,10 @@
         }
         int startBci = nextBlock.startBci;
         int targetAtStart = stream.readUByte(startBci);
-        if (targetAtStart == Bytecodes.GOTO) {
+        if (targetAtStart == Bytecodes.GOTO && nextBlock.getPredecessorCount() == 1) {
             // This is an empty block. Skip it.
-            appendGoto(nextBlock.successors.get(0));
+            BciBlock successorBlock = nextBlock.successors.get(0);
+            appendGoto(successorBlock);
             assert nextBlock.numNormalSuccessors() == 1;
         } else {
             appendGoto(nextBlock);