+ // private boolean isConflictFound(int eventCounter, int currentChoice, boolean isPastTrace) {
+//
+// int currActualChoice;
+// if (isPastTrace) {
+// currActualChoice = backtrackPointList.get(currentChoice).getChoice();
+// } else {
+// int actualCurrCho = currentChoice % refChoices.length;
+// currActualChoice = choices[actualCurrCho];
+// }
+// // Skip if this event does not have any Read/Write set or the two events are basically the same event (number)
+// if (!readWriteFieldsMap.containsKey(eventCounter) ||
+// currActualChoice == backtrackPointList.get(eventCounter).getChoice()) {
+// return false;
+// }
+// // Current R/W set
+// ReadWriteSet currRWSet = readWriteFieldsMap.get(currentChoice);
+// // R/W set of choice/event that may have a potential conflict
+// ReadWriteSet evtRWSet = readWriteFieldsMap.get(eventCounter);
+// // Check for conflicts with Read and Write fields for Write instructions
+// Set<String> currWriteSet = currRWSet.getWriteSet();
+// for(String writeField : currWriteSet) {
+// int currObjId = currRWSet.writeFieldObjectId(writeField);
+// if ((evtRWSet.readFieldExists(writeField) && evtRWSet.readFieldObjectId(writeField) == currObjId) ||
+// (evtRWSet.writeFieldExists(writeField) && evtRWSet.writeFieldObjectId(writeField) == currObjId)) {
+// return true;
+// }
+// }
+// // Check for conflicts with Write fields for Read instructions
+// Set<String> currReadSet = currRWSet.getReadSet();
+// for(String readField : currReadSet) {
+// int currObjId = currRWSet.readFieldObjectId(readField);
+// if (evtRWSet.writeFieldExists(readField) && evtRWSet.writeFieldObjectId(readField) == currObjId) {
+// return true;
+// }
+// }
+// // Return false if no conflict is found
+// return false;
+// }
+
+// private boolean isConflictFound(Instruction nextInsn, int eventCounter, int currentChoice, String fieldClass) {
+//
+// int actualCurrCho = currentChoice % refChoices.length;
+// // Skip if this event does not have any Read/Write set or the two events are basically the same event (number)
+// if (!readWriteFieldsMap.containsKey(eventCounter) ||
+// choices[actualCurrCho] == backtrackPointList.get(eventCounter).getChoice()) {
+// return false;
+// }
+// ReadWriteSet rwSet = readWriteFieldsMap.get(eventCounter);
+// int currObjId = ((JVMFieldInstruction) nextInsn).getFieldInfo().getClassInfo().getClassObjectRef();
+// // Check for conflicts with Write fields for both Read and Write instructions
+// if (((nextInsn instanceof WriteInstruction || nextInsn instanceof ReadInstruction) &&
+// rwSet.writeFieldExists(fieldClass) && rwSet.writeFieldObjectId(fieldClass) == currObjId) ||
+// (nextInsn instanceof WriteInstruction && rwSet.readFieldExists(fieldClass) &&
+// rwSet.readFieldObjectId(fieldClass) == currObjId)) {
+// return true;
+// }
+// return false;
+// }
+
+ private ReadWriteSet getReadWriteSet(int currentChoice) {
+ // Do the analysis to get Read and Write accesses to fields
+ ReadWriteSet rwSet;
+ // We already have an entry
+ HashMap<Integer, ReadWriteSet> currReadWriteFieldsMap = currentExecution.getReadWriteFieldsMap();
+ if (currReadWriteFieldsMap.containsKey(currentChoice)) {
+ rwSet = currReadWriteFieldsMap.get(currentChoice);
+ } else { // We need to create a new entry
+ rwSet = new ReadWriteSet();
+ currReadWriteFieldsMap.put(currentChoice, rwSet);
+ }
+ return rwSet;
+ }
+