return next;
}
+
/**
* Processes a read or rmw model action.
* @param curr is the read model action to process.
mo_graph->startChanges();
value = reads_from->get_value();
- /* Assign reads_from, perform release/acquire synchronization */
- curr->read_from(reads_from);
+
if (!second_part_of_rmw) {
check_recency(curr,false);
}
continue;
}
+ curr->read_from(reads_from);
mo_graph->commitChanges();
updated |= r_status;
} else if (!second_part_of_rmw) {
return !mo_graph->checkForRMWViolation() && isfeasibleotherthanRMW();
}
-/** @returns whether the current partial trace is feasible. */
+/** @returns whether the current partial trace is feasible other than
+ * multiple RMW reading from the same store. */
bool ModelChecker::isfeasibleotherthanRMW() {
return !mo_graph->checkForCycles() && !failed_promise && !too_many_reads && !promises_expired();
}
return resolved;
}
+
+
/**
* Compute the set of promises that could potentially be satisfied by this
* action. Note that the set computation actually appears in the Node, not in