public abstract class AbstractNewObjectNode extends DeoptimizingFixedWithNextNode implements Simplifiable, Lowerable
AbstractNewObjectNode
is the base class for the new instance and new array nodes.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
protected boolean |
fillContents |
static NodeClass<AbstractNewObjectNode> |
TYPE |
stateBefore
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
AbstractNewObjectNode(NodeClass<? extends AbstractNewObjectNode> c,
Stamp stamp,
boolean fillContents,
FrameState stateBefore) |
Modifier and Type | Method and Description |
---|---|
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
boolean |
fillContents() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
private void |
removeUsage(SimplifierTool tool,
FixedWithNextNode usage) |
void |
simplify(SimplifierTool tool)
Must be overridden by subclasses that implement
Simplifiable . |
setStateBefore, stateBefore
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, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
states
public static final NodeClass<AbstractNewObjectNode> TYPE
protected final boolean fillContents
protected AbstractNewObjectNode(NodeClass<? extends AbstractNewObjectNode> c, Stamp stamp, boolean fillContents, FrameState stateBefore)
public boolean fillContents()
true
if the object's contents should be initialized to zero/null.public void simplify(SimplifierTool tool)
Node
Simplifiable
. The implementation in
Node
exists to obviate the need to cast a node before invoking
Simplifiable.simplify(SimplifierTool)
.simplify
in interface Simplifiable
simplify
in class Node
private void removeUsage(SimplifierTool tool, FixedWithNextNode usage)
public void lower(LoweringTool tool)
Lowerable
public boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode