public class FloatingReadPhase extends Phase
Modifier and Type | Class and Description |
---|---|
static class |
FloatingReadPhase.FloatingReadClosure |
static class |
FloatingReadPhase.MemoryMapImpl |
Modifier and Type | Field and Description |
---|---|
private boolean |
createFloatingReads |
private boolean |
createMemoryMapNodes |
BEFORE_PHASE_DUMP_LEVEL, PHASE_DUMP_LEVEL
Constructor and Description |
---|
FloatingReadPhase() |
FloatingReadPhase(boolean createFloatingReads,
boolean createMemoryMapNodes) |
Modifier and Type | Method and Description |
---|---|
private static boolean |
checkNoImmutableLocations(Set<LocationIdentity> keys) |
static FloatingReadPhase.MemoryMapImpl |
mergeMemoryMaps(AbstractMergeNode merge,
List<? extends MemoryMap> states) |
protected void |
processBlock(Block b,
Set<LocationIdentity> currentState) |
private Set<LocationIdentity> |
processLoop(HIRLoop loop,
Map<LoopBeginNode,Set<LocationIdentity>> modifiedInLoops) |
protected void |
processNode(FixedNode node,
Set<LocationIdentity> currentState) |
private static Set<Node> |
removeExternallyUsedNodes(Set<Node> set)
Removes nodes from a given set that (transitively) have a usage outside the set.
|
protected void |
run(StructuredGraph graph) |
apply, apply, createName, getName
private boolean createFloatingReads
private boolean createMemoryMapNodes
public FloatingReadPhase()
public FloatingReadPhase(boolean createFloatingReads, boolean createMemoryMapNodes)
createFloatingReads
- specifies whether FloatableAccessNode
s like
ReadNode
should be converted into floating nodes (e.g.,
FloatingReadNode
s) where possiblecreateMemoryMapNodes
- a MemoryMapNode
will be created for each return if this
is trueprivate static Set<Node> removeExternallyUsedNodes(Set<Node> set)
protected void processNode(FixedNode node, Set<LocationIdentity> currentState)
protected void processBlock(Block b, Set<LocationIdentity> currentState)
private Set<LocationIdentity> processLoop(HIRLoop loop, Map<LoopBeginNode,Set<LocationIdentity>> modifiedInLoops)
protected void run(StructuredGraph graph)
public static FloatingReadPhase.MemoryMapImpl mergeMemoryMaps(AbstractMergeNode merge, List<? extends MemoryMap> states)
private static boolean checkNoImmutableLocations(Set<LocationIdentity> keys)