Mercurial > hg > truffle
changeset 10751:7b5d7c42598b
Truffle: change sorting of inlinable call sites
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Thu, 11 Jul 2013 19:34:27 +0200 |
parents | 057154505878 |
children | e2f5ae9afdc5 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Thu Jul 11 20:58:54 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Thu Jul 11 19:34:27 2013 +0200 @@ -202,7 +202,10 @@ boolean inlined = false; for (InlinableCallSiteInfo inlinableCallSite : inlinableCallSites) { - if (policy.isWorthInlining(inlinableCallSite) && inlinableCallSite.getCallSite().inline(target)) { + if (!policy.isWorthInlining(inlinableCallSite)) { + break; + } + if (inlinableCallSite.getCallSite().inline(target)) { if (TraceTruffleInlining.getValue()) { printCallSiteInfo(policy, inlinableCallSite, "inlined"); } @@ -267,7 +270,11 @@ @Override public int compare(InlinableCallSiteInfo cs1, InlinableCallSiteInfo cs2) { - return Double.compare(metric(cs2), metric(cs1)); + int result = (isWorthInlining(cs2) ? 1 : 0) - (isWorthInlining(cs1) ? 1 : 0); + if (result == 0) { + return Double.compare(metric(cs2), metric(cs1)); + } + return result; } }); }