public HashMap<Integer, Set<Integer>> getExtendedPostdominators(Statement statement) { this.statement = statement; HashSet<Integer> set = new HashSet<>(); for (Statement st : statement.getStats()) { set.add(st.id); } this.factory = new FastFixedSetFactory<>(set); lstReversePostOrderList = statement.getReversePostOrderList(); // try { // DotExporter.toDotFile(statement, new File("c:\\Temp\\stat1.dot")); // } catch (Exception ex) { // ex.printStackTrace(); // } calcDefaultReachableSets(); removeErroneousNodes(); DominatorTreeExceptionFilter filter = new DominatorTreeExceptionFilter(statement); filter.initialize(); filterOnExceptionRanges(filter); filterOnDominance(filter); Set<Entry<Integer, FastFixedSet<Integer>>> entries = mapExtPostdominators.entrySet(); HashMap<Integer, Set<Integer>> res = new HashMap<>(entries.size()); for (Entry<Integer, FastFixedSet<Integer>> entry : entries) { res.put(entry.getKey(), entry.getValue().toPlainSet()); } return res; }
public HashMap<Integer, Set<Integer>> getExtendedPostdominators(Statement statement) { this.statement = statement; HashSet<Integer> set = new HashSet<>(); for (Statement st : statement.getStats()) { set.add(st.id); } this.factory = new FastFixedSetFactory<>(set); lstReversePostOrderList = statement.getReversePostOrderList(); // try { // DotExporter.toDotFile(statement, new File("c:\\Temp\\stat1.dot")); // } catch (Exception ex) { // ex.printStackTrace(); // } calcDefaultReachableSets(); removeErroneousNodes(); DominatorTreeExceptionFilter filter = new DominatorTreeExceptionFilter(statement); filter.initialize(); filterOnExceptionRanges(filter); filterOnDominance(filter); Set<Entry<Integer, FastFixedSet<Integer>>> entries = mapExtPostdominators.entrySet(); HashMap<Integer, Set<Integer>> res = new HashMap<>(entries.size()); for (Entry<Integer, FastFixedSet<Integer>> entry : entries) { res.put(entry.getKey(), entry.getValue().toPlainSet()); } return res; }