changeset 5884:347fad1ea1d0

increase full unrolling budget for fixed-size loops
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 17 Aug 2012 14:12:00 +0200
parents 3bf1460f35e1
children d172b68e7762
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopPolicies.java
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java	Fri Aug 17 14:11:18 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java	Fri Aug 17 14:12:00 2012 +0200
@@ -108,6 +108,7 @@
     public static boolean FullUnroll                         = true;
     public static boolean LoopUnswitch                       = ____;
     public static int     FullUnrollMaxNodes                 = 150;
+    public static int     ExactFullUnrollMaxNodes            = 600;
     public static float   MinimumPeelProbability             = 0.35f;
     public static int     LoopUnswitchMaxIncrease            = 50;
     public static int     LoopUnswitchUncertaintyBoost       = 5;
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopPolicies.java	Fri Aug 17 14:11:18 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopPolicies.java	Fri Aug 17 14:12:00 2012 +0200
@@ -45,7 +45,8 @@
             return false;
         }
         long exactTrips = loop.counted().constantMaxTripCount();
-        int maxNodes = Math.min(GraalOptions.FullUnrollMaxNodes, GraalOptions.MaximumDesiredSize - loop.loopBegin().graph().getNodeCount());
+        int maxNodes = loop.counted().isConstantExactTripCount() ? GraalOptions.ExactFullUnrollMaxNodes : GraalOptions.FullUnrollMaxNodes;
+        maxNodes = Math.min(maxNodes, GraalOptions.MaximumDesiredSize - loop.loopBegin().graph().getNodeCount());
         int size = Math.max(1, loop.size() - 1 - loop.loopBegin().phis().count());
         return size * exactTrips <= maxNodes;
     }