changeset 21227:f85711ac631c

SSAUtils: add removePhiOut/removePhiIn/phiOutIndex.
author Josef Eisl <josef.eisl@jku.at>
date Thu, 23 Apr 2015 17:38:44 +0200
parents 2f2fac20c446
children 48762c9bfca4
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java	Thu Apr 23 11:30:36 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java	Thu Apr 23 17:38:44 2015 +0200
@@ -113,4 +113,25 @@
         }
     }
 
+    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;
+    }
+
 }