public Set<Statement> getNeighboursSet(int type, int direction) { return new HashSet<>(getNeighbours(type, direction)); }
if (!all.contains(stat) || !all.containsAll(stat.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD))) { return false;
public static boolean isExitComponent(List<? extends Statement> lst) { Set<Statement> set = new HashSet<>(); for (Statement stat : lst) { set.addAll(stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD)); } set.removeAll(lst); return (set.size() == 0); }
if (!all.contains(stat) || !all.containsAll(stat.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD))) { return false;
public static Set<Statement> getUniquePredExceptions(Statement head) { Set<Statement> setHandlers = new HashSet<>(head.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_FORWARD)); setHandlers.removeIf(statement -> statement.getPredecessorEdges(StatEdge.TYPE_EXCEPTION).size() > 1); return setHandlers; }
private void buildExceptionRanges() { for (Statement stat : statement.getStats()) { List<Statement> lstPreds = stat.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD); if (!lstPreds.isEmpty()) { Set<Integer> set = new HashSet<>(); for (Statement st : lstPreds) { set.add(st.id); } mapExceptionRanges.put(stat.id, set); } } mapExceptionDoms = buildExceptionDoms(statement.getFirst().id); }
private void visit(Statement stat) { lstack.push(stat); dfsnummap.put(stat, ncounter); lowmap.put(stat, ncounter); ncounter++; List<Statement> lstSuccs = stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD); // TODO: set? lstSuccs.removeAll(setProcessed); for (Statement succ : lstSuccs) { int secvalue; if (tset.contains(succ)) { secvalue = dfsnummap.get(succ); } else { tset.add(succ); visit(succ); secvalue = lowmap.get(succ); } lowmap.put(stat, Math.min(lowmap.get(stat), secvalue)); } if (lowmap.get(stat).intValue() == dfsnummap.get(stat).intValue()) { List<Statement> lst = new ArrayList<>(); Statement v; do { v = lstack.pop(); lst.add(v); } while (v != stat); components.add(lst); } }
private SwitchStatement(Statement head, Statement poststat) { this(); first = head; stats.addWithKey(head, head.id); // find post node Set<Statement> lstNodes = new HashSet<>(head.getNeighbours(StatEdge.TYPE_REGULAR, DIRECTION_FORWARD)); // cluster nodes if (poststat != null) { post = poststat; lstNodes.remove(post); } default_edge = head.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL).get(0); for (Statement st : lstNodes) { stats.addWithKey(st, st.id); } }
Node node = mapNodes.get(stat.id); for (Statement succ : stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD)) { Node nodeSucc = mapNodes.get(succ.id);
List<Statement> hdsupp = handler.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD); addhd = (setNodes.containsAll(hdsupp) && (setNodes.size() > hdsupp.size() || setNodes.size() == 1)); // strict subset if (st != head) { setPreds.addAll(st.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_BACKWARD)); lstStack.addAll(st.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD)); setHandlers.addAll(st.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_FORWARD)); setHandlers.addAll(st.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_FORWARD)); if (!handler.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD).containsAll(setNodes)) { excok = false; break; if (setPreds.size() == 0) { if ((setNodes.size() > 1 || head.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_BACKWARD).contains(head)) && setNodes.size() < stats.size()) { if (checkSynchronizedCompleteness(setNodes)) {
HashSet<Statement> setPreds = new HashSet<>(stat.getNeighbours(StatEdge.TYPE_REGULAR, DIRECTION_BACKWARD)); setPreds.remove(first);
FastFixedSet<Statement> domsSuccs = factory.spawnEmptySet(); List<Statement> lstSuccs = stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD); for (int j = 0; j < lstSuccs.size(); j++) { Statement succ = lstSuccs.get(j); List<Statement> lstPreds = stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_BACKWARD); for (Statement pred : lstPreds) { setFlagNodes.add(pred);
preData = current.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_BACKWARD).get(0); preData = getLastDirectData(preData); if (preData != null && !preData.getExprents().isEmpty()) {
Set<Statement> setHandlers = new HashSet<>(head.getNeighbours(StatEdge.TYPE_EXCEPTION, DIRECTION_FORWARD)); for (Statement node : setNodes) { setHandlers.retainAll(node.getNeighbours(StatEdge.TYPE_EXCEPTION, DIRECTION_FORWARD)); !stat.getNeighbours(StatEdge.TYPE_EXCEPTION, DIRECTION_FORWARD).contains(post)) { // TODO: second condition redundant? stat.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, stat, post));
public Set<Statement> getNeighboursSet(int type, int direction) { return new HashSet<>(getNeighbours(type, direction)); }
public static boolean isExitComponent(List<Statement> lst) { HashSet<Statement> set = new HashSet<>(); for (Statement stat : lst) { set.addAll(stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD)); } set.removeAll(lst); return (set.size() == 0); }
public static HashSet<Statement> getUniquePredExceptions(Statement head) { HashSet<Statement> setHandlers = new HashSet<>(head.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_FORWARD)); Iterator<Statement> it = setHandlers.iterator(); while (it.hasNext()) { if (it.next().getPredecessorEdges(StatEdge.TYPE_EXCEPTION).size() > 1) { it.remove(); } } return setHandlers; }
private void buildExceptionRanges() { for (Statement stat : statement.getStats()) { List<Statement> lstPreds = stat.getNeighbours(StatEdge.TYPE_EXCEPTION, Statement.DIRECTION_BACKWARD); if (!lstPreds.isEmpty()) { Set<Integer> set = new HashSet<>(); for (Statement st : lstPreds) { set.add(st.id); } mapExceptionRanges.put(stat.id, set); } } mapExceptionDoms = buildExceptionDoms(statement.getFirst().id); }
private SwitchStatement(Statement head, Statement poststat) { this(); first = head; stats.addWithKey(head, head.id); // find post node Set<Statement> lstNodes = new HashSet<>(head.getNeighbours(StatEdge.TYPE_REGULAR, DIRECTION_FORWARD)); // cluster nodes if (poststat != null) { post = poststat; lstNodes.remove(post); } default_edge = head.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL).get(0); for (Statement st : lstNodes) { stats.addWithKey(st, st.id); } }
ncounter++; List<Statement> lstSuccs = stat.getNeighbours(StatEdge.TYPE_REGULAR, Statement.DIRECTION_FORWARD); // TODO: set? lstSuccs.removeAll(setProcessed);