# HG changeset patch # User Andreas Woess # Date 1374076939 -7200 # Node ID bb3cfaa7897c3501b9113a90e3f6fcb63a53ac57 # Parent b84bb0de00925b33cb063a11d2ceb7f2dc92a132 Truffle: try out a new inlining policy diff -r b84bb0de0092 -r bb3cfaa7897c graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Wed Jul 17 16:05:48 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Wed Jul 17 18:02:19 2013 +0200 @@ -265,15 +265,20 @@ public boolean isWorthInlining(InlinableCallSiteInfo callSite) { return callSite.getInlineNodeCount() <= TruffleInliningMaxCalleeSize.getValue() && callSite.getInlineNodeCount() + callerNodeCount <= TruffleInliningMaxCallerSize.getValue() && - callSite.getCallCount() > 0 && callSite.getRecursiveDepth() < TruffleInliningMaxRecursiveDepth.getValue(); + callSite.getCallCount() > 0 && callSite.getRecursiveDepth() < TruffleInliningMaxRecursiveDepth.getValue() && + (frequency(callSite) >= TruffleInliningMinFrequency.getValue() || callSite.getInlineNodeCount() <= TruffleInliningTrivialSize.getValue()); } public double metric(InlinableCallSiteInfo callSite) { - double frequency = (double) callSite.getCallCount() / (double) callerInvocationCount; - double metric = ((double) callSite.getCallCount() / (double) callSite.getInlineNodeCount()) + frequency; + double cost = callSite.getInlineNodeCount(); + double metric = frequency(callSite) / cost; return metric; } + private double frequency(InlinableCallSiteInfo callSite) { + return (double) callSite.getCallCount() / (double) callerInvocationCount; + } + public void sortByRelevance(List inlinableCallSites) { Collections.sort(inlinableCallSites, new Comparator() { diff -r b84bb0de0092 -r bb3cfaa7897c graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Wed Jul 17 16:05:48 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Wed Jul 17 18:02:19 2013 +0200 @@ -58,11 +58,15 @@ @Option(help = "") public static final OptionValue TruffleGraphMaxNodes = new OptionValue<>(12000); @Option(help = "") + public static final OptionValue TruffleInliningMaxRecursiveDepth = new OptionValue<>(2); + @Option(help = "") public static final OptionValue TruffleInliningMaxCallerSize = new OptionValue<>(600); @Option(help = "") public static final OptionValue TruffleInliningMaxCalleeSize = new OptionValue<>(62); @Option(help = "") - public static final OptionValue TruffleInliningMaxRecursiveDepth = new OptionValue<>(2); + public static final OptionValue TruffleInliningTrivialSize = new OptionValue<>(10); + @Option(help = "") + public static final OptionValue TruffleInliningMinFrequency = new OptionValue<>(0.3); // tracing @Option(help = "")