* graph. */
Graph parent;
- HashMap<AllocNode, HashSet<Edge>> nodeMap;
- HashMap<TempDescriptor, HashSet<Edge>> varMap;
- HashMap<AllocNode, HashSet<Edge>> backMap;
- HashSet<Edge> strongUpdateSet;
+ HashMap<AllocNode, MySet<Edge>> nodeMap;
+ HashMap<TempDescriptor, MySet<Edge>> varMap;
+ HashMap<AllocNode, MySet<Edge>> backMap;
+ MySet<Edge> strongUpdateSet;
+ MySet<Edge> reachEdge;
+ HashSet<AllocNode> reachNode;
+
+ /* Need this information for mapping in callee results */
+ HashSet<AllocNode> nodeAges;
+ HashMap<AllocNode, Boolean> oldNodes;
public Graph(Graph parent) {
- nodeMap=new HashMap<AllocNode, HashSet<Edge>>();
- backMap=new HashMap<AllocNode, HashSet<Edge>>();
- varMap=new HashMap<TempDescriptor, HashSet<Edge>>();
+ nodeMap=new HashMap<AllocNode, MySet<Edge>>();
+ varMap=new HashMap<TempDescriptor, MySet<Edge>>();
+ nodeAges=new HashSet<AllocNode>();
+ oldNodes=new HashMap<AllocNode, Boolean>();
this.parent=parent;
}
- public HashSet<Edge> getEdges(TempDescriptor tmp) {
+ public boolean containsNode(AllocNode node) {
+ return nodeAges.contains(node)||parent!=null&&parent.nodeAges.contains(node);
+ }
+
+ public MySet<Edge> getEdges(TempDescriptor tmp) {
if (varMap.containsKey(tmp))
return varMap.get(tmp);
else if (parent!=null&&parent.varMap.containsKey(tmp))
else return emptySet;
}
- public HashSet<Edge> getEdges(AllocNode node) {
+ public MySet<Edge> getEdges(AllocNode node) {
if (nodeMap.containsKey(node))
return nodeMap.get(node);
else if (parent!=null&&parent.nodeMap.containsKey(node))
else return emptySet;
}
- public static HashSet<Edge> emptySet=new HashSet<Edge>();
+ public static MySet<Edge> emptySet=new MySet<Edge>();
}
\ No newline at end of file