# HG changeset patch # User Gilles Duboscq # Date 1340289070 -7200 # Node ID b5a53a04913c805b5ad2c487a33f348696bce0da # Parent d695272dd80a630d70865f9165b3f4a1639e2b24 In inlining, refresh InlineInfo when making inline decision in case the receiver has a better stamp than when the original InlineInfo where created diff -r d695272dd80a -r b5a53a04913c graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/InliningPhase.java --- 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() { @Override public Boolean call() throws Exception { - return info.invoke.node().isAlive() && inliningPolicy.isWorthInlining(graph, info); + return info != null && inliningPolicy.isWorthInlining(graph, info); } }); diff -r d695272dd80a -r b5a53a04913c graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/LoweringPhase.java --- 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(); }