public abstract class UnaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Unary<ValueNode>, Virtualizable
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<UnaryOpLogicNode> |
TYPE |
protected ValueNode |
value |
EMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
UnaryOpLogicNode(NodeClass<? extends UnaryOpLogicNode> c,
ValueNode value) |
| Modifier and Type | Method and Description |
|---|---|
void |
generate(NodeLIRBuilderTool gen) |
abstract Stamp |
getSucceedingStampForValue(boolean negated)
The input stamp cannot be trusted, the returned stamp cannot use the input stamp to narrow
itself or derive any assumptions.
|
Stamp |
getSucceedingStampForValue(boolean negated,
Stamp valueStamp)
In general the input stamp cannot be trusted, this method is reserved for the cases when it's
"safe" to use the input stamp.
|
ValueNode |
getValue()
Gets the current value of the input, so that calling
Canonicalizable.Unary.canonical(CanonicalizerTool, Node) with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool). |
TriState |
implies(boolean thisNegated,
LogicNode other)
Determines what this condition implies about the other.
|
abstract TriState |
tryFold(Stamp valueStamp) |
void |
virtualize(VirtualizerTool tool)
A node class can implement this method to convey information about what its effect would be
if some of its inputs were virtualized.
|
and, and, 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<UnaryOpLogicNode> TYPE
protected ValueNode value
public UnaryOpLogicNode(NodeClass<? extends UnaryOpLogicNode> c, ValueNode value)
public ValueNode getValue()
Canonicalizable.UnaryCanonicalizable.Unary.canonical(CanonicalizerTool, Node) with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool).getValue in interface Canonicalizable.Unary<ValueNode>public void virtualize(VirtualizerTool tool)
Virtualizablevirtualize in interface Virtualizabletool - the tool used to describe the effects of this nodepublic void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic Stamp getSucceedingStampForValue(boolean negated, Stamp valueStamp)
UnaryOpLogicNode.getSucceedingStampForValue(boolean) instead.public abstract Stamp getSucceedingStampForValue(boolean negated)
UnaryOpLogicNode.getSucceedingStampForValue(boolean, Stamp) instead.public abstract TriState tryFold(Stamp valueStamp)