/** * Transfers the control dependencies from a given {@link Exit} to the done {@link Exit}, creating * one if necessary. The given {@link Exit} and its peer are then removed. */ private void mergeBreakExit(Exit breakExit) { Exit doneExit = getExit(Exit.DONE); if (doneExit == null) { doneExit = makeExit(0, Exit.DONE); } OutBuf breakOutBuf = breakExit.getPeer(); OutBuf doneOutBuf = doneExit.getPeer(); Port donePort = doneOutBuf.getGoPort(); for (Entry breakEntry : breakOutBuf.getEntries()) { Exit drivingExit = breakEntry.getDrivingExit(); Entry doneEntry = doneOutBuf.makeEntry(drivingExit); doneEntry.addDependency(donePort, new ControlDependency(drivingExit.getDoneBus())); } breakOutBuf.disconnect(); breakExit.disconnect(); removeExit(breakExit); }