src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopUnswitchingPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopUnswitchingPhase.java	Fri Jul  7 09:31:10 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopUnswitchingPhase.java	Fri Jul  7 09:31:10 2017

*** 23,76 **** --- 23,77 ---- package org.graalvm.compiler.loop.phases; import java.util.Iterator; import java.util.List; ! import org.graalvm.compiler.debug.Debug; ! import org.graalvm.compiler.debug.DebugCounter; ! import org.graalvm.compiler.debug.CounterKey; ! import org.graalvm.compiler.debug.DebugContext; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.loop.LoopEx; import org.graalvm.compiler.loop.LoopPolicies; import org.graalvm.compiler.loop.LoopsData; import org.graalvm.compiler.nodes.AbstractBeginNode; import org.graalvm.compiler.nodes.ControlSplitNode; import org.graalvm.compiler.nodes.StructuredGraph; public class LoopUnswitchingPhase extends ContextlessLoopPhase<LoopPolicies> { ! private static final DebugCounter UNSWITCHED = Debug.counter("Unswitched"); ! private static final DebugCounter UNSWITCH_CANDIDATES = Debug.counter("UnswitchCandidates"); ! private static final DebugCounter UNSWITCH_EARLY_REJECTS = Debug.counter("UnswitchEarlyRejects"); ! private static final CounterKey UNSWITCHED = DebugContext.counter("Unswitched"); ! private static final CounterKey UNSWITCH_CANDIDATES = DebugContext.counter("UnswitchCandidates"); ! private static final CounterKey UNSWITCH_EARLY_REJECTS = DebugContext.counter("UnswitchEarlyRejects"); public LoopUnswitchingPhase(LoopPolicies policies) { super(policies); } @Override protected void run(StructuredGraph graph) { + DebugContext debug = graph.getDebug(); if (graph.hasLoops()) { boolean unswitched; do { unswitched = false; final LoopsData dataUnswitch = new LoopsData(graph); for (LoopEx loop : dataUnswitch.outerFirst()) { if (getPolicies().shouldTryUnswitch(loop)) { List<ControlSplitNode> controlSplits = LoopTransformations.findUnswitchable(loop); if (controlSplits != null) { ! UNSWITCH_CANDIDATES.increment(debug); if (getPolicies().shouldUnswitch(loop, controlSplits)) { ! if (Debug.isLogEnabled()) { ! if (debug.isLogEnabled()) { logUnswitch(loop, controlSplits); } LoopTransformations.unswitch(loop, controlSplits); ! Debug.dump(Debug.DETAILED_LEVEL, graph, "After unswitch %s", controlSplits); ! UNSWITCHED.increment(); ! debug.dump(DebugContext.DETAILED_LEVEL, graph, "After unswitch %s", controlSplits); ! UNSWITCHED.increment(debug); unswitched = true; break; } } } else { ! UNSWITCH_EARLY_REJECTS.increment(debug); } } } while (unswitched); } }
*** 87,97 **** --- 88,98 ---- sb.append(", "); } } sb.append("]"); } ! loop.entryPoint().getDebug().log("%s", sb); } @Override public float codeSizeIncrease() { return 10.0f;

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopUnswitchingPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File