# HG changeset patch # User Miguel Garcia # Date 1400590880 -7200 # Node ID f5934280f47c336eebc234be8f54b324f75b16f7 # Parent 64deb577ff5ca380ae946a5c3b0e59c416beab3a [inline-info] step 3, InlineInfo leaves populateInlineInfo fully initialized diff -r 64deb577ff5c -r f5934280f47c graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java --- 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; }