# HG changeset patch # User Josef Eisl # Date 1404307588 -7200 # Node ID b6e70c59b32d0b2134131db749cc045fd398f605 # Parent 7c47610015a99973a4508c2b7838aae3bb0320ac Introduce InstructionStateProcedure. diff -r 7c47610015a9 -r b6e70c59b32d graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Wed Jul 02 14:56:30 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Wed Jul 02 15:26:28 2014 +0200 @@ -121,19 +121,29 @@ } @Override - final protected Value doValue(LIRInstruction instruction, Value value) { + protected final Value doValue(LIRInstruction instruction, Value value) { throw GraalInternalError.shouldNotReachHere("This doValue() methods should never be called"); } @Override - final public Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet flags) { + public final Value doValue(LIRInstruction instruction, Value value, OperandMode mode, EnumSet flags) { return doValue(value, mode, flags); } } - public abstract static class StateProcedure { + public abstract static class InstructionStateProcedure { + + protected abstract void doState(LIRInstruction instruction, LIRFrameState state); + } + + public abstract static class StateProcedure extends InstructionStateProcedure { protected abstract void doState(LIRFrameState state); + + @Override + protected final void doState(LIRInstruction instruction, LIRFrameState state) { + doState(state); + } } /** @@ -349,7 +359,7 @@ instructionClass.forEachState(this, proc); } - public final void forEachState(StateProcedure proc) { + public final void forEachState(InstructionStateProcedure proc) { instructionClass.forEachState(this, proc); } diff -r 7c47610015a9 -r b6e70c59b32d graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Wed Jul 02 14:56:30 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Wed Jul 02 15:26:28 2014 +0200 @@ -28,10 +28,10 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.lir.LIRInstruction.InstructionStateProcedure; import com.oracle.graal.lir.LIRInstruction.InstructionValueProcedure; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; -import com.oracle.graal.lir.LIRInstruction.StateProcedure; import com.oracle.graal.lir.LIRInstruction.ValuePositionProcedure; public class LIRInstructionClass extends LIRIntrospection { @@ -371,11 +371,11 @@ } } - public final void forEachState(LIRInstruction obj, StateProcedure proc) { + public final void forEachState(LIRInstruction obj, InstructionStateProcedure proc) { for (int i = 0; i < stateOffsets.length; i++) { LIRFrameState state = getState(obj, stateOffsets[i]); if (state != null) { - proc.doState(state); + proc.doState(obj, state); } } }