Mercurial > hg > graal-compiler
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; + } + }