+void CycleGraph::startChanges() {
+ ASSERT(rollbackvector.size()==0);
+ ASSERT(rmwrollbackvector.size()==0);
+ ASSERT(oldCycles==hasCycles);
+ ASSERT(oldRMWViolation==hasRMWViolation);
+}
+
+/** Commit changes to the cyclegraph. */
+void CycleGraph::commitChanges() {
+ rollbackvector.resize(0);
+ rmwrollbackvector.resize(0);
+ oldCycles=hasCycles;
+ oldRMWViolation=hasRMWViolation;
+}
+
+/** Rollback changes to the previous commit. */
+void CycleGraph::rollbackChanges() {
+ for (unsigned int i = 0; i < rollbackvector.size(); i++) {
+ rollbackvector[i]->popEdge();
+ }
+
+ for (unsigned int i = 0; i < rmwrollbackvector.size(); i++) {
+ rmwrollbackvector[i]->clearRMW();
+ }
+
+ hasCycles = oldCycles;
+ hasRMWViolation = oldRMWViolation;
+ rollbackvector.resize(0);
+ rmwrollbackvector.resize(0);
+}
+