public class ForeignCallNode extends AbstractMemoryCheckpoint implements LIRLowerable, DeoptimizingNode.DeoptDuring, MemoryCheckpoint.Multi
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuringMemoryCheckpoint.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 |
stateAfternextNODE_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. |
stateAfterasNode, next, setNextasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, 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, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitasNode, stateAfterstatesasNodepublic 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()
StateSplitFrameState nodes.hasSideEffect in interface StateSplithasSideEffect in class AbstractStateSplitpublic ForeignCallDescriptor getDescriptor()
public LocationIdentity[] getLocationIdentities()
MemoryCheckpoint.MultiLocationIdentity.any() will kill all memory
locations.getLocationIdentities in interface MemoryCheckpoint.Multiprotected Value[] operands(NodeLIRBuilderTool gen)
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic void setStateAfter(FrameState x)
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.setStateAfter in interface StateSplitsetStateAfter in class AbstractStateSplitpublic FrameState stateDuring()
stateDuring in interface DeoptimizingNode.DeoptDuringpublic void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuringFrameState describing the program state during the execution of this
node.setStateDuring in interface DeoptimizingNode.DeoptDuringpublic void setBci(int bci)
bci of the invoke bytecode for use when converting a stateAfter into a
stateDuring.public void computeStateDuring(FrameState currentStateAfter)
DeoptimizingNode.DeoptDuringFrameState 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.DeoptDuringpublic String toString(Verbosity verbosity)
NodeVerbosity.public boolean canDeoptimize()
DeoptimizingNodecanDeoptimize in interface DeoptimizingNode