break;
}
- Thread *th = get_thread(curr);
-
bool updated = false;
+
if (curr->is_read()) {
- updated = process_read(curr, th, second_part_of_rmw);
+ updated = process_read(curr, get_thread(curr), second_part_of_rmw);
}
if (curr->is_write()) {
bool updated_mod_order = w_modification_order(curr);
bool updated_promises = resolve_promises(curr);
- updated = updated_mod_order|updated_promises;
+ updated = updated || updated_mod_order || updated_promises;
if (promises->size()==0) {
for (unsigned int i = 0; i<futurevalues->size(); i++) {
}
mo_graph->commitChanges();
- th->set_return_value(VALUE_NONE);
+ get_thread(curr)->set_return_value(VALUE_NONE);
}
if (updated)
* false otherwise
*/
bool ModelChecker::release_seq_head(const ModelAction *rf,
- std::vector<const ModelAction *> *release_heads) const
+ std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads) const
{
- ASSERT(rf->is_write());
if (!rf) {
/* read from future: need to settle this later */
return false; /* incomplete */
}
+
+ ASSERT(rf->is_write());
+
if (rf->is_release())
release_heads->push_back(rf);
if (rf->is_rmw()) {
* @see ModelChecker::release_seq_head
*/
void ModelChecker::get_release_seq_heads(ModelAction *act,
- std::vector<const ModelAction *> *release_heads)
+ std::vector< const ModelAction *, MyAlloc<const ModelAction *> > *release_heads)
{
const ModelAction *rf = act->get_reads_from();
bool complete;
while (it != list->end()) {
ModelAction *act = *it;
const ModelAction *rf = act->get_reads_from();
- std::vector<const ModelAction *> release_heads;
+ std::vector< const ModelAction *, MyAlloc<const ModelAction *> > release_heads;
bool complete;
complete = release_seq_head(rf, &release_heads);
for (unsigned int i = 0; i < release_heads.size(); i++) {