# HG changeset patch # User Christian Haeubl # Date 1330743051 28800 # Node ID a7c079d5dc87ce683e40e56e6adcddb183279444 # Parent 77f816847d917c55710929a8d2dcb6c026105c13 try to reduce MaximumGreedyInlineSize significantly diff -r 77f816847d91 -r a7c079d5dc87 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java Fri Mar 02 17:52:12 2012 -0800 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java Fri Mar 02 18:50:51 2012 -0800 @@ -64,7 +64,8 @@ // DynamicSizeBasedInliningPolicy (3) public static int MaximumInlineSize = 35; // GreedySizeBasedInlining (4) - public static int MaximumGreedyInlineSize = 200; + public static int MaximumGreedyInlineSize = 100; + public static int InliningBonusPerTransferredValue = 10; // Common options for inlining policies 1 to 4 public static float NestedInliningSizeRatio = 1f; public static float BoostInliningForEscapeAnalysis = 2f; diff -r 77f816847d91 -r a7c079d5dc87 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Fri Mar 02 17:52:12 2012 -0800 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Fri Mar 02 18:50:51 2012 -0800 @@ -331,8 +331,18 @@ return false; } + double maxSize = GraalOptions.MaximumGreedyInlineSize; + if (GraalOptions.InliningBonusPerTransferredValue != 0) { + RiSignature signature = info.invoke.callTarget().targetMethod().signature(); + int transferredValues = signature.argumentCount(true); + if (signature.returnKind(false) != CiKind.Void) { + transferredValues++; + } + maxSize += transferredValues * GraalOptions.InliningBonusPerTransferredValue; + } + double inlineRatio = Math.min(GraalOptions.ProbabilityCapForInlining, info.invoke.probability()); - double maxSize = Math.pow(GraalOptions.NestedInliningSizeRatio, info.level) * GraalOptions.MaximumGreedyInlineSize * inlineRatio; + maxSize = Math.pow(GraalOptions.NestedInliningSizeRatio, info.level) * maxSize * inlineRatio; maxSize = Math.max(maxSize, GraalOptions.MaximumTrivialSize); if (info.weight <= maxSize) { diff -r 77f816847d91 -r a7c079d5dc87 graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java --- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java Fri Mar 02 17:52:12 2012 -0800 +++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java Fri Mar 02 18:50:51 2012 -0800 @@ -290,7 +290,7 @@ // java.util.concurrent.BlockingQueue is used to implement the compilation worker // queues. If a compiler thread triggers a compilation, then it may be blocked trying // to add something to its own queue. - return true; + return false; } }