changeset 21244:bf5e055dbc9c

SSAUtils: minor refactoring.
author Josef Eisl <josef.eisl@jku.at>
date Thu, 30 Apr 2015 15:36:03 +0200
parents 0dee8e5f78ea
children a2430e146460
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java
diffstat 1 files changed, 34 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java	Thu Apr 30 11:51:44 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java	Thu Apr 30 15:36:03 2015 +0200
@@ -88,9 +88,8 @@
         assert pred.getSuccessorCount() == 1 : String.format("Merge predecessor block %s has more than one successor? %s", pred, pred.getSuccessors());
         assert pred.getSuccessors().get(0) == merge : String.format("Predecessor block %s has wrong successor: %s, should be: %s", pred, pred.getSuccessors().get(0), merge);
 
-        List<LIRInstruction> instructions = lir.getLIRforBlock(pred);
-        JumpOp jump = (JumpOp) instructions.get(instructions.size() - 1);
-        LabelOp label = (LabelOp) lir.getLIRforBlock(merge).get(0);
+        JumpOp jump = phiOut(lir, pred);
+        LabelOp label = phiIn(lir, merge);
 
         assert label.getIncomingSize() == jump.getOutgoingSize() : String.format("Phi In/Out size mismatch: in=%d vs. out=%d", label.getIncomingSize(), jump.getOutgoingSize());
 
@@ -99,6 +98,38 @@
         }
     }
 
+    private static JumpOp phiOut(LIR lir, AbstractBlockBase<?> block) {
+        assert block.getSuccessorCount() == 1;
+        List<LIRInstruction> instructions = lir.getLIRforBlock(block);
+        int index = instructions.size() - 1;
+        LIRInstruction op = instructions.get(index);
+        return (JumpOp) op;
+    }
+
+    public static int phiOutIndex(LIR lir, AbstractBlockBase<?> block) {
+        assert block.getSuccessorCount() == 1;
+        List<LIRInstruction> instructions = lir.getLIRforBlock(block);
+        int index = instructions.size() - 1;
+        assert instructions.get(index) instanceof JumpOp;
+        return index;
+    }
+
+    private static LabelOp phiIn(LIR lir, AbstractBlockBase<?> block) {
+        assert block.getPredecessorCount() > 1;
+        LabelOp label = (LabelOp) lir.getLIRforBlock(block).get(0);
+        return label;
+    }
+
+    public static void removePhiOut(LIR lir, AbstractBlockBase<?> block) {
+        JumpOp jump = phiOut(lir, block);
+        jump.clearOutgoingValues();
+    }
+
+    public static void removePhiIn(LIR lir, AbstractBlockBase<?> block) {
+        LabelOp label = phiIn(lir, block);
+        label.clearIncomingValues();
+    }
+
     public static boolean verifySSAForm(LIR lir) {
         return new SSAVerifier(lir).verify();
     }
@@ -113,25 +144,6 @@
         }
     }
 
-    public static void removePhiOut(LIR lir, AbstractBlockBase<?> block) {
-        assert block.getSuccessorCount() == 1;
-        List<LIRInstruction> instructions = lir.getLIRforBlock(block);
-        JumpOp jump = (JumpOp) instructions.get(instructions.size() - 1);
-        jump.clearOutgoingValues();
-    }
 
-    public static void removePhiIn(LIR lir, AbstractBlockBase<?> block) {
-        assert block.getPredecessorCount() > 1;
-        LabelOp label = (LabelOp) lir.getLIRforBlock(block).get(0);
-        label.clearIncomingValues();
-    }
-
-    public static int phiOutIndex(LIR lir, AbstractBlockBase<?> block) {
-        assert block.getSuccessorCount() == 1;
-        List<LIRInstruction> instructions = lir.getLIRforBlock(block);
-        int index = instructions.size() - 1;
-        assert instructions.get(index) instanceof JumpOp;
-        return index;
-    }
 
 }