Mercurial > hg > truffle
changeset 5674:b5a53a04913c
In inlining, refresh InlineInfo when making inline decision in case the receiver has a better stamp than when the original InlineInfo where created
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 21 Jun 2012 16:31:10 +0200 |
parents | d695272dd80a |
children | 776366f3a41a |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/InliningPhase.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoweringPhase.java |
diffstat | 2 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/InliningPhase.java Thu Jun 21 16:29:56 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/InliningPhase.java Thu Jun 21 16:31:10 2012 +0200 @@ -91,12 +91,17 @@ } while (!inlineCandidates.isEmpty() && graph.getNodeCount() < GraalOptions.MaximumDesiredSize) { - final InlineInfo info = inlineCandidates.remove(); + InlineInfo candidate = inlineCandidates.remove(); + if (!candidate.invoke.node().isAlive()) { + continue; + } + // refresh infos + final InlineInfo info = InliningUtil.getInlineInfo(candidate.invoke, candidate.level, runtime, assumptions, this, optimisticOpts); boolean inline = Debug.scope("InliningDecisions", new Callable<Boolean>() { @Override public Boolean call() throws Exception { - return info.invoke.node().isAlive() && inliningPolicy.isWorthInlining(graph, info); + return info != null && inliningPolicy.isWorthInlining(graph, info); } });
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoweringPhase.java Thu Jun 21 16:29:56 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoweringPhase.java Thu Jun 21 16:31:10 2012 +0200 @@ -95,7 +95,7 @@ if (graph.getNewNodes(mark).filter(FixedNode.class).isEmpty()) { break; } - graph.verify(); + assert graph.verify(); processed.grow(); }