Mercurial > hg > truffle
changeset 15811:f5934280f47c
[inline-info] step 3, InlineInfo leaves populateInlineInfo fully initialized
author | Miguel Garcia <miguel.m.garcia@oracle.com> |
---|---|
date | Tue, 20 May 2014 15:01:20 +0200 |
parents | 64deb577ff5c |
children | ad064659ae4a |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Tue May 20 14:53:29 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Tue May 20 15:01:20 2014 +0200 @@ -403,18 +403,17 @@ Invoke invoke = callsiteHolder.popInvoke(); MethodInvocation callerInvocation = currentInvocation(); Assumptions parentAssumptions = callerInvocation.assumptions(); - InlineInfo info = populateInlineInfo(invoke, parentAssumptions); + Assumptions calleeAssumptions = new Assumptions(parentAssumptions.useOptimisticAssumptions()); + InlineInfo info = populateInlineInfo(invoke, parentAssumptions, calleeAssumptions); if (info != null) { double invokeProbability = callsiteHolder.invokeProbability(invoke); double invokeRelevance = callsiteHolder.invokeRelevance(invoke); - Assumptions calleeAssumptions = new Assumptions(parentAssumptions.useOptimisticAssumptions()); MethodInvocation methodInvocation = new MethodInvocation(info, calleeAssumptions, invokeProbability, invokeRelevance); pushInvocation(methodInvocation); for (int i = 0; i < info.numberOfMethods(); i++) { - Inlineable elem = Inlineable.getInlineableElement(info.methodAt(i), info.invoke(), context.replaceAssumptions(calleeAssumptions), canonicalizer); - info.setInlinableElement(i, elem); + Inlineable elem = info.inlineableElementAt(i); if (elem instanceof InlineableGraph) { pushGraph(((InlineableGraph) elem).getGraph(), invokeProbability * info.probabilityAt(i), invokeRelevance * info.relevanceAt(i)); } else { @@ -425,8 +424,15 @@ } } - private InlineInfo populateInlineInfo(Invoke invoke, Assumptions parentAssumptions) { + private InlineInfo populateInlineInfo(Invoke invoke, Assumptions parentAssumptions, Assumptions calleeAssumptions) { InlineInfo info = getInlineInfo(invoke, parentAssumptions); + if (info == null) { + return null; + } + for (int i = 0; i < info.numberOfMethods(); i++) { + Inlineable elem = Inlineable.getInlineableElement(info.methodAt(i), info.invoke(), context.replaceAssumptions(calleeAssumptions), canonicalizer); + info.setInlinableElement(i, elem); + } return info; }