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();
26 public void addReferencee( ReferenceEdge edge ) {
29 referencees.add( edge );
32 public void removeReferencee( ReferenceEdge edge ) {
34 assert referencees.contains( edge );
36 referencees.remove( edge );
39 public ReferenceEdge getReferenceTo( HeapRegionNode hrn,
40 FieldDescriptor fd ) {
43 Iterator<ReferenceEdge> itrEdge = referencees.iterator();
44 while( itrEdge.hasNext() ) {
45 ReferenceEdge edge = itrEdge.next();
46 if( edge.getDst().equals( hrn ) &&
47 edge.getFieldDesc() == fd ) {