Mercurial > hg > graal-compiler
changeset 22974:f8960575ce84
LabelOp: add forEachIncomingValue.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Wed, 11 Nov 2015 15:35:32 +0100 |
parents | ec3bc5aad543 |
children | a55fe96b8e0a |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/StandardOp.java |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/StandardOp.java Thu Nov 12 13:58:04 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/StandardOp.java Wed Nov 11 15:35:32 2015 +0100 @@ -84,6 +84,7 @@ */ public static final class LabelOp extends LIRInstruction { public static final LIRInstructionClass<LabelOp> TYPE = LIRInstructionClass.create(LabelOp.class); + private static final EnumSet<OperandFlag> flags = EnumSet.of(REG, STACK); /** * In the LIR, every register and variable must be defined before it is used. For method @@ -161,6 +162,12 @@ public boolean isPhiIn() { return getIncomingSize() > 0 && isVariable(getIncomingValue(0)); } + + public void forEachIncomingValue(InstructionValueProcedure proc) { + for (int i = 0; i < incomingValues.length; i++) { + incomingValues[i] = proc.doValue(this, incomingValues[i], OperandMode.DEF, flags); + } + } } public abstract static class AbstractBlockEndOp extends LIRInstruction implements BlockEndOp {