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, verifyEdgesprotected 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)
GraphDecodercleanupGraph in class GraphDecodermethodScope - The current method.start - Marker for the begin of the current method in the graph.protected boolean allowLazyPhis()
allowLazyPhis in class GraphDecoderprotected void handleFixedNode(GraphDecoder.MethodScope methodScope, GraphDecoder.LoopScope loopScope, int nodeOrderId, FixedNode node)
GraphDecoderhandleFixedNode in class GraphDecodermethodScope - 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)
GraphDecoderhandleFloatingNodeBeforeAdd in class GraphDecodermethodScope - 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