@Override public final void accept(final ControlFlowNode b) { if (b == entryPoint) { return; } ControlFlowNode newImmediateDominator = null; for (final ControlFlowNode p : b.getPredecessors()) { if (p.isVisited() && p != b) { newImmediateDominator = p; break; } } if (newImmediateDominator == null) { throw new IllegalStateException("Could not compute new immediate dominator!"); } for (final ControlFlowNode p : b.getPredecessors()) { if (p != b && p.getImmediateDominator() != null) { newImmediateDominator = findCommonDominator(p, newImmediateDominator); } } if (b.getImmediateDominator() != newImmediateDominator) { b.setImmediateDominator(newImmediateDominator); changed.set(true); } } }
@Override public final void accept(final ControlFlowNode b) { if (b == entryPoint) { return; } ControlFlowNode newImmediateDominator = null; for (final ControlFlowNode p : b.getPredecessors()) { if (p.isVisited() && p != b) { newImmediateDominator = p; break; } } if (newImmediateDominator == null) { throw new IllegalStateException("Could not compute new immediate dominator!"); } for (final ControlFlowNode p : b.getPredecessors()) { if (p != b && p.getImmediateDominator() != null) { newImmediateDominator = findCommonDominator(p, newImmediateDominator); } } if (b.getImmediateDominator() != newImmediateDominator) { b.setImmediateDominator(newImmediateDominator); changed.set(true); } } }
@Override public final void accept(final ControlFlowNode b) { if (b == entryPoint) { return; } ControlFlowNode newImmediateDominator = null; for (final ControlFlowNode p : b.getPredecessors()) { if (p.isVisited() && p != b) { newImmediateDominator = p; break; } } if (newImmediateDominator == null) { throw new IllegalStateException("Could not compute new immediate dominator!"); } for (final ControlFlowNode p : b.getPredecessors()) { if (p != b && p.getImmediateDominator() != null) { newImmediateDominator = findCommonDominator(p, newImmediateDominator); } } if (b.getImmediateDominator() != newImmediateDominator) { b.setImmediateDominator(newImmediateDominator); changed.set(true); } } }