# HG changeset patch # User Josef Eisl # Date 1447252532 -3600 # Node ID f8960575ce8478d7c29e5b8815dab5445df59cee # Parent ec3bc5aad5433c3a7670f1fc58bb9a07a32ccb0c LabelOp: add forEachIncomingValue. diff -r ec3bc5aad543 -r f8960575ce84 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/StandardOp.java --- 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 TYPE = LIRInstructionClass.create(LabelOp.class); + private static final EnumSet 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 {