# HG changeset patch # User Miguel Garcia # Date 1402046683 -7200 # Node ID 1461d7627707f4c722a88d4b1513147bf3e28e4d # Parent 1f3174c89c6bb6a051d2052e5296d8895ad6cf93 [inliner] another mutator that finds its way to the class where it belongs diff -r 1f3174c89c6b -r 1461d7627707 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java Tue Jun 03 19:57:29 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java Fri Jun 06 11:24:43 2014 +0200 @@ -28,10 +28,12 @@ import com.oracle.graal.api.meta.ResolvedJavaMethod; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; +import com.oracle.graal.phases.common.CanonicalizerPhase; import com.oracle.graal.phases.common.inlining.InliningUtil; import com.oracle.graal.phases.common.inlining.info.elem.Inlineable; import com.oracle.graal.phases.common.inlining.info.elem.InlineableMacroNode; import com.oracle.graal.phases.common.inlining.info.elem.InlineableGraph; +import com.oracle.graal.phases.tiers.HighTierContext; public abstract class AbstractInlineInfo implements InlineInfo { @@ -80,4 +82,11 @@ } } } + + public final void populateInlinableElements(HighTierContext context, Assumptions calleeAssumptions, CanonicalizerPhase canonicalizer) { + for (int i = 0; i < numberOfMethods(); i++) { + Inlineable elem = Inlineable.getInlineableElement(methodAt(i), invoke, context.replaceAssumptions(calleeAssumptions), canonicalizer); + setInlinableElement(i, elem); + } + } } diff -r 1f3174c89c6b -r 1461d7627707 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/InlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/InlineInfo.java Tue Jun 03 19:57:29 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/InlineInfo.java Fri Jun 06 11:24:43 2014 +0200 @@ -30,7 +30,9 @@ import com.oracle.graal.graph.*; import com.oracle.graal.nodes.Invoke; import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.phases.common.CanonicalizerPhase; import com.oracle.graal.phases.common.inlining.info.elem.Inlineable; +import com.oracle.graal.phases.tiers.HighTierContext; import com.oracle.graal.phases.util.Providers; /** @@ -82,4 +84,6 @@ void tryToDevirtualizeInvoke(MetaAccessProvider metaAccess, Assumptions assumptions); boolean shouldInline(); + + void populateInlinableElements(HighTierContext context, Assumptions calleeAssumptions, CanonicalizerPhase canonicalizer); } diff -r 1f3174c89c6b -r 1461d7627707 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 Jun 03 19:57:29 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Fri Jun 06 11:24:43 2014 +0200 @@ -405,10 +405,11 @@ Invoke invoke = callsiteHolder.popInvoke(); MethodInvocation callerInvocation = currentInvocation(); Assumptions parentAssumptions = callerInvocation.assumptions(); - Assumptions calleeAssumptions = new Assumptions(parentAssumptions.useOptimisticAssumptions()); - InlineInfo info = populateInlineInfo(invoke, parentAssumptions, calleeAssumptions); + InlineInfo info = getInlineInfo(invoke, parentAssumptions); if (info != null) { + Assumptions calleeAssumptions = new Assumptions(parentAssumptions.useOptimisticAssumptions()); + info.populateInlinableElements(context, calleeAssumptions, canonicalizer); double invokeProbability = callsiteHolder.invokeProbability(invoke); double invokeRelevance = callsiteHolder.invokeRelevance(invoke); MethodInvocation methodInvocation = new MethodInvocation(info, calleeAssumptions, invokeProbability, invokeRelevance); @@ -416,18 +417,6 @@ } } - 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; - } - public int graphCount() { return graphQueue.size(); }