changeset 15678:d8a79b70778c

[inlining] moved tryToInline() to InliningData, as prereq for upcoming steps
author Miguel Garcia <miguel.m.garcia@oracle.com>
date Thu, 15 May 2014 14:51:11 +0200
parents 1b5ea45f0b87
children 33d9741ccfe3
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java
diffstat 1 files changed, 24 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java	Thu May 15 14:48:19 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java	Thu May 15 14:51:11 2014 +0200
@@ -64,8 +64,6 @@
     private int inliningCount;
     private int maxMethodPerInlining = Integer.MAX_VALUE;
 
-    private static final DebugMetric metricInliningConsidered = Debug.metric("InliningConsidered");
-
     public InliningPhase(CanonicalizerPhase canonicalizer) {
         this(new GreedyInliningPolicy(null), canonicalizer);
     }
@@ -174,7 +172,8 @@
                         data.popInvocation();
                         final MethodInvocation parentInvoke = data.currentInvocation();
                         try (Scope s = Debug.scope("Inlining", data.inliningContext())) {
-                            boolean wasInlined = tryToInline(probabilities, data.currentGraph(), currentInvocation, parentInvoke, data.inliningDepth() + 1, context, inliningPolicy, canonicalizer);
+                            boolean wasInlined = InliningData.tryToInline(probabilities, data.currentGraph(), currentInvocation, parentInvoke, data.inliningDepth() + 1, context, inliningPolicy,
+                                            canonicalizer);
                             if (wasInlined) {
                                 inliningCount++;
                             }
@@ -191,27 +190,6 @@
     }
 
     /**
-     * @return true iff inlining was actually performed
-     */
-    private static boolean tryToInline(ToDoubleFunction<FixedNode> probabilities, CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, MethodInvocation parentInvocation,
-                    int inliningDepth, HighTierContext context, InliningPolicy inliningPolicy, CanonicalizerPhase canonicalizer) {
-        InlineInfo callee = calleeInfo.callee();
-        Assumptions callerAssumptions = parentInvocation.assumptions();
-        metricInliningConsidered.increment();
-
-        if (inliningPolicy.isWorthInlining(probabilities, context.getReplacements(), callee, inliningDepth, calleeInfo.probability(), calleeInfo.relevance(), true)) {
-            InliningData.doInline(callerCallsiteHolder, calleeInfo, callerAssumptions, context, canonicalizer);
-            return true;
-        }
-
-        if (context.getOptimisticOptimizations().devirtualizeInvokes()) {
-            callee.tryToDevirtualizeInvoke(context.getMetaAccess(), callerAssumptions);
-        }
-
-        return false;
-    }
-
-    /**
      * Holds the data for building the callee graphs recursively: graphs and invocations (each
      * invocation can have multiple graphs).
      */
@@ -221,6 +199,7 @@
         // Metrics
         private static final DebugMetric metricInliningPerformed = Debug.metric("InliningPerformed");
         private static final DebugMetric metricInliningRuns = Debug.metric("InliningRuns");
+        private static final DebugMetric metricInliningConsidered = Debug.metric("InliningConsidered");
 
         /**
          * Call hierarchy from outer most call (i.e., compilation unit) to inner most callee.
@@ -282,6 +261,27 @@
         }
 
         /**
+         * @return true iff inlining was actually performed
+         */
+        private static boolean tryToInline(ToDoubleFunction<FixedNode> probabilities, CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, MethodInvocation parentInvocation,
+                        int inliningDepth, HighTierContext context, InliningPolicy inliningPolicy, CanonicalizerPhase canonicalizer) {
+            InlineInfo callee = calleeInfo.callee();
+            Assumptions callerAssumptions = parentInvocation.assumptions();
+            metricInliningConsidered.increment();
+
+            if (inliningPolicy.isWorthInlining(probabilities, context.getReplacements(), callee, inliningDepth, calleeInfo.probability(), calleeInfo.relevance(), true)) {
+                doInline(callerCallsiteHolder, calleeInfo, callerAssumptions, context, canonicalizer);
+                return true;
+            }
+
+            if (context.getOptimisticOptimizations().devirtualizeInvokes()) {
+                callee.tryToDevirtualizeInvoke(context.getMetaAccess(), callerAssumptions);
+            }
+
+            return false;
+        }
+
+        /**
          * Process the next invoke and enqueue all its graphs for processing.
          */
         void processNextInvoke(HighTierContext context) {