X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=model.cc;h=90ef906ef6348ed9cdfc6717c1eaab1fb3d9e886;hb=39cf60160fae4c59519004440bd49aba714c1edf;hp=089d88d11ca32c6a5cdaef4e41a4ed886285bf89;hpb=7bfea91f33595532cf618fe3d090e8021f578795;p=model-checker.git diff --git a/model.cc b/model.cc index 089d88d..90ef906 100644 --- a/model.cc +++ b/model.cc @@ -16,8 +16,6 @@ #include "execution.h" #include "bugmessage.h" -#define INITIAL_THREAD_ID 0 - ModelChecker *model; /** @brief Constructor */ @@ -26,7 +24,7 @@ ModelChecker::ModelChecker(struct model_params params) : params(params), scheduler(new Scheduler()), node_stack(new NodeStack()), - execution(new ModelExecution(this, ¶ms, scheduler, node_stack)), + execution(new ModelExecution(this, &this->params, scheduler, node_stack)), execution_number(1), diverge(NULL), earliest_diverge(NULL), @@ -38,8 +36,6 @@ ModelChecker::ModelChecker(struct model_params params) : ModelChecker::~ModelChecker() { delete node_stack; - for (unsigned int i = 0; i < trace_analyses.size(); i++) - delete trace_analyses[i]; delete scheduler; } @@ -446,7 +442,7 @@ void ModelChecker::run() * thread which just took a step--plus the first step * for any newly-created thread */ - for (unsigned int i = 0; i < execution->get_num_threads(); i++) { + for (unsigned int i = 0; i < get_num_threads(); i++) { thread_id_t tid = int_to_id(i); Thread *thr = get_thread(tid); if (!thr->is_model_thread() && !thr->is_complete() && !thr->get_pending()) { @@ -487,4 +483,8 @@ void ModelChecker::run() model_print("******* Model-checking complete: *******\n"); print_stats(); + + /* Have the trace analyses dump their output. */ + for (unsigned int i = 0; i < trace_analyses.size(); i++) + trace_analyses[i]->finish(); }