src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/ControlFlowGraph.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/ControlFlowGraph.java Thu Oct 31 14:23:06 2019 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/ControlFlowGraph.java Thu Oct 31 16:54:16 2019 -0700
@@ -38,6 +38,7 @@
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.graph.Node;
import org.graalvm.compiler.graph.NodeMap;
+import org.graalvm.compiler.graph.iterators.NodeIterable;
import org.graalvm.compiler.nodes.AbstractBeginNode;
import org.graalvm.compiler.nodes.AbstractEndNode;
import org.graalvm.compiler.nodes.ControlSinkNode;
@@ -416,6 +417,15 @@
return nodeToBlock.get(node);
}
+ public Block commonDominatorFor(NodeIterable<? extends Node> nodes) {
+ Block commonDom = null;
+ for (Node n : nodes) {
+ Block b = blockFor(n);
+ commonDom = (Block) AbstractControlFlowGraph.commonDominator(commonDom, b);
+ }
+ return commonDom;
+ }
+
@Override
public List<Loop<Block>> getLoops() {
return loops;