# HG changeset patch # User Gilles Duboscq # Date 1389972146 -3600 # Node ID 53977508b27dde97fc2b8e25f9e0222033847518 # Parent 7cf35c337fcfb347f00d599fcab0ad58b5624dd7 Make optimal anchor point available ouside OptimizeGuardAnchors phase diff -r 7cf35c337fcf -r 53977508b27d graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchors.java --- 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) {