Mercurial > hg > graal-jvmci-8
diff graal/GraalCompiler/src/com/sun/c1x/ir/Compare.java @ 2857:c6af2af32b3d
Merge.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Tue, 07 Jun 2011 15:59:08 +0200 |
parents | 3a4ad04d60a1 c6bdec623ef9 |
children |
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/ir/Compare.java Tue Jun 07 15:56:21 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/ir/Compare.java Tue Jun 07 15:59:08 2011 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,118 +24,45 @@ import com.oracle.graal.graph.*; import com.sun.c1x.debug.*; -import com.sun.c1x.util.*; +import com.sun.cri.bytecode.*; import com.sun.cri.ci.*; -public final class Compare extends Value { - - 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; - } +/** + * The {@code CompareOp} instruction represents comparisons such as equals, not equal, etc. + */ +public final class Compare extends Binary { - @Override - protected int successorCount() { - return super.successorCount() + SUCCESSOR_COUNT; - } - - /** - * The instruction that produces the first input to this comparison. - */ - 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); - } + private static final int INPUT_COUNT = 0; + private static final int SUCCESSOR_COUNT = 0; /** - * The instruction that produces the second input to this comparison. - */ - 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); - } - - Condition condition; - boolean unorderedIsTrue; - - /** - * Constructs a new If instruction. - * @param x the instruction producing the first input to the instruction - * @param condition the condition (comparison operation) - * @param y the instruction that produces the second input to this instruction - * @param graph + * Creates a new compare operation. + * @param opcode the bytecode opcode + * @param kind the result kind + * @param x the first input + * @param y the second input */ - public Compare(Value x, Condition condition, Value y, Graph graph) { - super(CiKind.Illegal, INPUT_COUNT, SUCCESSOR_COUNT, graph); - assert (x == null && y == null) || Util.archKindsEqual(x, y); - this.condition = condition; - setX(x); - setY(y); - } - - /** - * Gets the condition (comparison operation) for this instruction. - * @return the condition - */ - public Condition condition() { - return condition; - } - - /** - * Checks whether unordered inputs mean true or false. - * @return {@code true} if unordered inputs produce true - */ - public boolean unorderedIsTrue() { - return unorderedIsTrue; - } - - /** - * Swaps the operands to this if and reverses the condition (e.g. > goes to <=). - * @see Condition#mirror() - */ - public void swapOperands() { - condition = condition.mirror(); - Value t = x(); - setX(y()); - setY(t); + public Compare(int opcode, CiKind kind, Value x, Value y, Graph graph) { + super(kind, opcode, x, y, INPUT_COUNT, SUCCESSOR_COUNT, graph); } @Override public void accept(ValueVisitor v) { + v.visitCompare(this); } @Override public void print(LogStream out) { - out.print("comp "). - print(x()). - print(' '). - print(condition().operator). - print(' '). - print(y()); - } - - @Override - public String shortName() { - return "Comp " + condition.operator; + out.print(x()). + print(' '). + print(Bytecodes.operator(opcode)). + print(' '). + print(y()); } @Override public Node copy(Graph into) { - Compare x = new Compare(null, condition, null, into); - x.unorderedIsTrue = unorderedIsTrue; - x.setNonNull(isNonNull()); + Compare x = new Compare(opcode, kind, null, null, into); return x; } }