--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/CanonicalizerPhase.java Fri Jul 07 10:37:52 2017 +0200
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/CanonicalizerPhase.java Fri Jul 07 09:40:47 2017 -0700
@@ -23,9 +23,9 @@
package org.graalvm.compiler.phases.common;
import org.graalvm.compiler.core.common.spi.ConstantFieldProvider;
-import org.graalvm.compiler.debug.Debug;
+import org.graalvm.compiler.debug.CounterKey;
import org.graalvm.compiler.debug.DebugCloseable;
-import org.graalvm.compiler.debug.DebugCounter;
+import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.graph.GraalGraphError;
import org.graalvm.compiler.graph.Graph;
import org.graalvm.compiler.graph.Graph.Mark;
@@ -62,13 +62,13 @@
public class CanonicalizerPhase extends BasePhase<PhaseContext> {
private static final int MAX_ITERATION_PER_NODE = 10;
- private static final DebugCounter COUNTER_CANONICALIZED_NODES = Debug.counter("CanonicalizedNodes");
- private static final DebugCounter COUNTER_PROCESSED_NODES = Debug.counter("ProcessedNodes");
- private static final DebugCounter COUNTER_CANONICALIZATION_CONSIDERED_NODES = Debug.counter("CanonicalizationConsideredNodes");
- private static final DebugCounter COUNTER_INFER_STAMP_CALLED = Debug.counter("InferStampCalled");
- private static final DebugCounter COUNTER_STAMP_CHANGED = Debug.counter("StampChanged");
- private static final DebugCounter COUNTER_SIMPLIFICATION_CONSIDERED_NODES = Debug.counter("SimplificationConsideredNodes");
- private static final DebugCounter COUNTER_GLOBAL_VALUE_NUMBERING_HITS = Debug.counter("GlobalValueNumberingHits");
+ private static final CounterKey COUNTER_CANONICALIZED_NODES = DebugContext.counter("CanonicalizedNodes");
+ private static final CounterKey COUNTER_PROCESSED_NODES = DebugContext.counter("ProcessedNodes");
+ private static final CounterKey COUNTER_CANONICALIZATION_CONSIDERED_NODES = DebugContext.counter("CanonicalizationConsideredNodes");
+ private static final CounterKey COUNTER_INFER_STAMP_CALLED = DebugContext.counter("InferStampCalled");
+ private static final CounterKey COUNTER_STAMP_CHANGED = DebugContext.counter("StampChanged");
+ private static final CounterKey COUNTER_SIMPLIFICATION_CONSIDERED_NODES = DebugContext.counter("SimplificationConsideredNodes");
+ private static final CounterKey COUNTER_GLOBAL_VALUE_NUMBERING_HITS = DebugContext.counter("GlobalValueNumberingHits");
private boolean globalValueNumber = true;
private boolean canonicalizeReads = true;
@@ -161,6 +161,7 @@
private NodeWorkList workList;
private Tool tool;
+ private DebugContext debug;
private Instance(PhaseContext context) {
this(context, null, null);
@@ -187,6 +188,7 @@
@Override
protected void run(StructuredGraph graph) {
+ this.debug = graph.getDebug();
boolean wholeGraph = newNodesMark == null || newNodesMark.isStart();
if (initWorkingSet == null) {
workList = graph.createIterativeNodeWorkList(wholeGraph, MAX_ITERATION_PER_NODE);
@@ -229,8 +231,8 @@
try (NodeEventScope nes = graph.trackNodeEvents(listener)) {
for (Node n : workList) {
boolean changed = processNode(n);
- if (changed && Debug.isDumpEnabled(Debug.DETAILED_LEVEL)) {
- Debug.dump(Debug.DETAILED_LEVEL, graph, "CanonicalizerPhase %s", n);
+ if (changed && debug.isDumpEnabled(DebugContext.DETAILED_LEVEL)) {
+ debug.dump(DebugContext.DETAILED_LEVEL, graph, "CanonicalizerPhase %s", n);
}
}
}
@@ -243,7 +245,7 @@
if (!node.isAlive()) {
return false;
}
- COUNTER_PROCESSED_NODES.increment();
+ COUNTER_PROCESSED_NODES.increment(debug);
if (GraphUtil.tryKillUnused(node)) {
return true;
}
@@ -261,7 +263,7 @@
Constant constant = valueNode.stamp().asConstant();
if (constant != null && !(node instanceof ConstantNode)) {
ConstantNode stampConstant = ConstantNode.forConstant(valueNode.stamp(), constant, context.getMetaAccess(), graph);
- Debug.log("Canonicalizer: constant stamp replaces %1s with %1s", valueNode, stampConstant);
+ debug.log("Canonicalizer: constant stamp replaces %1s with %1s", valueNode, stampConstant);
valueNode.replaceAtUsages(InputType.Value, stampConstant);
GraphUtil.tryKillUnused(valueNode);
return true;
@@ -282,8 +284,8 @@
if (newNode != null) {
assert !(node instanceof FixedNode || newNode instanceof FixedNode);
node.replaceAtUsagesAndDelete(newNode);
- COUNTER_GLOBAL_VALUE_NUMBERING_HITS.increment();
- Debug.log("GVN applied and new node is %1s", newNode);
+ COUNTER_GLOBAL_VALUE_NUMBERING_HITS.increment(debug);
+ debug.log("GVN applied and new node is %1s", newNode);
return true;
}
}
@@ -319,7 +321,7 @@
}
}
if (nodeClass.isCanonicalizable()) {
- COUNTER_CANONICALIZATION_CONSIDERED_NODES.increment();
+ COUNTER_CANONICALIZATION_CONSIDERED_NODES.increment(debug);
Node canonical;
try (AutoCloseable verify = getCanonicalizeableContractAssertion(node)) {
canonical = ((Canonicalizable) node).canonical(tool);
@@ -335,8 +337,8 @@
}
if (nodeClass.isSimplifiable() && simplify) {
- Debug.log(Debug.VERBOSE_LEVEL, "Canonicalizer: simplifying %s", node);
- COUNTER_SIMPLIFICATION_CONSIDERED_NODES.increment();
+ debug.log(DebugContext.VERBOSE_LEVEL, "Canonicalizer: simplifying %s", node);
+ COUNTER_SIMPLIFICATION_CONSIDERED_NODES.increment(debug);
node.simplify(tool);
return node.isDeleted();
}
@@ -362,12 +364,12 @@
// @formatter:on
private boolean performReplacement(final Node node, Node newCanonical) {
if (newCanonical == node) {
- Debug.log(Debug.VERBOSE_LEVEL, "Canonicalizer: work on %1s", node);
+ debug.log(DebugContext.VERBOSE_LEVEL, "Canonicalizer: work on %1s", node);
return false;
} else {
Node canonical = newCanonical;
- Debug.log("Canonicalizer: replacing %1s with %1s", node, canonical);
- COUNTER_CANONICALIZED_NODES.increment();
+ debug.log("Canonicalizer: replacing %1s with %1s", node, canonical);
+ COUNTER_CANONICALIZED_NODES.increment(debug);
StructuredGraph graph = (StructuredGraph) node.graph();
if (canonical != null && !canonical.isAlive()) {
assert !canonical.isDeleted();
@@ -428,9 +430,9 @@
*/
private boolean tryInferStamp(ValueNode node) {
if (node.isAlive()) {
- COUNTER_INFER_STAMP_CALLED.increment();
+ COUNTER_INFER_STAMP_CALLED.increment(debug);
if (node.inferStamp()) {
- COUNTER_STAMP_CHANGED.increment();
+ COUNTER_STAMP_CHANGED.increment(debug);
for (Node usage : node.usages()) {
workList.add(usage);
}