public class SimplifyingGraphDecoder extends GraphDecoder
node canonicalization
interface is used to canonicalize nodes
during decoding. Additionally, branches
and switches
with constant conditions are simplified.Modifier and Type | Class and Description |
---|---|
protected class |
SimplifyingGraphDecoder.PECanonicalizerTool |
GraphDecoder.InvokeData, GraphDecoder.LoopExplosionKind, GraphDecoder.LoopExplosionState, GraphDecoder.LoopScope, GraphDecoder.MethodScope
Modifier and Type | Field and Description |
---|---|
protected boolean |
canonicalizeReads |
protected ConstantReflectionProvider |
constantReflection |
protected MetaAccessProvider |
metaAccess |
protected StampProvider |
stampProvider |
architecture
Constructor and Description |
---|
SimplifyingGraphDecoder(MetaAccessProvider metaAccess,
ConstantReflectionProvider constantReflection,
StampProvider stampProvider,
boolean canonicalizeReads,
Architecture architecture) |
Modifier and Type | Method and Description |
---|---|
protected Node |
addFloatingNode(GraphDecoder.MethodScope methodScope,
Node node) |
protected boolean |
allowLazyPhis() |
protected void |
cleanupGraph(GraphDecoder.MethodScope methodScope,
Graph.Mark start)
Removes unnecessary nodes from the graph after decoding.
|
protected void |
handleFixedNode(GraphDecoder.MethodScope methodScope,
GraphDecoder.LoopScope loopScope,
int nodeOrderId,
FixedNode node)
Hook for subclasses.
|
protected Node |
handleFloatingNodeBeforeAdd(GraphDecoder.MethodScope methodScope,
GraphDecoder.LoopScope loopScope,
Node node)
Hook for subclasses to process a non-fixed node before it is added to the graph.
|
checkLoopExplosionIteration, decode, decode, decodeFloatingNode, detectLoops, ensureNodeCreated, handleFloatingNodeAfterAdd, handleInvoke, handleLoopExplosionBegin, handleLoopExplosionEnd, handleLoopExplosionProxyNodes, handlePhiFunctions, handleProxyNodes, instantiateNode, lookupNode, makeInputNodes, makeStubNode, makeSuccessorStubs, processNextNode, readObject, readOrderId, readProperties, registerNode, skipEdge, verifyEdges
protected final MetaAccessProvider metaAccess
protected final ConstantReflectionProvider constantReflection
protected final StampProvider stampProvider
protected final boolean canonicalizeReads
public SimplifyingGraphDecoder(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, StampProvider stampProvider, boolean canonicalizeReads, Architecture architecture)
protected void cleanupGraph(GraphDecoder.MethodScope methodScope, Graph.Mark start)
GraphDecoder
cleanupGraph
in class GraphDecoder
methodScope
- The current method.start
- Marker for the begin of the current method in the graph.protected boolean allowLazyPhis()
allowLazyPhis
in class GraphDecoder
protected void handleFixedNode(GraphDecoder.MethodScope methodScope, GraphDecoder.LoopScope loopScope, int nodeOrderId, FixedNode node)
GraphDecoder
handleFixedNode
in class GraphDecoder
methodScope
- The current method.loopScope
- The current loop.nodeOrderId
- The orderId of the node.node
- The node to be simplified.protected Node handleFloatingNodeBeforeAdd(GraphDecoder.MethodScope methodScope, GraphDecoder.LoopScope loopScope, Node node)
GraphDecoder
handleFloatingNodeBeforeAdd
in class GraphDecoder
methodScope
- The current method.loopScope
- The current loop.node
- The node to be canonicalized.protected Node addFloatingNode(GraphDecoder.MethodScope methodScope, Node node)
addFloatingNode
in class GraphDecoder