public abstract class BinaryNode extends FloatingNode implements Canonicalizable.Binary<ValueNode>
BinaryNode
class is the base of arithmetic and logic operations with two inputs.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
static NodeClass<BinaryNode> |
TYPE |
protected ValueNode |
x |
protected ValueNode |
y |
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
BinaryNode(NodeClass<? extends BinaryNode> c,
Stamp stamp,
ValueNode x,
ValueNode y)
Creates a new BinaryNode instance.
|
Modifier and Type | Method and Description |
---|---|
ValueNode |
getX()
Gets the current value of the input, so that calling
Canonicalizable.Binary.canonical(CanonicalizerTool, Node, Node) with the value returned from this
method should behave exactly like Canonicalizable.canonical(CanonicalizerTool) . |
ValueNode |
getY()
Gets the current value of the input, so that calling
Canonicalizable.Binary.canonical(CanonicalizerTool, Node, Node) with the value returned from this
method should behave exactly like Canonicalizable.canonical(CanonicalizerTool) . |
void |
setX(ValueNode x) |
void |
setY(ValueNode y) |
asNode
asConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verify, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
canonical, canonical
public static final NodeClass<BinaryNode> TYPE
protected BinaryNode(NodeClass<? extends BinaryNode> c, Stamp stamp, ValueNode x, ValueNode y)
stamp
- the result type of this instructionx
- the first input instructiony
- the second input instructionpublic ValueNode getX()
Canonicalizable.Binary
Canonicalizable.Binary.canonical(CanonicalizerTool, Node, Node)
with the value returned from this
method should behave exactly like Canonicalizable.canonical(CanonicalizerTool)
.getX
in interface Canonicalizable.Binary<ValueNode>
public ValueNode getY()
Canonicalizable.Binary
Canonicalizable.Binary.canonical(CanonicalizerTool, Node, Node)
with the value returned from this
method should behave exactly like Canonicalizable.canonical(CanonicalizerTool)
.getY
in interface Canonicalizable.Binary<ValueNode>