Mercurial > hg > graal-compiler
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) {