Mercurial > hg > truffle
changeset 5021:a7c079d5dc87
try to reduce MaximumGreedyInlineSize significantly
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Fri, 02 Mar 2012 18:50:51 -0800 |
parents | 77f816847d91 |
children | cbedef8b4d15 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java |
diffstat | 3 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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) {
--- 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; } }