# HG changeset patch # User Christian Haeubl # Date 1329438687 28800 # Node ID f0569f6336f7fc123b82fff98f68e418d161b3cc # Parent 98a45f9d4341cf5d5f95c45a307a5ef516886e04 disabled megamorphic calls, trying an inlining policy where invokes within loops do not have any advantages diff -r 98a45f9d4341 -r f0569f6336f7 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 Thu Feb 16 14:02:08 2012 -0800 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java Thu Feb 16 16:31:27 2012 -0800 @@ -52,15 +52,16 @@ public static int MaximumDesiredSize = 6000; public static int MaximumRecursiveInlining = 1; public static int SmallCompiledCodeSize = 1500; + public static boolean LimitInlinedProbability = ____; // WeightBasedInliningPolicy (0) public static boolean ParseBeforeInlining = ____; public static float InliningSizePenaltyExp = 20; public static float MaximumInlineWeight = 1.25f; public static float InliningSizePenalty = 1; // StaticSizeBasedInliningPolicy (1), MinimumCodeSizeBasedInlining (2), - // DynamicSizeBasedInliningPolicy (3), GreedySizeBasedInlining (3) + // DynamicSizeBasedInliningPolicy (3), GreedySizeBasedInlining (4) public static int MaximumInlineSize = 35; - public static float NestedInliningSizeRatio = 0.9f; + public static float NestedInliningSizeRatio = 1f; public static float BoostInliningForEscapeAnalysis = 2f; public static int MaximumGreedyInlineSize = 250; public static float ProbabilityCapForInlining = 1f; @@ -72,7 +73,7 @@ // absolute probability analysis public static boolean ProbabilityAnalysis = true; - public static boolean PropagateLoopFrequency = true; + public static boolean PropagateLoopFrequency = ____; // profiling information public static int MatureExecutionsBranch = 50; diff -r 98a45f9d4341 -r f0569f6336f7 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java Thu Feb 16 14:02:08 2012 -0800 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java Thu Feb 16 16:31:27 2012 -0800 @@ -791,7 +791,11 @@ if (GraalOptions.ProbabilityAnalysis) { if (node instanceof FixedNode) { FixedNode fixed = (FixedNode) node; - fixed.setProbability(fixed.probability() * invokeProbability); + double newProbability = fixed.probability() * invokeProbability; + if (GraalOptions.LimitInlinedProbability) { + newProbability = Math.min(newProbability, invokeProbability); + } + fixed.setProbability(newProbability); } } if (node instanceof FrameState) { @@ -805,7 +809,6 @@ frameState.replaceAndDelete(stateAfter); } else if (frameState.bci == FrameState.AFTER_EXCEPTION_BCI) { if (frameState.isAlive()) { - // TODO (ch) it happens sometimes that we have a FrameState.AFTER_EXCEPTION_BCI but no stateAtExceptionEdge assert stateAtExceptionEdge != null; frameState.replaceAndDelete(stateAtExceptionEdge); } else {