changeset 13679:53977508b27d

Make optimal anchor point available ouside OptimizeGuardAnchors phase
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 17 Jan 2014 16:22:26 +0100
parents 7cf35c337fcf
children 54ee3d025596
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchors.java
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchors.java	Fri Jan 17 16:13:05 2014 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchors.java	Fri Jan 17 16:22:26 2014 +0100
@@ -36,7 +36,7 @@
     private static final DebugMetric metricGuardsAnchorOptimized = Debug.metric("GuardsAnchorOptimized");
     private static final DebugMetric metricGuardsOptimizedAtSplit = Debug.metric("GuardsOptimizedAtSplit");
 
-    private static class LazyCFG {
+    public static class LazyCFG {
         private ControlFlowGraph cfg;
         private StructuredGraph graph;
 
@@ -76,6 +76,13 @@
         }
     }
 
+    public static AbstractBeginNode getOptimalAnchor(LazyCFG cfg, AbstractBeginNode begin) {
+        if (begin instanceof StartNode || begin.predecessor() instanceof ControlSplitNode) {
+            return begin;
+        }
+        return computeOptimalAnchor(cfg.get(), begin);
+    }
+
     private static AbstractBeginNode computeOptimalAnchor(ControlFlowGraph cfg, AbstractBeginNode begin) {
         Block anchor = cfg.blockFor(begin);
         while (anchor.getDominator() != null && anchor.getDominator().getPostdominator() == anchor) {