| Modifier and Type | Class and Description |
|---|---|
| public static enum |
| Modifier and Type | Field and Description |
|---|---|
| private final Map | |
| private BasicBlock | entryBB
Entry BB |
| private BasicBlock | exitBB
Exit BB |
| private BasicBlock | globalEnsureBB
BB that traps all exception-edges out of the cfg where we could add any cleanup/ensure code (ex: pop frames, etc.) |
| private final DirectedGraph | graph
The graph itself |
| private static final Logger | |
| private int | |
| pack-priv LinkedList | |
| private final Map | |
| pack-priv List | returnBBs
List of bbs that have a 'return' instruction |
| private final IRScope |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | |
| private void | |
| public void | |
| public boolean | |
| public DirectedGraph | |
| private BasicBlock | buildExitBasicBlock(Stack<ExceptionRegion> nestedExceptionRegions, BasicBlock firstBB, List<BasicBlock> returnBBs, List<BasicBlock> exceptionBBs, boolean nextIsFallThrough, BasicBlock currBB, BasicBlock entryBB)
Create special empty exit BasicBlock that all BasicBlocks will eventually flow into. |
| private LinkedList | |
| public CFG | |
| public void | |
| private BasicBlock | |
| private BasicBlock | |
| private void | |
| public void | |
| public Collection | |
| public BasicBlock | |
| public BasicBlock | |
| public BasicBlock | |
| public BasicBlock | |
| public Iterable | |
| public BasicBlock | |
| public Iterable | |
| public IRManager | |
| public int | |
| public int | |
| public BasicBlock | |
| public Iterable | |
| public Iterable | |
| public Iterable | |
| public Collection | |
| public Iterator | |
| public BasicBlock | |
| public Iterator | |
| public IRScope | |
| public Collection | |
| public int | |
| private boolean | |
| public void | |
| public int | |
| public LinkedList | |
| private void | |
| public void | |
| public void | |
| public void | |
| private void | removeNestedScopesFromBB(BasicBlock bb)
Wrapped IRClosures in dead BB are lexically rooted to that dead BB, so they can be removed from the parent scope if the BB they live in died. |
| public void | |
| public int | |
| public String | |
| public String |
| bbMap | back to summary |
|---|---|
| private final Map<Label, BasicBlock> bbMap | |
| entryBB | back to summary |
|---|---|
| private BasicBlock entryBB Entry BB | |
| exitBB | back to summary |
|---|---|
| private BasicBlock exitBB Exit BB | |
| globalEnsureBB | back to summary |
|---|---|
| private BasicBlock globalEnsureBB BB that traps all exception-edges out of the cfg where we could add any cleanup/ensure code (ex: pop frames, etc.) | |
| graph | back to summary |
|---|---|
| private final DirectedGraph<BasicBlock, CFG. The graph itself | |
| LOG | back to summary |
|---|---|
| private static final Logger LOG | |
| nextBBId | back to summary |
|---|---|
| private int nextBBId | |
| postOrderList | back to summary |
|---|---|
| pack-priv LinkedList<BasicBlock> postOrderList | |
| rescuerMap | back to summary |
|---|---|
| private final Map<BasicBlock, BasicBlock> rescuerMap | |
| returnBBs | back to summary |
|---|---|
| pack-priv List<BasicBlock> returnBBs List of bbs that have a 'return' instruction | |
| scope | back to summary |
|---|---|
| private final IRScope scope | |
| CFG | back to summary |
|---|---|
| public CFG(IRScope scope) | |
| addBasicBlock | back to summary |
|---|---|
| public void addBasicBlock(BasicBlock bb) | |
| addEdge | back to summary |
|---|---|
| public void addEdge(BasicBlock source, BasicBlock destination, CFG. | |
| addEdge | back to summary |
|---|---|
| private void addEdge(BasicBlock src, Label targetLabel, Map<Label, List<BasicBlock>> forwardRefs) | |
| addGlobalEnsureBB | back to summary |
|---|---|
| public void addGlobalEnsureBB(BasicBlock geb) | |
| bbIsProtected | back to summary |
|---|---|
| public boolean bbIsProtected(BasicBlock b) | |
| build | back to summary |
|---|---|
| public DirectedGraph Build the Control Flow Graph | |
| buildExitBasicBlock | back to summary |
|---|---|
| private BasicBlock buildExitBasicBlock(Stack<ExceptionRegion> nestedExceptionRegions, BasicBlock firstBB, List<BasicBlock> returnBBs, List<BasicBlock> exceptionBBs, boolean nextIsFallThrough, BasicBlock currBB, BasicBlock entryBB) Create special empty exit BasicBlock that all BasicBlocks will eventually flow into. All Edges to this 'dummy' BasicBlock will get marked with an edge type of EXIT. Special BasicBlocks worth noting: 1. Exceptions, Returns, Entry(why?)$ -> ExitBB 2. Returns$ -> ExitBB | |
| buildPostOrderList | back to summary |
|---|---|
| private LinkedList | |
| clone | back to summary |
|---|---|
| public CFG clone(CloneInfo info, IRScope clonedScope) Clone this CFG and return a new one. | |
| collapseStraightLineBBs | back to summary |
|---|---|
| public void collapseStraightLineBBs() | |
| createBB | back to summary |
|---|---|
| private BasicBlock createBB(Label label, Stack<ExceptionRegion> nestedExceptionRegions) | |
| createBB | back to summary |
|---|---|
| private BasicBlock createBB(Stack<ExceptionRegion> nestedExceptionRegions) | |
| deleteOrphanedBlocks | back to summary |
|---|---|
| private void deleteOrphanedBlocks(DirectedGraph<BasicBlock, CFG. | |
| fixupEdges | back to summary |
|---|---|
| public void fixupEdges(BasicBlock bb) | |
| getBasicBlocks | back to summary |
|---|---|
| public Collection | |
| getBBForLabel | back to summary |
|---|---|
| public BasicBlock getBBForLabel(Label label) | |
| getEntryBB | back to summary |
|---|---|
| public BasicBlock getEntryBB() | |
| getExitBB | back to summary |
|---|---|
| public BasicBlock getExitBB() | |
| getGlobalEnsureBB | back to summary |
|---|---|
| public BasicBlock getGlobalEnsureBB() | |
| getIncomingEdges | back to summary |
|---|---|
| public Iterable | |
| getIncomingSourceOfType | back to summary |
|---|---|
| public BasicBlock getIncomingSourceOfType(BasicBlock block, CFG. | |
| getIncomingSources | back to summary |
|---|---|
| public Iterable | |
| getManager | back to summary |
|---|---|
| public IRManager getManager() | |
| getMaxNodeID | back to summary |
|---|---|
| public int getMaxNodeID() | |
| getNextBBID | back to summary |
|---|---|
| public int getNextBBID() | |
| getOutgoingDestinationOfType | back to summary |
|---|---|
| public BasicBlock getOutgoingDestinationOfType(BasicBlock block, CFG. | |
| getOutgoingDestinations | back to summary |
|---|---|
| public Iterable | |
| getOutgoingDestinationsNotOfType | back to summary |
|---|---|
| public Iterable | |
| getOutgoingDestinationsOfType | back to summary |
|---|---|
| public Iterable | |
| getOutgoingEdges | back to summary |
|---|---|
| public Collection | |
| getPostOrderTraverser | back to summary |
|---|---|
| public Iterator | |
| getRescuerBBFor | back to summary |
|---|---|
| public BasicBlock getRescuerBBFor(BasicBlock block) | |
| getReversePostOrderTraverser | back to summary |
|---|---|
| public Iterator | |
| getScope | back to summary |
|---|---|
| public IRScope getScope() | |
| getSortedBasicBlocks | back to summary |
|---|---|
| public Collection | |
| inDegree | back to summary |
|---|---|
| public int inDegree(BasicBlock b) | |
| mergeBBs | back to summary |
|---|---|
| private boolean mergeBBs(BasicBlock a, BasicBlock b) | |
| optimize | back to summary |
|---|---|
| public void optimize() | |
| outDegree | back to summary |
|---|---|
| public int outDegree(BasicBlock b) | |
| postOrderList | back to summary |
|---|---|
| public LinkedList | |
| printError | back to summary |
|---|---|
| private void printError(String message) | |
| removeAllOutgoingEdgesForBB | back to summary |
|---|---|
| public void removeAllOutgoingEdgesForBB(BasicBlock b) | |
| removeBB | back to summary |
|---|---|
| public void removeBB(BasicBlock b) | |
| removeEdge | back to summary |
|---|---|
| public void removeEdge(BasicBlock a, BasicBlock b) | |
| removeNestedScopesFromBB | back to summary |
|---|---|
| private void removeNestedScopesFromBB(BasicBlock bb) Wrapped IRClosures in dead BB are lexically rooted to that dead BB, so they can be removed from the parent scope if the BB they live in died. | |
| setRescuerBB | back to summary |
|---|---|
| public void setRescuerBB(BasicBlock block, BasicBlock rescuerBlock) | |
| size | back to summary |
|---|---|
| public int size() How many BasicBlocks are there in this CFG? | |
| toStringGraph | back to summary |
|---|---|
| public String toStringGraph() | |
| toStringInstrs | back to summary |
|---|---|
| public String toStringInstrs() | |
| Modifier and Type | Field and Description |
|---|---|
| public static final CFG. | |
| public static final CFG. | |
| public static final CFG. | |
| public static final CFG. |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static CFG. | |
| public static CFG. |
| EXCEPTION | back to summary |
|---|---|
| public static final CFG. | |
| EXIT | back to summary |
|---|---|
| public static final CFG. | |
| FALL_THROUGH | back to summary |
|---|---|
| public static final CFG. | |
| REGULAR | back to summary |
|---|---|
| public static final CFG. | |
| EdgeType | back to summary |
|---|---|
| private EdgeType() | |
| valueOf | back to summary |
|---|---|
| public static CFG. | |
| values | back to summary |
|---|---|
| public static CFG. | |