public class ForeignCallNode extends AbstractMemoryCheckpoint implements LIRLowerable, DeoptimizingNode.DeoptDuring, MemoryCheckpoint.Multi
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
MemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion
Modifier and Type | Field and Description |
---|---|
protected NodeInputList<ValueNode> |
arguments |
protected int |
bci |
protected ForeignCallDescriptor |
descriptor |
protected ForeignCallsProvider |
foreignCalls |
protected FrameState |
stateDuring |
static NodeClass<ForeignCallNode> |
TYPE |
stateAfter
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
|
ForeignCallNode(ForeignCallsProvider foreignCalls,
ForeignCallDescriptor descriptor,
Stamp stamp) |
|
ForeignCallNode(ForeignCallsProvider foreignCalls,
ForeignCallDescriptor descriptor,
Stamp stamp,
List<ValueNode> arguments) |
|
ForeignCallNode(ForeignCallsProvider foreignCalls,
ForeignCallDescriptor descriptor,
ValueNode... arguments) |
protected |
ForeignCallNode(NodeClass<? extends ForeignCallNode> c,
ForeignCallsProvider foreignCalls,
ForeignCallDescriptor descriptor,
ValueNode... arguments) |
Modifier and Type | Method and Description |
---|---|
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
void |
computeStateDuring(FrameState currentStateAfter)
Compute the
FrameState describing the program state during the execution of this
node from an input FrameState describing the program state after finishing the
execution of this node. |
void |
generate(NodeLIRBuilderTool gen) |
ForeignCallDescriptor |
getDescriptor() |
LocationIdentity[] |
getLocationIdentities()
This method is used to determine which set of memory locations is killed by this node.
|
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
protected Value[] |
operands(NodeLIRBuilderTool gen) |
void |
setBci(int bci)
Set the
bci of the invoke bytecode for use when converting a stateAfter into a
stateDuring. |
void |
setStateAfter(FrameState x)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the execution of this
node. |
FrameState |
stateDuring() |
String |
toString(Verbosity verbosity)
Creates a String representation for this node with a given
Verbosity . |
stateAfter
asNode, next, setNext
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, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode, stateAfter
states
asNode
public static final NodeClass<ForeignCallNode> TYPE
protected NodeInputList<ValueNode> arguments
protected FrameState stateDuring
protected final ForeignCallsProvider foreignCalls
protected final ForeignCallDescriptor descriptor
protected int bci
public ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments)
public ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp, List<ValueNode> arguments)
public ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp)
protected ForeignCallNode(NodeClass<? extends ForeignCallNode> c, ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments)
public boolean hasSideEffect()
StateSplit
FrameState
nodes.hasSideEffect
in interface StateSplit
hasSideEffect
in class AbstractStateSplit
public ForeignCallDescriptor getDescriptor()
public LocationIdentity[] getLocationIdentities()
MemoryCheckpoint.Multi
LocationIdentity.any()
will kill all memory
locations.getLocationIdentities
in interface MemoryCheckpoint.Multi
protected Value[] operands(NodeLIRBuilderTool gen)
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public void setStateAfter(FrameState x)
StateSplit
FrameState
corresponding to the state of the JVM after execution of this
node.setStateAfter
in interface StateSplit
setStateAfter
in class AbstractStateSplit
public FrameState stateDuring()
stateDuring
in interface DeoptimizingNode.DeoptDuring
public void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuring
FrameState
describing the program state during the execution of this
node.setStateDuring
in interface DeoptimizingNode.DeoptDuring
public void setBci(int bci)
bci
of the invoke bytecode for use when converting a stateAfter into a
stateDuring.public void computeStateDuring(FrameState currentStateAfter)
DeoptimizingNode.DeoptDuring
FrameState
describing the program state during the execution of this
node from an input FrameState
describing the program state after finishing the
execution of this node.computeStateDuring
in interface DeoptimizingNode.DeoptDuring
public String toString(Verbosity verbosity)
Node
Verbosity
.public boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode