1 package Analysis.OwnershipAnalysis;
7 public abstract class OwnershipNode {
9 protected HashSet<ReferenceEdge> referencees;
11 public OwnershipNode() {
12 referencees = new HashSet<ReferenceEdge>();
16 public Iterator<ReferenceEdge> iteratorToReferencees() {
17 return referencees.iterator();
20 public Iterator<ReferenceEdge> iteratorToReferenceesClone() {
21 HashSet<ReferenceEdge> clone = (HashSet<ReferenceEdge>) referencees.clone();
22 return clone.iterator();
25 public int getNumReferencees() {
26 return referencees.size();
29 public void addReferencee( ReferenceEdge edge ) {
32 referencees.add( edge );
35 public void removeReferencee( ReferenceEdge edge ) {
37 assert referencees.contains( edge );
39 referencees.remove( edge );
42 public ReferenceEdge getReferenceTo( HeapRegionNode hrn,
43 FieldDescriptor fd ) {
46 Iterator<ReferenceEdge> itrEdge = referencees.iterator();
47 while( itrEdge.hasNext() ) {
48 ReferenceEdge edge = itrEdge.next();
49 if( edge.getDst().equals( hrn ) &&
50 edge.getFieldDesc() == fd ) {