1 package Analysis.TaskStateAnalysis;
6 /* Edge *****************/
8 public class FEdge extends Edge {
11 private TaskDescriptor td;
12 private int parameterindex;
15 private long executeTime;
16 private Hashtable<ClassDescriptor, NewObjInfo> newObjInfos;
17 private double probability;
18 private int invokeNum;
19 private int expInvokeNum;
20 private boolean m_isbackedge;
21 private int m_taskexitindex;
23 public class NewObjInfo {
36 public NewObjInfo(int newRate, double probability) {
37 this.newRate = newRate;
38 this.probability = probability;
41 public int getNewRate() {
45 public void setNewRate(int newRate) {
46 this.newRate = newRate;
49 public double getProbability() {
50 return this.probability;
53 public void setProbability(double probability) {
54 this.probability = probability;
57 public FlagState getRoot() {
61 public void setRoot(FlagState root) {
65 public int getInvokeNum() {
69 public void incInvokeNum() {
73 public boolean equals(Object o) {
74 if (o instanceof NewObjInfo) {
75 NewObjInfo e=(NewObjInfo)o;
76 if (e.newRate == this.newRate &&
77 e.probability == this.probability &&
78 e.invokeNum == this.invokeNum &&
79 e.root.equals(this.root)) {
90 public FEdge(FlagState target, String label, TaskDescriptor td, int parameterindex) {
94 this.parameterindex=parameterindex;
95 this.executeTime = -1;
96 this.newObjInfos = null;
97 this.probability = -1;
99 this.expInvokeNum = 0;
100 this.m_isbackedge = false;
101 this.m_taskexitindex = 0;
104 public int getTaskExitIndex() {
105 return m_taskexitindex;
108 public void setTaskExitIndex(int taskexitindex) {
109 this.m_taskexitindex = taskexitindex;
112 public double getProbability() {
113 return this.probability;
116 public void setProbability(double probability) {
117 this.probability = probability;
120 public boolean isbackedge() {
124 public void setisbackedge(boolean isbackedge) {
125 this.m_isbackedge = isbackedge;
128 public String getLabel() {
132 public int hashCode() {
133 int hashcode = label.hashCode()^target.hashCode()^source.hashCode()^parameterindex^(int)executeTime;
135 hashcode^=td.hashCode();
136 if(newObjInfos != null) {
137 hashcode ^= newObjInfos.hashCode();
142 public TaskDescriptor getTask() {
146 public int getIndex() {
147 return parameterindex;
150 public boolean equals(Object o) {
151 if (o instanceof FEdge) {
153 if (e.label.equals(label)&&
154 e.target.equals(target)&&
155 e.source.equals(source) &&
157 e.parameterindex==parameterindex &&
158 e.executeTime == executeTime &&
159 e.m_taskexitindex == m_taskexitindex &&
160 e.m_isbackedge == m_isbackedge) {
161 if(this.newObjInfos != null) {
162 if(e.newObjInfos == null) {
165 return e.newObjInfos.equals(this.newObjInfos);
174 public long getExeTime() {
175 return this.executeTime;
178 public void setExeTime(long eTime) {
179 this.executeTime = eTime;
182 public Hashtable<ClassDescriptor, NewObjInfo> getNewObjInfoHashtable() {
183 return this.newObjInfos;
186 public NewObjInfo getNewObjInfo(ClassDescriptor cd) {
187 if(this.newObjInfos == null) {
190 return this.newObjInfos.get(cd);
193 public void addNewObjInfo(ClassDescriptor cd, int newRate, double probability) {
194 if(this.newObjInfos == null) {
195 this.newObjInfos = new Hashtable<ClassDescriptor, NewObjInfo>();
197 this.newObjInfos.put(cd, new NewObjInfo(newRate, probability));
200 public void init4Simulate() {
202 this.expInvokeNum = 0;
203 if(this.newObjInfos != null) {
204 Iterator<NewObjInfo> it_nobjs = this.newObjInfos.values().iterator();
205 while(it_nobjs.hasNext()) {
206 it_nobjs.next().invokeNum = 0;
211 public void process() {
215 public int getInvokeNum() {
219 public int getInvokeNumGap() {
220 return this.expInvokeNum - this.invokeNum;
223 public int getInvokeNumGapByObj(int byObj) {
224 return this.expInvokeNum - (this.invokeNum/byObj);
227 public void setExpInvokeNum(int expInvokeNum) {
228 this.expInvokeNum = expInvokeNum;