Skip to content

Commit a7d30c5

Browse files
committed
Comments
1 parent 457e5e3 commit a7d30c5

11 files changed

Lines changed: 68 additions & 109 deletions

File tree

src/THB.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import cmd.CmdOptions;
22
import cmd.GetOptions;
3-
import engine.atomicity.conflictserializability.thb.THBEngine;
3+
import engine.atomicity.conflictserializability.aerodrome.AerodromeEngine;
44

55
public class THB {
66

@@ -10,7 +10,7 @@ public THB() {
1010

1111
public static void main(String[] args) {
1212
CmdOptions options = new GetOptions(args).parse();
13-
THBEngine engine = new THBEngine(options.parserType, options.path, options.verbosity);
13+
AerodromeEngine engine = new AerodromeEngine(options.parserType, options.path, options.verbosity);
1414
boolean time_reporting = true;
1515
long startTimeAnalysis = 0;
1616
if(time_reporting){

src/THBBasic.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import cmd.CmdOptions;
22
import cmd.GetOptions;
3-
import engine.atomicity.conflictserializability.thb_basic.THBEngine;
3+
import engine.atomicity.conflictserializability.aerodrome_basic.AerodromeEngine;
44

55
public class THBBasic {
66

@@ -17,7 +17,7 @@ public static void main(String[] args) {
1717
startTimeAnalysis = System.currentTimeMillis(); //System.nanoTime();
1818
}
1919

20-
THBEngine engine = new THBEngine(options.parserType, options.path, options.verbosity);
20+
AerodromeEngine engine = new AerodromeEngine(options.parserType, options.path, options.verbosity);
2121
engine.analyzeTrace(false);
2222

2323
if(time_reporting){
Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,28 @@
1-
package engine.atomicity.conflictserializability.thb;
1+
package engine.atomicity.conflictserializability.aerodrome;
22

33
import java.util.HashSet;
44

55
import engine.atomicity.AtomicityEngine;
66
import event.Thread;
77
import parse.ParserType;
88

9-
public class THBEngine extends AtomicityEngine<THBState, THBEvent>{
9+
public class AerodromeEngine extends AtomicityEngine<AerodromeState, AerodromeEvent>{
1010

11-
public THBEngine(ParserType pType, String trace_folder, int verbosity) {
11+
public AerodromeEngine(ParserType pType, String trace_folder, int verbosity) {
1212
super(pType);
1313
this.threadSet = new HashSet<Thread> ();
1414
initializeReader(trace_folder);
15-
this.state = new THBState(this.threadSet, verbosity);
16-
handlerEvent = new THBEvent();
15+
this.state = new AerodromeState(this.threadSet, verbosity);
16+
handlerEvent = new AerodromeEvent();
1717
}
1818

1919
@Override
20-
protected boolean skipEvent(THBEvent handlerEvent) {
20+
protected boolean skipEvent(AerodromeEvent handlerEvent) {
2121
return false;
2222
}
2323

2424
@Override
25-
protected void postHandleEvent(THBEvent handlerEvent) {
26-
// if(handlerEvent.getType().isAccessType()){
27-
// if(state.verbosity == 1 || state.verbosity == 2){
28-
// System.out.println();
29-
// }
30-
// }
25+
protected void postHandleEvent(AerodromeEvent handlerEvent) {
3126
}
3227

3328
}

src/engine/atomicity/conflictserializability/aerodrome/AerodromeEvent.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package engine.atomicity.conflictserializability.thb;
1+
package engine.atomicity.conflictserializability.aerodrome;
22

33
import java.util.HashMap;
44
import java.util.HashSet;
@@ -8,10 +8,10 @@
88
import event.Variable;
99
import util.vectorclock.VectorClockOpt;
1010

11-
public class THBEvent extends AtomicityEvent<THBState> {
11+
public class AerodromeEvent extends AtomicityEvent<AerodromeState> {
1212

1313
@Override
14-
public void printRaceInfoLockType(THBState state) {
14+
public void printRaceInfoLockType(AerodromeState state) {
1515
if(this.getType().isLockType()){
1616
if(state.verbosity == 2){
1717
String str = "#";
@@ -28,7 +28,7 @@ public void printRaceInfoLockType(THBState state) {
2828
}
2929

3030
@Override
31-
public void printRaceInfoTransactionType(THBState state) {
31+
public void printRaceInfoTransactionType(AerodromeState state) {
3232
if(this.getType().isLockType()){
3333
if(state.verbosity == 2){
3434
String str = "#";
@@ -45,7 +45,7 @@ public void printRaceInfoTransactionType(THBState state) {
4545
}
4646

4747
@Override
48-
public void printRaceInfoAccessType(THBState state) {
48+
public void printRaceInfoAccessType(AerodromeState state) {
4949
if(this.getType().isAccessType()){
5050
if(state.verbosity == 1 || state.verbosity == 2){
5151
String str = "#";
@@ -64,7 +64,7 @@ public void printRaceInfoAccessType(THBState state) {
6464
}
6565

6666
@Override
67-
public void printRaceInfoExtremeType(THBState state) {
67+
public void printRaceInfoExtremeType(AerodromeState state) {
6868
if(this.getType().isExtremeType()){
6969
if(state.verbosity == 2){
7070
String str = "#";
@@ -81,22 +81,26 @@ public void printRaceInfoExtremeType(THBState state) {
8181
}
8282

8383
@Override
84-
public boolean HandleSubAcquire(THBState state) {
84+
public boolean HandleSubAcquire(AerodromeState state) {
8585
boolean violationDetected = false;
8686
Thread t = this.getThread();
8787
Lock l = this.getLock();
8888
state.checkAndAddLock(l);
8989
VectorClockOpt L_l = state.getVectorClock(state.clockLock, l);
90+
9091
if(state.lastThreadToRelease.containsKey(l)) {
9192
if(!state.lastThreadToRelease.get(l).equals(t)) {
9293
violationDetected = state.checkAndGetClock(L_l, L_l, t);
9394
}
9495
}
96+
97+
// No need to increment local clock because it is not sent to other threads.
98+
9599
return violationDetected;
96100
}
97101

98102
@Override
99-
public boolean HandleSubRelease(THBState state) {
103+
public boolean HandleSubRelease(AerodromeState state) {
100104
Thread t = this.getThread();
101105
Lock l = this.getLock();
102106
state.checkAndAddLock(l);
@@ -114,7 +118,7 @@ public boolean HandleSubRelease(THBState state) {
114118
}
115119

116120
@Override
117-
public boolean HandleSubRead(THBState state) {
121+
public boolean HandleSubRead(AerodromeState state) {
118122

119123
boolean violationDetected = false;
120124
Thread t = this.getThread();
@@ -147,7 +151,7 @@ public boolean HandleSubRead(THBState state) {
147151
}
148152

149153
@Override
150-
public boolean HandleSubWrite(THBState state) {
154+
public boolean HandleSubWrite(AerodromeState state) {
151155
boolean violationDetected = false;
152156
Thread t = this.getThread();
153157
Variable v = this.getVariable();
@@ -188,7 +192,7 @@ public boolean HandleSubWrite(THBState state) {
188192
}
189193

190194
@Override
191-
public boolean HandleSubFork(THBState state) {
195+
public boolean HandleSubFork(AerodromeState state) {
192196
Thread u = this.getTarget();
193197
if(state.isThreadRelevant(u)) {
194198
Thread t = this.getThread();
@@ -210,18 +214,20 @@ public boolean HandleSubFork(THBState state) {
210214
}
211215

212216
@Override
213-
public boolean HandleSubJoin(THBState state) {
217+
public boolean HandleSubJoin(AerodromeState state) {
214218
Thread u = this.getTarget();
215219
if(state.isThreadRelevant(u)) {
216220
Thread t = this.getThread();
217221
VectorClockOpt C_u = state.getVectorClock(state.clockThread, u);
218222
return state.checkAndGetClock(C_u, C_u, t);
219223
}
220224
else return false;
225+
226+
// No need to increment local clock as it is not sent out.
221227
}
222228

223229
@Override
224-
public boolean HandleSubBegin(THBState state) {
230+
public boolean HandleSubBegin(AerodromeState state) {
225231
Thread t = this.getThread();
226232
boolean violationDetected = false;
227233

@@ -238,15 +244,14 @@ public boolean HandleSubBegin(THBState state) {
238244
}
239245

240246
@Override
241-
public boolean HandleSubEnd(THBState state) {
247+
public boolean HandleSubEnd(AerodromeState state) {
242248
Thread t = this.getThread();
243249
boolean violationDetected = false;
244250

245251
state.decrementNestingDepth(t);
246252
if(!state.transactionIsActive(t)) {
247253
if(state.hasIncomingEdge(t)) {
248254
violationDetected = state.handshakeAtEndEvent_Optimized(t);
249-
// state.incClockThread(t);
250255
}
251256
else {
252257
for(Variable v: state.updateSetThread_read.get(t)) {

src/engine/atomicity/conflictserializability/aerodrome/AerodromeState.java

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package engine.atomicity.conflictserializability.thb;
1+
package engine.atomicity.conflictserializability.aerodrome;
22

33
import java.util.ArrayList;
44
import java.util.HashMap;
@@ -11,7 +11,7 @@
1111
import event.Variable;
1212
import util.vectorclock.VectorClockOpt;
1313

14-
public class THBState extends State {
14+
public class AerodromeState extends State {
1515

1616
// Internal data
1717
public HashMap<Thread, Integer> threadToIndex;
@@ -28,25 +28,25 @@ public class THBState extends State {
2828
public HashMap<Variable, VectorClockOpt> clockReadVariable; // mathcal{R}
2929
public HashMap<Variable, VectorClockOpt> clockReadVariableCheck; // mathcal{chR}
3030

31-
public HashMap<Lock, Thread> lastThreadToRelease;
32-
public HashMap<Variable, Thread> lastThreadToWrite;
31+
public HashMap<Lock, Thread> lastThreadToRelease; // lastRelThr
32+
public HashMap<Variable, Thread> lastThreadToWrite; // lastWThr
3333

3434
private HashMap<Thread, Integer> threadToNestingDepth;
3535

3636
//Optimization data structures
37-
public HashMap<Thread, HashSet<Variable>> updateSetThread_write;
38-
public HashMap<Thread, HashSet<Variable>> updateSetThread_read;
37+
public HashMap<Thread, HashSet<Variable>> updateSetThread_write; // UpdateSet^w
38+
public HashMap<Thread, HashSet<Variable>> updateSetThread_read; // UpdateSet^r
39+
public HashSet<Variable> staleWrites; // Stale^w
40+
public HashMap<Variable, HashSet<Thread>> staleReads; // Stale^r
3941

40-
public HashMap<Variable, HashSet<Thread>> staleReads;
41-
public HashSet<Variable> staleWrites;
42-
42+
// Other data-structures to track if parent transaction is alive
4343
public HashMap<Thread, HashSet<Thread>> threadsForkedInActiveTransaction;
4444
public HashSet<Thread> parentTransactionIsAlive;
4545

4646
//parameter flags
4747
public int verbosity;
4848

49-
public THBState(HashSet<Thread> tSet, int verbosity) {
49+
public AerodromeState(HashSet<Thread> tSet, int verbosity) {
5050
this.verbosity = verbosity;
5151
initInternalData(tSet);
5252
initData(tSet);
@@ -58,7 +58,6 @@ private void initInternalData(HashSet<Thread> tSet) {
5858
Iterator<Thread> tIter = tSet.iterator();
5959
while (tIter.hasNext()) {
6060
Thread thread = tIter.next();
61-
//System.out.println("Adding thread to map " + thread.toString());
6261
this.threadToIndex.put(thread, (Integer)this.numThreads);
6362
this.numThreads ++;
6463
}
@@ -121,9 +120,6 @@ public void initData(HashSet<Thread> tSet) {
121120

122121
// Access methods
123122
private VectorClockOpt getVectorClockFrom1DArray(ArrayList<VectorClockOpt> arr, int index) {
124-
// if (index < 0 || index >= arr.size()) {
125-
// throw new IllegalArgumentException("Illegal Out of Bound access");
126-
// }
127123
return arr.get(index);
128124
}
129125

@@ -139,18 +135,15 @@ public VectorClockOpt getVectorClock(ArrayList<VectorClockOpt> arr, Thread t) {
139135
}
140136

141137
public VectorClockOpt getVectorClock(HashMap<Lock, VectorClockOpt> arr, Lock l) {
142-
// checkAndAddLock(l);
143138
return arr.get(l);
144139
}
145140

146141
public VectorClockOpt getVectorClock(HashMap<Variable, VectorClockOpt> arr, Variable v) {
147-
// checkAndAddVariable(v);
148142
return arr.get(v);
149143
}
150144

151145
public int checkAndAddLock(Lock l){
152146
if(!lockToIndex.containsKey(l)){
153-
//System.err.println("New lock found " + this.numLocks);
154147
lockToIndex.put(l, this.numLocks);
155148
this.numLocks ++;
156149
this.clockLock.put(l, new VectorClockOpt(this.numThreads));
@@ -183,18 +176,6 @@ public void decrementNestingDepth(Thread t) {
183176
int cur_depth = threadToNestingDepth.get(t);
184177
threadToNestingDepth.put(t, cur_depth - 1);
185178
}
186-
187-
// public boolean checkAndGetClock(VectorClockOpt checkClock, VectorClockOpt fromClock, Thread target) {
188-
// int tIndex = this.threadToIndex.get(target);
189-
// boolean violationDetected = false;
190-
// VectorClockOpt C_target_begin = getVectorClock(clockThreadBegin, target);
191-
// if(C_target_begin.isLessThanOrEqual(checkClock, tIndex) && transactionIsActive(target)) {
192-
// violationDetected = true;
193-
// }
194-
// VectorClockOpt C_target = getVectorClock(clockThread, target);
195-
// C_target.updateWithMax(C_target, fromClock);
196-
// return violationDetected;
197-
// }
198179

199180
public boolean checkAndGetClock(VectorClockOpt checkClock, VectorClockOpt fromClock, Thread target) {
200181
int tIndex = this.threadToIndex.get(target);
@@ -287,7 +268,7 @@ public void updateCheckClock(VectorClockOpt vc1, VectorClockOpt vc2, Thread t) {
287268
vc1.updateMax2WithoutLocal(vc2, tIndex);
288269
}
289270

290-
// This assumes that local clocks are not increment for events inside a
271+
// This assumes that local clocks are not increment for events inside a transaction
291272
public boolean hasIncomingEdge(Thread t) {
292273

293274
if(parentTransactionIsAlive.contains(t)) return true;

src/engine/atomicity/conflictserializability/aerodrome_basic/AerodromeEngine.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
package engine.atomicity.conflictserializability.thb_basic;
1+
package engine.atomicity.conflictserializability.aerodrome_basic;
22

33
import java.util.HashSet;
44

55
import engine.atomicity.AtomicityEngine;
66
import event.Thread;
77
import parse.ParserType;
88

9-
public class THBEngine extends AtomicityEngine<THBState, THBEvent>{
9+
public class AerodromeEngine extends AtomicityEngine<AerodromeState, AerodromeEvent>{
1010

11-
public THBEngine(ParserType pType, String trace_folder, int verbosity) {
11+
public AerodromeEngine(ParserType pType, String trace_folder, int verbosity) {
1212
super(pType);
1313
this.threadSet = new HashSet<Thread> ();
1414
initializeReader(trace_folder);
15-
this.state = new THBState(this.threadSet, verbosity);
16-
handlerEvent = new THBEvent();
15+
this.state = new AerodromeState(this.threadSet, verbosity);
16+
handlerEvent = new AerodromeEvent();
1717
}
1818

1919
@Override
20-
protected boolean skipEvent(THBEvent handlerEvent) {
20+
protected boolean skipEvent(AerodromeEvent handlerEvent) {
2121
return false;
2222
}
2323

2424
@Override
25-
protected void postHandleEvent(THBEvent handlerEvent) {
25+
protected void postHandleEvent(AerodromeEvent handlerEvent) {
2626
// if(handlerEvent.getType().isAccessType()){
2727
// if(state.verbosity == 1 || state.verbosity == 2){
2828
// System.out.println();

0 commit comments

Comments
 (0)