}
}
+ int lowid=0;
+ int countlow=0;
+
Plot p;
Series serCommit;
Series serStart;
case ATTACK:
return new String("ATTACK");
case SUICIDE:
- return new String("SUICIDE");
+ return new String("TIMID");
case TIMESTAMP:
return new String("TIMESTAMP");
case LOCK:
//ready to commit this one
long currtime=ev.getTime();
releaseObjects(trans, ev.getThread(), currtime);
+
+ if (ev.getThread()==lowid) {
+ countlow++;
+ if (countlow==4) {
+ countlow=0;
+ lowid++;
+ if (lowid==e.numThreads())
+ lowid=0;
+ }
+ }
//See if we have been flagged as aborted for the lazy case
boolean abort=aborted[ev.getThread()];
return conflictset;
}
+
+ int normalize(int tid) {
+ int newtid=tid-lowid;
+ if (newtid<0)
+ newtid+=e.numThreads();
+ return newtid;
+ }
+
public Set wrConflictSet(int thread, ObjIndex obj) {
HashSet conflictset=new HashSet();
if (rdobjmap.containsKey(obj)) {
Integer thread=(Integer)thit.next();
Event other=currentevents[thread.intValue()];
int eventnum=other.getEvent();
- long otid=thread.intValue();
+ long otid=normalize(thread.intValue());
if (tid>otid)
tid=otid;
}
- if (ev.getThread()>tid) {
+ if (normalize(ev.getThread())>tid) {
//kill ourself
timewasted(ev.getThread(), time);
reschedule(ev.getThread(), time, 0);