public class StructuredGraph extends Graph implements JavaMethodContext
start
node. This
node is the start of the control flow of the graph.Modifier and Type | Class and Description |
---|---|
static class |
StructuredGraph.AllowAssumptions
Constants denoting whether or not
Assumptions.Assumption s can be made while processing a graph. |
static class |
StructuredGraph.GuardsStage
The different stages of the compilation of a
Graph regarding the status of
guards , deoptimizations and framestates . |
private static class |
StructuredGraph.UnsafeAccessState |
Graph.DuplicationReplacement, Graph.Mark, Graph.NodeEvent, Graph.NodeEventListener, Graph.NodeEventScope, Graph.Options
Modifier and Type | Field and Description |
---|---|
private Assumptions |
assumptions
The assumptions made while constructing and transforming this graph.
|
private int |
entryBCI |
private long |
graphId |
private StructuredGraph.GuardsStage |
guardsStage |
private StructuredGraph.UnsafeAccessState |
hasUnsafeAccess |
private boolean |
hasValueProxies |
private Map<ResolvedJavaMethod,Integer> |
inlinedMethods
Records the methods that were inlined while constructing this graph along with how many times
each method was inlined.
|
static long |
INVALID_GRAPH_ID |
private boolean |
isAfterFloatingReadPhase |
private ResolvedJavaMethod |
method |
private SpeculationLog |
speculationLog |
private StartNode |
start |
private static AtomicLong |
uniqueGraphIds |
COMPRESSION_THRESHOLD, MODIFICATION_COUNTS_ENABLED, name
add, addDuplicates, addDuplicates, addOrUnique, addOrUniqueWithInputs, addWithoutUnique, addWithoutUniqueWithInputs, copy, copy, copy, createIterativeNodeWorkList, createNodeBitMap, createNodeFlood, createNodeMap, createNodeWorkList, findDuplicate, freeze, getCompressions, getMark, getNewNodes, getNode, getNodeCount, getNodes, getNodes, getNodesDeletedSinceLastCompression, getTotalNodesDeleted, hasNode, isFrozen, isNew, maybeCompress, reverseUsageOrder, trackNodeEvents, unique, verify
public static final long INVALID_GRAPH_ID
private static final AtomicLong uniqueGraphIds
private final ResolvedJavaMethod method
private final long graphId
private final int entryBCI
private StructuredGraph.GuardsStage guardsStage
private boolean isAfterFloatingReadPhase
private boolean hasValueProxies
private final Assumptions assumptions
private final SpeculationLog speculationLog
private Map<ResolvedJavaMethod,Integer> inlinedMethods
private StructuredGraph.UnsafeAccessState hasUnsafeAccess
public StructuredGraph(StructuredGraph.AllowAssumptions allowAssumptions)
AbstractBeginNode
as the start
node.public StructuredGraph(String name, ResolvedJavaMethod method, StructuredGraph.AllowAssumptions allowAssumptions)
AbstractBeginNode
as the start
node.public StructuredGraph(String name, ResolvedJavaMethod method, StructuredGraph.AllowAssumptions allowAssumptions, SpeculationLog speculationLog)
public StructuredGraph(ResolvedJavaMethod method, StructuredGraph.AllowAssumptions allowAssumptions)
public StructuredGraph(ResolvedJavaMethod method, StructuredGraph.AllowAssumptions allowAssumptions, SpeculationLog speculationLog)
public StructuredGraph(ResolvedJavaMethod method, int entryBCI, StructuredGraph.AllowAssumptions allowAssumptions, SpeculationLog speculationLog)
private StructuredGraph(String name, ResolvedJavaMethod method, long graphId, int entryBCI, StructuredGraph.AllowAssumptions allowAssumptions, SpeculationLog speculationLog)
public Stamp getReturnStamp()
public ResolvedJavaMethod method()
public int getEntryBCI()
public boolean isOSR()
public long graphId()
protected Graph copy(String newName, Consumer<Map<Node,Node>> duplicationMapCallback)
public ParameterNode getParameter(int index)
public Iterable<Invoke> getInvokes()
public boolean hasLoops()
public void removeFloating(FloatingNode node)
public void replaceFloating(FloatingNode node, Node replacement)
public void removeFixed(FixedWithNextNode node)
node
- the node to be unlinked and removedpublic void replaceFixed(FixedWithNextNode node, Node replacement)
public void replaceFixedWithFixed(FixedWithNextNode node, FixedWithNextNode replacement)
public void replaceFixedWithFloating(FixedWithNextNode node, FloatingNode replacement)
public void removeSplit(ControlSplitNode node, AbstractBeginNode survivingSuccessor)
public void removeSplitPropagate(ControlSplitNode node, AbstractBeginNode survivingSuccessor)
public void removeSplitPropagate(ControlSplitNode node, AbstractBeginNode survivingSuccessor, SimplifierTool tool)
public void replaceSplit(ControlSplitNode node, Node replacement, AbstractBeginNode survivingSuccessor)
public void replaceSplitWithFixed(ControlSplitNode node, FixedWithNextNode replacement, AbstractBeginNode survivingSuccessor)
public void replaceSplitWithFloating(ControlSplitNode node, FloatingNode replacement, AbstractBeginNode survivingSuccessor)
public void addAfterFixed(FixedWithNextNode node, FixedNode newNode)
public void addBeforeFixed(FixedNode node, FixedWithNextNode newNode)
public void reduceDegenerateLoopBegin(LoopBeginNode begin)
public void reduceTrivialMerge(AbstractMergeNode merge)
public StructuredGraph.GuardsStage getGuardsStage()
public void setGuardsStage(StructuredGraph.GuardsStage guardsStage)
public boolean isAfterFloatingReadPhase()
public void setAfterFloatingReadPhase(boolean state)
public boolean hasValueProxies()
public void setHasValueProxies(boolean state)
public Assumptions getAssumptions()
null
if assumptions cannot be made for this graphpublic void disableInlinedMethodRecording()
public boolean isInlinedMethodRecordingEnabled()
public Set<ResolvedJavaMethod> getInlinedMethods()
null
if method inlining recording has been
disabledpublic void recordInlinedMethod(ResolvedJavaMethod inlinedMethod)
inlinedMethod
was inlined to this graph. Otherwise, this
method does nothing.public void updateInlinedMethods(StructuredGraph other)
public int getBytecodeSize()
public boolean isTrivial()
StartNode
and ReturnNode
public JavaMethod asJavaMethod()
asJavaMethod
in interface JavaMethodContext
public boolean hasUnsafeAccess()
public void markUnsafeAccess()
public void disableUnsafeAccessTracking()
public boolean isUnsafeAccessTrackingEnabled()
public SpeculationLog getSpeculationLog()