public abstract class IntegerExactOverflowNode extends LogicNode implements Canonicalizable.Binary<ValueNode>, Simplifiable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
static NodeClass<IntegerExactOverflowNode> |
TYPE |
protected ValueNode |
x |
protected ValueNode |
y |
EMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
IntegerExactOverflowNode(NodeClass<? extends IntegerExactOverflowNode> c,
ValueNode x,
ValueNode y) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract IntegerExactArithmeticSplitNode |
createSplit(Stamp splitStamp,
AbstractBeginNode next,
AbstractBeginNode overflow) |
protected abstract Class<? extends BinaryNode> |
getCoupledType() |
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). |
LogicNode |
maybeCommuteInputs()
Make sure the overflow detection nodes have the same order of inputs as the exact arithmetic
nodes.
|
void |
simplify(SimplifierTool tool) |
and, and, implies, isContradiction, isTautology, or, orasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitcanonical, canonicalpublic static final NodeClass<IntegerExactOverflowNode> TYPE
protected ValueNode x
protected ValueNode y
public IntegerExactOverflowNode(NodeClass<? extends IntegerExactOverflowNode> c, ValueNode x, ValueNode y)
public ValueNode getX()
Canonicalizable.BinaryCanonicalizable.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.BinaryCanonicalizable.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>public LogicNode maybeCommuteInputs()
protected abstract IntegerExactArithmeticSplitNode createSplit(Stamp splitStamp, AbstractBeginNode next, AbstractBeginNode overflow)
protected abstract Class<? extends BinaryNode> getCoupledType()
public void simplify(SimplifierTool tool)
simplify in interface Simplifiable