changeset 15677:1b5ea45f0b87

[inlining] moved doInline() to InliningData, as prereq for upcoming steps
author Miguel Garcia <miguel.m.garcia@oracle.com>
date Thu, 15 May 2014 14:48:19 +0200
parents 7ce628bae4a5
children d8a79b70778c
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java
diffstat 1 files changed, 41 insertions(+), 41 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:43:58 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningPhase.java	Thu May 15 14:48:19 2014 +0200
@@ -64,10 +64,7 @@
     private int inliningCount;
     private int maxMethodPerInlining = Integer.MAX_VALUE;
 
-    // Metrics
-    private static final DebugMetric metricInliningPerformed = Debug.metric("InliningPerformed");
     private static final DebugMetric metricInliningConsidered = Debug.metric("InliningConsidered");
-    private static final DebugMetric metricInliningRuns = Debug.metric("InliningRuns");
 
     public InliningPhase(CanonicalizerPhase canonicalizer) {
         this(new GreedyInliningPolicy(null), canonicalizer);
@@ -203,7 +200,7 @@
         metricInliningConsidered.increment();
 
         if (inliningPolicy.isWorthInlining(probabilities, context.getReplacements(), callee, inliningDepth, calleeInfo.probability(), calleeInfo.relevance(), true)) {
-            doInline(callerCallsiteHolder, calleeInfo, callerAssumptions, context, canonicalizer);
+            InliningData.doInline(callerCallsiteHolder, calleeInfo, callerAssumptions, context, canonicalizer);
             return true;
         }
 
@@ -214,43 +211,6 @@
         return false;
     }
 
-    private static void doInline(CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, Assumptions callerAssumptions, HighTierContext context, CanonicalizerPhase canonicalizer) {
-        StructuredGraph callerGraph = callerCallsiteHolder.graph();
-        Mark markBeforeInlining = callerGraph.getMark();
-        InlineInfo callee = calleeInfo.callee();
-        try {
-            try (Scope scope = Debug.scope("doInline", callerGraph)) {
-                List<Node> invokeUsages = callee.invoke().asNode().usages().snapshot();
-                callee.inline(new Providers(context), callerAssumptions);
-                callerAssumptions.record(calleeInfo.assumptions());
-                metricInliningRuns.increment();
-                Debug.dump(callerGraph, "after %s", callee);
-
-                if (OptCanonicalizer.getValue()) {
-                    Mark markBeforeCanonicalization = callerGraph.getMark();
-                    canonicalizer.applyIncremental(callerGraph, context, invokeUsages, markBeforeInlining);
-
-                    // process invokes that are possibly created during canonicalization
-                    for (Node newNode : callerGraph.getNewNodes(markBeforeCanonicalization)) {
-                        if (newNode instanceof Invoke) {
-                            callerCallsiteHolder.pushInvoke((Invoke) newNode);
-                        }
-                    }
-                }
-
-                callerCallsiteHolder.computeProbabilities();
-
-                metricInliningPerformed.increment();
-            }
-        } catch (BailoutException bailout) {
-            throw bailout;
-        } catch (AssertionError | RuntimeException e) {
-            throw new GraalInternalError(e).addContext(callee.toString());
-        } catch (GraalInternalError e) {
-            throw e.addContext(callee.toString());
-        }
-    }
-
     /**
      * Holds the data for building the callee graphs recursively: graphs and invocations (each
      * invocation can have multiple graphs).
@@ -258,6 +218,9 @@
     static class InliningData {
 
         private static final CallsiteHolder DUMMY_CALLSITE_HOLDER = new CallsiteHolder(null, 1.0, 1.0);
+        // Metrics
+        private static final DebugMetric metricInliningPerformed = Debug.metric("InliningPerformed");
+        private static final DebugMetric metricInliningRuns = Debug.metric("InliningRuns");
 
         /**
          * Call hierarchy from outer most call (i.e., compilation unit) to inner most callee.
@@ -281,6 +244,43 @@
             pushGraph(rootGraph, 1.0, 1.0);
         }
 
+        private static void doInline(CallsiteHolder callerCallsiteHolder, MethodInvocation calleeInfo, Assumptions callerAssumptions, HighTierContext context, CanonicalizerPhase canonicalizer) {
+            StructuredGraph callerGraph = callerCallsiteHolder.graph();
+            Mark markBeforeInlining = callerGraph.getMark();
+            InlineInfo callee = calleeInfo.callee();
+            try {
+                try (Scope scope = Debug.scope("doInline", callerGraph)) {
+                    List<Node> invokeUsages = callee.invoke().asNode().usages().snapshot();
+                    callee.inline(new Providers(context), callerAssumptions);
+                    callerAssumptions.record(calleeInfo.assumptions());
+                    metricInliningRuns.increment();
+                    Debug.dump(callerGraph, "after %s", callee);
+
+                    if (OptCanonicalizer.getValue()) {
+                        Mark markBeforeCanonicalization = callerGraph.getMark();
+                        canonicalizer.applyIncremental(callerGraph, context, invokeUsages, markBeforeInlining);
+
+                        // process invokes that are possibly created during canonicalization
+                        for (Node newNode : callerGraph.getNewNodes(markBeforeCanonicalization)) {
+                            if (newNode instanceof Invoke) {
+                                callerCallsiteHolder.pushInvoke((Invoke) newNode);
+                            }
+                        }
+                    }
+
+                    callerCallsiteHolder.computeProbabilities();
+
+                    metricInliningPerformed.increment();
+                }
+            } catch (BailoutException bailout) {
+                throw bailout;
+            } catch (AssertionError | RuntimeException e) {
+                throw new GraalInternalError(e).addContext(callee.toString());
+            } catch (GraalInternalError e) {
+                throw e.addContext(callee.toString());
+            }
+        }
+
         /**
          * Process the next invoke and enqueue all its graphs for processing.
          */