1 package Analysis.Pointer;
3 import Analysis.Disjoint.PointerMethod;
4 import Analysis.Pointer.AllocFactory.AllocNode;
8 /* This is field is set is this Graph is just a delta on the parent
12 HashMap<AllocNode, MySet<Edge>> nodeMap;
13 HashMap<TempDescriptor, MySet<Edge>> varMap;
14 HashMap<AllocNode, MySet<Edge>> backMap;
15 MySet<Edge> strongUpdateSet;
16 MySet<Edge> reachEdge;
17 HashSet<AllocNode> reachNode;
19 /* Need this information for mapping in callee results */
20 HashSet<AllocNode> nodeAges;
22 public Graph(Graph parent) {
23 nodeMap=new HashMap<AllocNode, MySet<Edge>>();
24 backMap=new HashMap<AllocNode, MySet<Edge>>();
25 varMap=new HashMap<TempDescriptor, MySet<Edge>>();
26 nodeAges=new HashSet<AllocNode>();
30 public boolean containsNode(AllocNode node) {
31 return nodeAges.contains(node)||parent!=null&&parent.nodeAges.contains(node);
34 public MySet<Edge> getEdges(TempDescriptor tmp) {
35 if (varMap.containsKey(tmp))
36 return varMap.get(tmp);
37 else if (parent!=null&&parent.varMap.containsKey(tmp))
38 return parent.varMap.get(tmp);
42 public MySet<Edge> getEdges(AllocNode node) {
43 if (nodeMap.containsKey(node))
44 return nodeMap.get(node);
45 else if (parent!=null&&parent.nodeMap.containsKey(node))
46 return parent.nodeMap.get(node);
50 public static MySet<Edge> emptySet=new MySet<Edge>();