private final class CanonicalizerPhase.Instance extends Phase
Modifier and Type | Class and Description |
---|---|
private class |
CanonicalizerPhase.Instance.Tool |
Modifier and Type | Field and Description |
---|---|
private PhaseContext |
context |
private Iterable<? extends Node> |
initWorkingSet |
private Graph.Mark |
newNodesMark |
private CanonicalizerPhase.Instance.Tool |
tool |
private NodeWorkList |
workList |
BEFORE_PHASE_DUMP_LEVEL, PHASE_DUMP_LEVEL
Modifier | Constructor and Description |
---|---|
private |
Instance(PhaseContext context) |
private |
Instance(PhaseContext context,
Graph.Mark newNodesMark) |
private |
Instance(PhaseContext context,
Iterable<? extends Node> workingSet) |
private |
Instance(PhaseContext context,
Iterable<? extends Node> workingSet,
Graph.Mark newNodesMark) |
Modifier and Type | Method and Description |
---|---|
private AutoCloseable |
getCanonicalizeableContractAssertion(Node node) |
private boolean |
performReplacement(Node node,
Node newCanonical) |
private void |
processNode(Node node) |
private void |
processWorkSet(StructuredGraph graph) |
protected void |
run(StructuredGraph graph) |
boolean |
tryCanonicalize(Node node,
NodeClass<?> nodeClass) |
boolean |
tryGlobalValueNumbering(Node node,
NodeClass<?> nodeClass) |
private boolean |
tryInferStamp(ValueNode node)
Calls
ValueNode.inferStamp() on the node and, if it returns true (which means
that the stamp has changed), re-queues the node's usages. |
apply, apply, createName, getName
private final Graph.Mark newNodesMark
private final PhaseContext context
private final Iterable<? extends Node> initWorkingSet
private NodeWorkList workList
private CanonicalizerPhase.Instance.Tool tool
private Instance(PhaseContext context)
private Instance(PhaseContext context, Iterable<? extends Node> workingSet)
private Instance(PhaseContext context, Graph.Mark newNodesMark)
private Instance(PhaseContext context, Iterable<? extends Node> workingSet, Graph.Mark newNodesMark)
protected void run(StructuredGraph graph)
private void processWorkSet(StructuredGraph graph)
private void processNode(Node node)
public boolean tryGlobalValueNumbering(Node node, NodeClass<?> nodeClass)
private AutoCloseable getCanonicalizeableContractAssertion(Node node)
public boolean tryCanonicalize(Node node, NodeClass<?> nodeClass)
private boolean performReplacement(Node node, Node newCanonical)
private boolean tryInferStamp(ValueNode node)
ValueNode.inferStamp()
on the node and, if it returns true (which means
that the stamp has changed), re-queues the node's usages. If the stamp has changed then
this method also checks if the stamp now describes a constant integer value, in which
case the node is replaced with a constant.