private void dfs(CFANode pNode) { NodeInfo infov = map.get(pNode); n = n + 1; infov.semi = n; vertex.set(n, pNode); infov.label = pNode; infov.ancestor = null; int m; if (mode == 0) { m = pNode.getNumLeavingEdges(); } else { m = pNode.getNumEnteringEdges(); } FunctionSummaryEdge e; CFANode w; if (mode == 0) { e = pNode.getLeavingSummaryEdge(); } else { e = pNode.getEnteringSummaryEdge(); } if (e != null) { if (mode == 0) { w = e.getSuccessor(); } else { w = e.getPredecessor(); } NodeInfo infow = map.get(w); if (infow.semi == 0) { infow.parent = pNode; dfs(w); } infow.pred.add(pNode); } // else{ for (int i = 0; i < m; i++) { if (mode == 0) { w = pNode.getLeavingEdge(i).getSuccessor(); } else { w = pNode.getEnteringEdge(i).getPredecessor(); } NodeInfo infow = map.get(w); if (infow.semi == 0) { infow.parent = pNode; dfs(w); } infow.pred.add(pNode); } // } }