public final class NewFrameNode extends FixedWithNextNode implements IterableNodeType, VirtualizableAllocation, Canonicalizable
OptimizedCallTarget
class.Modifier and Type | Class and Description |
---|---|
static class |
NewFrameNode.VirtualOnlyInstanceNode |
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
(package private) ValueNode |
arguments |
(package private) ValueNode |
descriptor |
static NodeClass<NewFrameNode> |
TYPE |
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
NewFrameNode(ResolvedJavaType frameType,
ValueNode descriptor,
ValueNode arguments) |
NewFrameNode(Stamp stamp,
ValueNode descriptor,
ValueNode arguments) |
Modifier and Type | Method and Description |
---|---|
static com.oracle.truffle.api.frame.VirtualFrame |
allocate(Class<? extends com.oracle.truffle.api.frame.VirtualFrame> frameType,
com.oracle.truffle.api.frame.FrameDescriptor descriptor,
Object[] args) |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
private static ResolvedJavaField |
findField(ResolvedJavaField[] fields,
String fieldName) |
ValueNode |
getArguments() |
private com.oracle.truffle.api.frame.FrameDescriptor |
getConstantFrameDescriptor() |
ValueNode |
getDescriptor() |
private int |
getFrameSize() |
static ValueNode |
getMaterializedRepresentationHelper(VirtualObjectNode virtualNode,
FixedNode fixed) |
private static SnippetReflectionProvider |
getSnippetReflection() |
private ValueNode |
initialPrimitiveValue(com.oracle.truffle.api.frame.FrameSlotKind kind) |
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.
|
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, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
public static final NodeClass<NewFrameNode> TYPE
ValueNode descriptor
public NewFrameNode(Stamp stamp, ValueNode descriptor, ValueNode arguments)
public NewFrameNode(ResolvedJavaType frameType, ValueNode descriptor, ValueNode arguments)
public ValueNode getDescriptor()
public ValueNode getArguments()
private static SnippetReflectionProvider getSnippetReflection()
private com.oracle.truffle.api.frame.FrameDescriptor getConstantFrameDescriptor()
private int getFrameSize()
private static ResolvedJavaField findField(ResolvedJavaField[] fields, String fieldName)
public static ValueNode getMaterializedRepresentationHelper(VirtualObjectNode virtualNode, FixedNode fixed)
public void virtualize(VirtualizerTool tool)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodeprivate ValueNode initialPrimitiveValue(com.oracle.truffle.api.frame.FrameSlotKind kind)
public Node canonical(CanonicalizerTool tool)
Canonicalizable
null
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 Canonicalizable
tool
- provides access to runtime interfaces like MetaAccessProvider