# HG changeset patch # User Lukas Stadler # Date 1304597539 -7200 # Node ID 3e0e65161345183725346a0b078d8a77304b1ed5 # Parent 06b2eac2f5d383f6f2e34638780dec9dbcbef8d5 new node layout: Op2 diff -r 06b2eac2f5d3 -r 3e0e65161345 graal/GraalCompiler/src/com/sun/c1x/ir/Instruction.java --- a/graal/GraalCompiler/src/com/sun/c1x/ir/Instruction.java Thu May 05 14:02:34 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/ir/Instruction.java Thu May 05 14:12:19 2011 +0200 @@ -43,10 +43,10 @@ */ public abstract class Instruction extends Value { - public static final int INPUT_COUNT = 0; + private static final int INPUT_COUNT = 0; - public static final int SUCCESSOR_COUNT = 1; - public static final int SUCCESSOR_NEXT = 0; + private static final int SUCCESSOR_COUNT = 1; + private static final int SUCCESSOR_NEXT = 0; @Override protected int inputCount() { @@ -84,7 +84,6 @@ */ private List exceptionHandlers = ExceptionHandler.ZERO_HANDLERS; - private boolean isAppended = false; /** diff -r 06b2eac2f5d3 -r 3e0e65161345 graal/GraalCompiler/src/com/sun/c1x/ir/Op2.java --- a/graal/GraalCompiler/src/com/sun/c1x/ir/Op2.java Thu May 05 14:02:34 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/ir/Op2.java Thu May 05 14:12:19 2011 +0200 @@ -33,14 +33,49 @@ */ public abstract class Op2 extends Instruction { + private static final int INPUT_COUNT = 2; + private static final int INPUT_X = 0; + private static final int INPUT_Y = 1; + + private static final int SUCCESSOR_COUNT = 0; + + @Override + protected int inputCount() { + return super.inputCount() + INPUT_COUNT; + } + + @Override + protected int successorCount() { + return super.successorCount() + SUCCESSOR_COUNT; + } + + /** + * The first input to this instruction + */ + public Value x() { + return (Value) inputs().get(super.inputCount() + INPUT_X); + } + + public Value setX(Value n) { + return (Value) inputs().set(super.inputCount() + INPUT_X, n); + } + + /** + * The second input to this instruction + */ + public Value y() { + return (Value) inputs().get(super.inputCount() + INPUT_Y); + } + + public Value setY(Value n) { + return (Value) inputs().set(super.inputCount() + INPUT_Y, n); + } + /** * The opcode of this instruction. */ public final int opcode; - Value x; - Value y; - /** * Creates a new Op2 instance. * @param kind the result type of this instruction @@ -49,26 +84,10 @@ * @param y the second input instruction */ public Op2(CiKind kind, int opcode, Value x, Value y) { - super(kind); + super(kind, INPUT_COUNT, SUCCESSOR_COUNT, null); this.opcode = opcode; - this.x = x; - this.y = y; - } - - /** - * Gets the first input to this instruction. - * @return the first input to this instruction - */ - public final Value x() { - return x; - } - - /** - * Gets the second input to this instruction. - * @return the second input to this instruction - */ - public final Value y() { - return y; + setX(x); + setY(y); } /** @@ -76,9 +95,9 @@ */ public void swapOperands() { assert Bytecodes.isCommutative(opcode); - Value t = x; - x = y; - y = t; + Value t = x(); + setX(y()); + setY(t); } /** @@ -87,20 +106,20 @@ */ @Override public void inputValuesDo(ValueClosure closure) { - x = closure.apply(x); - y = closure.apply(y); + setX(closure.apply(x())); + setY(closure.apply(y())); } @Override public int valueNumber() { - return Util.hash2(opcode, x, y); + return Util.hash2(opcode, x(), y()); } @Override public boolean valueEqual(Instruction i) { if (i instanceof Op2) { Op2 o = (Op2) i; - return opcode == o.opcode && x == o.x && y == o.y; + return opcode == o.opcode && x() == o.x() && y() == o.y(); } return false; }