3 import java.util.HashSet;
4 import java.util.Iterator;
6 import Analysis.OwnershipAnalysis.AllocationSite;
7 import Analysis.OwnershipAnalysis.HeapRegionNode;
8 import Analysis.OwnershipAnalysis.ReachabilitySet;
10 public class StallSite {
12 public static final Integer READ_EFFECT = new Integer(1);
13 public static final Integer WRITE_EFFECT = new Integer(2);
15 private HashSet<Effect> effectSet;
16 private HashSet<HeapRegionNode> hrnSet;
17 private HashSet<AllocationSite> allocationSiteSet;
18 private ReachabilitySet rechabilitySet;
21 effectSet = new HashSet<Effect>();
22 hrnSet = new HashSet<HeapRegionNode>();
23 rechabilitySet = new ReachabilitySet();
24 allocationSiteSet=new HashSet<AllocationSite>();
27 public StallSite(HashSet<HeapRegionNode> hrnSet){
29 setHeapRegionNodeSet(hrnSet);
30 for (Iterator iterator = hrnSet.iterator(); iterator.hasNext();) {
31 HeapRegionNode heapRegionNode = (HeapRegionNode) iterator.next();
32 setAllocationSite(heapRegionNode.getAllocationSite());
36 public StallSite(HashSet<Effect> effectSet, HashSet<HeapRegionNode> hrnSet,
37 ReachabilitySet rechabilitySet) {
38 this.effectSet = effectSet;
40 this.rechabilitySet = rechabilitySet;
43 public void setAllocationSite(AllocationSite allocationSite){
44 if(allocationSite!=null){
45 allocationSiteSet.add(allocationSite);
49 public void setHeapRegionNodeSet(HashSet<HeapRegionNode> newSet){
50 hrnSet.addAll(newSet);
53 public HashSet<AllocationSite> getAllocationSiteSet(){
54 return allocationSiteSet;
57 public void addEffect(String type, String field, Integer effect) {
58 Effect e = new Effect(type, field, effect);
62 public HashSet<Effect> getEffectSet() {
66 public HashSet<HeapRegionNode> getHRNSet() {
70 public ReachabilitySet getReachabilitySet() {
71 return rechabilitySet;
74 public boolean equals(Object o) {
80 if (!(o instanceof StallSite)) {
84 StallSite in = (StallSite) o;
86 if (effectSet.equals(in.getEffectSet())
87 && hrnSet.equals(in.getHRNSet())
88 && rechabilitySet.equals(in.getReachabilitySet())) {
96 public String toString() {
97 return "StallSite [effectSet=" + effectSet + ", hrnIDSet=" + hrnSet
98 + ", rechabilitySet=" + rechabilitySet + "]";
105 private String field;
107 private Integer effect;
109 public Effect(String type, String field, Integer effect) {
112 this.effect = effect;
115 public String getField() {
119 public String getType() {
123 public Integer getEffect() {
127 public boolean equals(Object o) {
133 if (!(o instanceof StallSite)) {
137 Effect in = (Effect) o;
139 if (type.equals(in.getType()) && field.equals(in.getField())
140 && effect.equals(in.getEffect())) {