# HG changeset patch # User Gilles Duboscq # Date 1333997010 -7200 # Node ID b64933dc4830c6ead7638025af6e5cb12203e852 # Parent ae367987a18c7354cc7f0c9ddab9c4e4b4aed20f Peeling loop depending on their entry probability diff -r ae367987a18c -r b64933dc4830 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java Mon Apr 09 20:30:41 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java Mon Apr 09 20:43:30 2012 +0200 @@ -98,6 +98,9 @@ //rematerialize settings public static float MinimumUsageProbability = 0.95f; + //loop transform settings + public static float MinimumPeelProbability = 0.25f; + // debugging settings public static int MethodEndBreakpointGuards = 0; public static boolean ZapStackOnMethodEntry = ____; diff -r ae367987a18c -r b64933dc4830 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopTransformPhase.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopTransformPhase.java Mon Apr 09 20:30:41 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopTransformPhase.java Mon Apr 09 20:43:30 2012 +0200 @@ -24,6 +24,7 @@ import java.util.*; +import com.oracle.graal.compiler.*; import com.oracle.graal.compiler.loop.*; import com.oracle.graal.debug.*; import com.oracle.graal.lir.cfg.*; @@ -44,8 +45,12 @@ } }); for (Loop loop : loops) { - LoopTransformUtil.peel(loop); - Debug.dump(graph, "After peeling %s", loop); + double entryProbability = loop.loopBegin().forwardEnd().probability(); + if (entryProbability > GraalOptions.MinimumPeelProbability) { + Debug.log("Peeling %s", loop); + LoopTransformUtil.peel(loop); + Debug.dump(graph, "After peeling %s", loop); + } } } }