# HG changeset patch # User Lukas Stadler # Date 1345205520 -7200 # Node ID 347fad1ea1d0ee87c7f613996caadf5cb15cb2d1 # Parent 3bf1460f35e1a79c4a8918ff3523d88ec791baaf increase full unrolling budget for fixed-size loops diff -r 3bf1460f35e1 -r 347fad1ea1d0 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 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; diff -r 3bf1460f35e1 -r 347fad1ea1d0 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopPolicies.java --- 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; }