Mercurial > hg > graal-compiler
changeset 15705:619b194bb2a3
[inlining] consumer becomes initializer of the probabilities map
author | Miguel Garcia <miguel.m.garcia@oracle.com> |
---|---|
date | Fri, 16 May 2014 12:03:36 +0200 |
parents | c5ff0e1e53cf |
children | 8e2ed3a0812a |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java |
diffstat | 2 files changed, 6 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java Fri May 16 11:59:12 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java Fri May 16 12:03:36 2014 +0200 @@ -23,7 +23,6 @@ package com.oracle.graal.phases.common.inlining; import java.util.*; -import java.util.function.*; import com.oracle.graal.nodes.*; import com.oracle.graal.options.*; @@ -33,7 +32,6 @@ import com.oracle.graal.phases.common.inlining.walker.CallsiteHolder; import com.oracle.graal.phases.common.inlining.walker.InliningData; import com.oracle.graal.phases.common.inlining.walker.MethodInvocation; -import com.oracle.graal.phases.graph.*; import com.oracle.graal.phases.tiers.*; public class InliningPhase extends AbstractInliningPhase { @@ -141,10 +139,9 @@ @Override protected void run(final StructuredGraph graph, final HighTierContext context) { final InliningData data = new InliningData(graph, context, maxMethodPerInlining, canonicalizer, inliningPolicy); - ToDoubleFunction<FixedNode> probabilities = new FixedNodeProbabilityCache(); while (data.hasUnprocessedGraphs()) { - boolean wasInlined = data.moveForward(probabilities); + boolean wasInlined = data.moveForward(); if (wasInlined) { inliningCount++; }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Fri May 16 11:59:12 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Fri May 16 12:03:36 2014 +0200 @@ -37,6 +37,7 @@ import com.oracle.graal.phases.common.inlining.InliningUtil; import com.oracle.graal.phases.common.inlining.info.InlineInfo; import com.oracle.graal.phases.common.inlining.policy.InliningPolicy; +import com.oracle.graal.phases.graph.FixedNodeProbabilityCache; import com.oracle.graal.phases.tiers.HighTierContext; import com.oracle.graal.phases.util.Providers; @@ -63,6 +64,7 @@ */ private final ArrayDeque<CallsiteHolder> graphQueue = new ArrayDeque<>(); private final ArrayDeque<MethodInvocation> invocationQueue = new ArrayDeque<>(); + private final ToDoubleFunction<FixedNode> probabilities = new FixedNodeProbabilityCache(); private final HighTierContext context; private final int maxMethodPerInlining; @@ -124,7 +126,7 @@ /** * @return true iff inlining was actually performed */ - private boolean tryToInline(ToDoubleFunction<FixedNode> probabilities, CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, MethodInvocation parentInvocation, int inliningDepth) { + private boolean tryToInline(CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, MethodInvocation parentInvocation, int inliningDepth) { InlineInfo callee = calleeInfo.callee(); Assumptions callerAssumptions = parentInvocation.assumptions(); metricInliningConsidered.increment(); @@ -288,7 +290,7 @@ /** * @return true iff inlining was actually performed */ - public boolean moveForward(ToDoubleFunction<FixedNode> probabilities) { + public boolean moveForward() { final MethodInvocation currentInvocation = currentInvocation(); @@ -320,7 +322,7 @@ popInvocation(); final MethodInvocation parentInvoke = currentInvocation(); try (Debug.Scope s = Debug.scope("Inlining", inliningContext())) { - return tryToInline(probabilities, currentGraph(), currentInvocation, parentInvoke, inliningDepth() + 1); + return tryToInline(currentGraph(), currentInvocation, parentInvoke, inliningDepth() + 1); } catch (Throwable e) { throw Debug.handle(e); }