}
/* Monitor the statuses of threads waiting for tid */
- monitor_waiting_thread(func_id, tid);
+ // monitor_waiting_thread(func_id, tid);
}
/* @param func_id a non-zero value */
return;
/* Monitor the statuses of threads waiting for tid */
- monitor_waiting_thread_counter(tid);
+ // monitor_waiting_thread_counter(tid);
/* Every write action should be processed, including
* nonatomic writes (which have no position) */
return;
/* Add to curr_inst_list */
- curr_act_list->push_back(act);
+ act->setFuncActRef(curr_act_list->add_back(act));
+ if (act->is_read()) {
+ ModelAction * rf = act->get_reads_from();
+ void * func_act_ref = rf->getFuncActRef();
+ if (func_act_ref == WRITE_REFERENCED) {
+ // do nothing
+ } else if (func_act_ref == NULL) {
+ rf->setFuncActRef(WRITE_REFERENCED);
+ }
+ }
FuncNode * func_node = func_nodes[func_id];
func_node->add_inst(act);
func_node->update_inst_act_map(tid, act);
Fuzzer * fuzzer = model->get_execution()->getFuzzer();
- Predicate * selected_branch = fuzzer->get_selected_child_branch(tid);
+ Predicate * selected_branch = ((NewFuzzer *)fuzzer)->get_selected_child_branch(tid);
func_node->set_predicate_tree_position(tid, selected_branch);
}
Thread * thread = model->get_thread(tid);
//model_print("** thread %d is woken up\n", thread->get_id());
- model->get_execution()->getFuzzer()->notify_paused_thread(thread);
+ ((NewFuzzer *)model->get_execution()->getFuzzer())->notify_paused_thread(thread);
}
index++;
}
self_wait_obj->clear_waiting_for();
+ delete iter;
}
void ModelHistory::stop_waiting_for_node(thread_id_t self_id,
// model_print("\tthread %d waits for nobody, wake up\n", self_id);
ModelExecution * execution = model->get_execution();
Thread * thread = execution->get_thread(self_id);
- execution->getFuzzer()->notify_paused_thread(thread);
+ ((NewFuzzer *)execution->getFuzzer())->notify_paused_thread(thread);
}
}
}
stop_waiting_for_node(waited_by_id, tid, target);
}
}
+
+ delete node_iter;
}
+
+ delete tid_iter;
}
void ModelHistory::monitor_waiting_thread_counter(thread_id_t tid)
// model_print("\tthread %d waits for nobody, wake up\n", self_id);
ModelExecution * execution = model->get_execution();
Thread * thread = execution->get_thread(waited_by_id);
- execution->getFuzzer()->notify_paused_thread(thread);
+ ((NewFuzzer *)execution->getFuzzer())->notify_paused_thread(thread);
}
}
}
+
+ delete tid_iter;
}
/* Reallocate some snapshotted memories when new executions start */