public abstract class ProxyNode extends FloatingNode implements Proxy, Node.ValueNumberable, Canonicalizable
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<ProxyNode> |
TYPE |
EMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
ProxyNode(NodeClass<? extends ProxyNode> c,
Stamp stamp,
LoopExitNode proxyPoint) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
abstract PhiNode |
createPhi(AbstractMergeNode merge) |
abstract ProxyNode |
duplicateOn(LoopExitNode newProxyPoint,
ValueNode newOriginalNode) |
static GuardProxyNode |
forGuard(GuardingNode value,
LoopExitNode exit) |
static MemoryProxyNode |
forMemory(MemoryKill value,
LoopExitNode exit,
org.graalvm.word.LocationIdentity locationIdentity) |
static ValueProxyNode |
forValue(ValueNode value,
LoopExitNode exit) |
ValueNode |
getOriginalNode() |
LoopExitNode |
proxyPoint() |
void |
setProxyPoint(LoopExitNode newProxyPoint) |
abstract ValueNode |
value() |
boolean |
verify() |
asConstant, 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, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitasNodeprotected ProxyNode(NodeClass<? extends ProxyNode> c, Stamp stamp, LoopExitNode proxyPoint)
public abstract ValueNode value()
public void setProxyPoint(LoopExitNode newProxyPoint)
public LoopExitNode proxyPoint()
public ValueNode getOriginalNode()
getOriginalNode in interface Proxypublic static ValueProxyNode forValue(ValueNode value, LoopExitNode exit)
public static GuardProxyNode forGuard(GuardingNode value, LoopExitNode exit)
public static MemoryProxyNode forMemory(MemoryKill value, LoopExitNode exit, org.graalvm.word.LocationIdentity locationIdentity)
public Node canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProviderpublic abstract PhiNode createPhi(AbstractMergeNode merge)
public abstract ProxyNode duplicateOn(LoopExitNode newProxyPoint, ValueNode newOriginalNode)