Mercurial > hg > graal-compiler
changeset 10797:bb3cfaa7897c
Truffle: try out a new inlining policy
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Wed, 17 Jul 2013 18:02:19 +0200 |
parents | b84bb0de0092 |
children | 7d3e74190a09 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java |
diffstat | 2 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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<InlinableCallSiteInfo> inlinableCallSites) { Collections.sort(inlinableCallSites, new Comparator<InlinableCallSiteInfo>() {
--- 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<Integer> TruffleGraphMaxNodes = new OptionValue<>(12000); @Option(help = "") + public static final OptionValue<Integer> TruffleInliningMaxRecursiveDepth = new OptionValue<>(2); + @Option(help = "") public static final OptionValue<Integer> TruffleInliningMaxCallerSize = new OptionValue<>(600); @Option(help = "") public static final OptionValue<Integer> TruffleInliningMaxCalleeSize = new OptionValue<>(62); @Option(help = "") - public static final OptionValue<Integer> TruffleInliningMaxRecursiveDepth = new OptionValue<>(2); + public static final OptionValue<Integer> TruffleInliningTrivialSize = new OptionValue<>(10); + @Option(help = "") + public static final OptionValue<Double> TruffleInliningMinFrequency = new OptionValue<>(0.3); // tracing @Option(help = "")