read_map->put(location, read_from_val);
/* Store the memory locations where atomic reads happen */
- bool push_loc = true;
- mllnode<void *> * it;
- for (it = read_locations.begin();it != NULL;it=it->getNext()) {
- if (location == it->getVal()) {
- push_loc = false;
- break;
- }
- }
-
- if (push_loc)
- read_locations.push_back(location);
+ // read_locations.add(location);
}
uint64_t FuncNode::query_last_read(void * location, uint32_t tid)
if ( thrd_func_list->size() <= id ) {
uint oldsize = thrd_func_list->size();
thrd_func_list->resize( id + 1 );
- for(uint i=oldsize;i<id+1;i++) {
+ for(uint i = oldsize; i < id + 1; i++) {
new(&(*thrd_func_list)[i]) func_id_list_t();
}
thrd_func_inst_lists->resize( id + 1 );
void ModelHistory::process_action(ModelAction *act, thread_id_t tid)
{
+ action_type act_type = act->get_type();
+ if (act_type == THREAD_FINISH || act_type == THREAD_JOIN ||
+ act_type == PTHREAD_JOIN || act_type == THREADONLY_FINISH)
+ return;
+
/* return if thread i has not entered any function or has exited
from all functions */
SnapVector<func_id_list_t> * thrd_func_list = model->get_execution()->get_thrd_func_list();