mo_graph(new CycleGraph()),
fuzzer(new Fuzzer()),
thrd_func_list(),
- thrd_func_inst_lists(),
+ thrd_func_act_lists(),
isfinished(false)
{
/* Initialize a model-checker thread, for special ModelActions */
if (fence_release && *(get_last_action(thread->get_id())) < *fence_release)
return true;
}
+ if (asleep->is_sleep()) {
+ if (fuzzer->shouldWake(asleep))
+ return true;
+ }
+
return false;
}
add_normal_write_to_lists(act);
add_write_to_lists(act);
w_modification_order(act);
+ model->get_history()->process_action(act, act->get_tid());
return act;
}
if (!blocking->is_complete()) {
return false;
}
+ } else if (curr->is_sleep()) {
+ if (!fuzzer->shouldSleep(curr))
+ return false;
}
return true;
if (uninit_id >= (int)vec->size()) {
int oldsize = (int) vec->size();
vec->resize(uninit_id + 1);
- for(int i=oldsize;i<uninit_id+1;i++)
- new (&vec[i]) action_list_t();
+ for(int i=oldsize;i<uninit_id+1;i++) {
+ new(&(*vec)[i]) action_list_t();
+ }
}
(*vec)[uninit_id].push_front(uninit);
}
uint oldsize =vec->size();
vec->resize(priv->next_thread_id);
for(uint i=oldsize;i<priv->next_thread_id;i++)
- new (&vec[i]) action_list_t();
+ new (&(*vec)[i]) action_list_t();
}
(*vec)[tid].push_back(act);
if (uninit)
uint oldsize = vec->size();
vec->resize(priv->next_thread_id);
for(uint i=oldsize;i<priv->next_thread_id;i++)
- new (&vec[i]) action_list_t();
+ new (&(*vec)[i]) action_list_t();
}
(*vec)[tid].push_back(act);
}
void insertIntoActionList(action_list_t *list, ModelAction *act) {
sllnode<ModelAction*> * rit = list->end();
modelclock_t next_seq = act->get_seq_number();
- if (rit == NULL || (rit->getVal())->get_seq_number() == next_seq)
+ if (rit == NULL || (rit->getVal()->get_seq_number() == next_seq))
list->push_back(act);
else {
for(;rit != NULL;rit=rit->getPrev()) {
- if ((rit->getVal())->get_seq_number() == next_seq) {
+ if (rit->getVal()->get_seq_number() == next_seq) {
list->insertAfter(rit, act);
break;
}
uint oldsize =vec->size();
vec->resize(priv->next_thread_id);
for(uint i=oldsize;i<priv->next_thread_id;i++)
- new (&vec[i]) action_list_t();
+ new (&(*vec)[i]) action_list_t();
}
insertIntoActionList(&(*vec)[tid],act);
uint oldsize =vec->size();
vec->resize(priv->next_thread_id);
for(uint i=oldsize;i<priv->next_thread_id;i++)
- new (&vec[i]) action_list_t();
+ new (&(*vec)[i]) action_list_t();
}
(*vec)[tid].push_back(write);
}
curr = check_current_action(curr);
ASSERT(curr);
- /* Process this action in ModelHistory for records*/
+ /* Process this action in ModelHistory for records */
model->get_history()->process_action( curr, curr->get_tid() );
if (curr_thrd->is_blocked() || curr_thrd->is_complete())