diff graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java @ 16056:61cf8b61ee4e

[inliner] added a factory method in InlineInfo to make code uniform elsewhere
author Miguel Garcia <miguel.m.garcia@oracle.com>
date Fri, 06 Jun 2014 11:41:10 +0200
parents 1461d7627707
children 83efd0e68a4a
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java	Fri Jun 06 11:24:43 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java	Fri Jun 06 11:41:10 2014 +0200
@@ -33,6 +33,9 @@
 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.common.inlining.walker.CallsiteHolder;
+import com.oracle.graal.phases.common.inlining.walker.CallsiteHolderExplorable;
+import com.oracle.graal.phases.common.inlining.walker.InliningData;
 import com.oracle.graal.phases.tiers.HighTierContext;
 
 public abstract class AbstractInlineInfo implements InlineInfo {
@@ -89,4 +92,15 @@
             setInlinableElement(i, elem);
         }
     }
+
+    public final CallsiteHolder buildCallsiteHolderForElement(int index, double invokeProbability, double invokeRelevance) {
+        Inlineable elem = inlineableElementAt(index);
+        if (elem instanceof InlineableGraph) {
+            InlineableGraph ig = (InlineableGraph) elem;
+            return new CallsiteHolderExplorable(ig.getGraph(), invokeProbability * probabilityAt(index), invokeRelevance * relevanceAt(index));
+        } else {
+            assert elem instanceof InlineableMacroNode;
+            return InliningData.DUMMY_CALLSITE_HOLDER;
+        }
+    }
 }