Mercurial > hg > graal-compiler
changeset 5216:b64933dc4830
Peeling loop depending on their entry probability
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 09 Apr 2012 20:43:30 +0200 |
parents | ae367987a18c |
children | c4696edb6e95 a9e4b30968d4 c4381dacfca6 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoopTransformPhase.java |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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 = ____;
--- 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); + } } } }