projects
/
model-checker.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Makefile: remove more deferred variables
[model-checker.git]
/
model.cc
diff --git
a/model.cc
b/model.cc
index 55949730f5c2a00428618dd8cfbe8bf65c96747f..90ef906ef6348ed9cdfc6717c1eaab1fb3d9e886 100644
(file)
--- a/
model.cc
+++ b/
model.cc
@@
-1,6
+1,5
@@
#include <stdio.h>
#include <algorithm>
#include <stdio.h>
#include <algorithm>
-#include <mutex>
#include <new>
#include <stdarg.h>
#include <new>
#include <stdarg.h>
@@
-17,8
+16,6
@@
#include "execution.h"
#include "bugmessage.h"
#include "execution.h"
#include "bugmessage.h"
-#define INITIAL_THREAD_ID 0
-
ModelChecker *model;
/** @brief Constructor */
ModelChecker *model;
/** @brief Constructor */
@@
-27,10
+24,11
@@
ModelChecker::ModelChecker(struct model_params params) :
params(params),
scheduler(new Scheduler()),
node_stack(new NodeStack()),
params(params),
scheduler(new Scheduler()),
node_stack(new NodeStack()),
- execution(new ModelExecution(¶ms, scheduler, node_stack)),
+ execution(new ModelExecution(this, &this->params, scheduler, node_stack)),
+ execution_number(1),
diverge(NULL),
earliest_diverge(NULL),
diverge(NULL),
earliest_diverge(NULL),
- trace_analyses(
new ModelVector<TraceAnalysis *>()
)
+ trace_analyses()
{
}
{
}
@@
-38,9
+36,6
@@
ModelChecker::ModelChecker(struct model_params params) :
ModelChecker::~ModelChecker()
{
delete node_stack;
ModelChecker::~ModelChecker()
{
delete node_stack;
- for (unsigned int i = 0; i < trace_analyses->size(); i++)
- delete (*trace_analyses)[i];
- delete trace_analyses;
delete scheduler;
}
delete scheduler;
}
@@
-321,15
+316,16
@@
bool ModelChecker::next_execution()
diverge->print();
}
diverge->print();
}
- execution->increment_execution_number();
+ execution_number++;
+
reset_to_initial_state();
return true;
}
/** @brief Run trace analyses on complete trace */
void ModelChecker::run_trace_analyses() {
reset_to_initial_state();
return true;
}
/** @brief Run trace analyses on complete trace */
void ModelChecker::run_trace_analyses() {
- for (unsigned int i = 0; i < trace_analyses
->
size(); i++)
-
(*trace_analyses)
[i]->analyze(execution->get_action_trace());
+ for (unsigned int i = 0; i < trace_analyses
.
size(); i++)
+
trace_analyses
[i]->analyze(execution->get_action_trace());
}
/**
}
/**
@@
-436,7
+432,7
@@
void ModelChecker::run()
{
do {
thrd_t user_thread;
{
do {
thrd_t user_thread;
- Thread *t = new Thread(&user_thread, &user_main_wrapper, NULL, NULL);
+ Thread *t = new Thread(
execution->get_next_id(),
&user_thread, &user_main_wrapper, NULL, NULL);
execution->add_thread(t);
do {
execution->add_thread(t);
do {
@@
-446,7
+442,7
@@
void ModelChecker::run()
* thread which just took a step--plus the first step
* for any newly-created thread
*/
* 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()) {
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();
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();
}
}