changeset 15030:e098038093d5

AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 07 Apr 2014 17:01:54 +0200
parents e5eec42f42f8
children 14e542e27076
files graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java
diffstat 3 files changed, 26 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java	Mon Apr 07 16:44:05 2014 +0200
+++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java	Mon Apr 07 17:01:54 2014 +0200
@@ -371,7 +371,7 @@
         BciBlock trueBlock = currentBlock.getSuccessors().get(0);
         BciBlock falseBlock = currentBlock.getSuccessors().get(1);
         if (trueBlock == falseBlock) {
-            appendGoto(createTarget(trueBlock, frameState));
+            genGoto();
             return;
         }
 
@@ -559,29 +559,11 @@
     }
 
     @Override
-    protected Value genDeoptimization() {
-        // TODO Auto-generated method stub
-        throw GraalInternalError.unimplemented("Auto-generated method stub");
-    }
-
-    @Override
-    protected Value createTarget(BciBlock trueBlock, LIRFrameStateBuilder state) {
-        // TODO Auto-generated method stub
-        throw GraalInternalError.unimplemented("Auto-generated method stub");
-    }
-
-    @Override
     protected void processBlock(BciBlock block) {
         iterateBytecodesForBlock(block);
     }
 
     @Override
-    protected void appendGoto(Value target) {
-        // TODO Auto-generated method stub
-        throw GraalInternalError.unimplemented("Auto-generated method stub");
-    }
-
-    @Override
     protected void iterateBytecodesForBlock(BciBlock block) {
         gen.doBlockStart(block);
 
@@ -615,8 +597,7 @@
                     if (block.numNormalSuccessors() == 1) {
                         assert !block.getSuccessor(0).isExceptionEntry;
                         // we fell through to the next block, add a goto and break
-                        LabelRef label = LabelRef.forSuccessor(lirGenRes.getLIR(), block.getSuccessor(0), 0);
-                        gen.emitJump(label);
+                        genGoto();
                     }
                     break;
                 }
@@ -631,4 +612,10 @@
         frameState.storeLocal(i, x);
     }
 
+    @Override
+    protected void genGoto() {
+        LabelRef label = LabelRef.forSuccessor(lirGenRes.getLIR(), currentBlock, 0);
+        gen.emitJump(label);
+    }
+
 }
\ No newline at end of file
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java	Mon Apr 07 16:44:05 2014 +0200
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java	Mon Apr 07 17:01:54 2014 +0200
@@ -505,11 +505,7 @@
         frameState.storeLocal(index, append(genIntegerAdd(Kind.Int, x, y)));
     }
 
-    private void genGoto() {
-        appendGoto(createTarget(currentBlock.getSuccessors().get(0), frameState));
-        // assert currentBlock.numNormalSuccessors() == 1;
-        assert currentBlock.getSuccessors().size() == 1;
-    }
+    protected abstract void genGoto();
 
     protected abstract T genObjectEquals(T x, T y);
 
@@ -898,28 +894,12 @@
 
     protected abstract T append(T v);
 
-    private boolean isNeverExecutedCode(double probability) {
+    protected boolean isNeverExecutedCode(double probability) {
         return probability == 0 && optimisticOpts.removeNeverExecutedCode() && entryBCI == StructuredGraph.INVOCATION_ENTRY_BCI;
     }
 
-    protected abstract T genDeoptimization();
-
-    protected T createTarget(double probability, BciBlock block, F stateAfter) {
-        assert probability >= 0 && probability <= 1.01 : probability;
-        if (isNeverExecutedCode(probability)) {
-            return genDeoptimization();
-        } else {
-            assert block != null;
-            return createTarget(block, stateAfter);
-        }
-    }
-
-    protected abstract T createTarget(BciBlock trueBlock, F state);
-
     protected abstract void processBlock(BciBlock block);
 
-    protected abstract void appendGoto(T target);
-
     protected abstract void iterateBytecodesForBlock(BciBlock block);
 
     public void processBytecode(int bci, int opcode) {
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Apr 07 16:44:05 2014 +0200
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Apr 07 17:01:54 2014 +0200
@@ -562,6 +562,12 @@
             }
 
             @Override
+            protected void genGoto() {
+                appendGoto(createTarget(currentBlock.getSuccessors().get(0), frameState));
+                assert currentBlock.numNormalSuccessors() == 1;
+            }
+
+            @Override
             protected ValueNode genObjectEquals(ValueNode x, ValueNode y) {
                 return new ObjectEqualsNode(x, y);
             }
@@ -982,21 +988,17 @@
                 return new Target(target, state);
             }
 
-            @Override
-            protected ValueNode genDeoptimization() {
-                return currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode));
+            private FixedNode createTarget(double probability, BciBlock block, HIRFrameStateBuilder stateAfter) {
+                assert probability >= 0 && probability <= 1.01 : probability;
+                if (isNeverExecutedCode(probability)) {
+                    return currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode));
+                } else {
+                    assert block != null;
+                    return createTarget(block, stateAfter);
+                }
             }
 
-            @Override
-            protected FixedNode createTarget(double probability, BciBlock block, HIRFrameStateBuilder stateAfter) {
-                ValueNode fixed = super.createTarget(probability, block, stateAfter);
-                assert fixed instanceof FixedNode;
-                return (FixedNode) fixed;
-
-            }
-
-            @Override
-            protected FixedNode createTarget(BciBlock block, HIRFrameStateBuilder state) {
+            private FixedNode createTarget(BciBlock block, HIRFrameStateBuilder state) {
                 assert block != null && state != null;
                 assert !block.isExceptionEntry || state.stackSize() == 1;
 
@@ -1212,10 +1214,7 @@
                 }
             }
 
-            @Override
-            protected void appendGoto(ValueNode targetNode) {
-                assert targetNode instanceof FixedNode;
-                FixedNode target = (FixedNode) targetNode;
+            private void appendGoto(FixedNode target) {
                 if (lastInstr != null) {
                     lastInstr.setNext(target);
                 }