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 {