public abstract class LoopFragment extends Object
Modifier and Type | Field and Description |
---|---|
private Map<Node,Node> |
duplicationMap |
private LoopEx |
loop |
protected NodeBitMap |
nodes |
protected boolean |
nodesReady |
private LoopFragment |
original |
Constructor and Description |
---|
LoopFragment(LoopEx loop) |
LoopFragment(LoopEx loop,
LoopFragment original) |
private final LoopFragment original
protected NodeBitMap nodes
protected boolean nodesReady
private Map<Node,Node> duplicationMap
public LoopFragment(LoopEx loop)
public LoopFragment(LoopEx loop, LoopFragment original)
public abstract LoopFragment duplicate()
public abstract void insertBefore(LoopEx l)
public void disconnect()
public <New extends Node,Old extends New> New getDuplicatedNode(Old n)
protected <New extends Node,Old extends New> void putDuplicatedNode(Old oldNode, New newNode)
protected abstract ValueNode prim(ValueNode b)
b
- original valuepublic boolean isDuplicate()
public LoopFragment original()
public abstract NodeBitMap nodes()
public StructuredGraph graph()
protected abstract Graph.DuplicationReplacement getDuplicationReplacement()
protected abstract void finishDuplication()
protected void patchNodes(Graph.DuplicationReplacement dataFix)
protected static NodeBitMap computeNodes(Graph graph, Iterable<AbstractBeginNode> blocks)
protected static NodeBitMap computeNodes(Graph graph, Iterable<AbstractBeginNode> blocks, Iterable<LoopExitNode> earlyExits)
private static boolean markFloating(Node n, NodeBitMap loopNodes, NodeBitMap notloopNodes)
public static NodeIterable<AbstractBeginNode> toHirBlocks(Iterable<Block> blocks)
public static NodeIterable<LoopExitNode> toHirExits(Iterable<Block> blocks)
protected void mergeEarlyExits()