From a06bb220f1f67ac3e8e0b5ba656b2df7677ebeda Mon Sep 17 00:00:00 2001 From: weiyu Date: Mon, 26 Aug 2019 13:26:44 -0700 Subject: [PATCH 1/1] initial commit for declaring member functions of Fuzzer as virtual --- classlist.h | 1 + execution.cc | 4 ++-- fuzzer.h | 2 +- newfuzzer.cc | 10 ++++++++++ newfuzzer.h | 21 +++++++++++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 newfuzzer.cc create mode 100644 newfuzzer.h diff --git a/classlist.h b/classlist.h index 5a17449c..e528a47d 100644 --- a/classlist.h +++ b/classlist.h @@ -15,6 +15,7 @@ class Scheduler; class Thread; class TraceAnalysis; class Fuzzer; +class NewFuzzer; class FuncNode; class FuncInst; class Predicate; diff --git a/execution.cc b/execution.cc index c6962bc0..eefb9107 100644 --- a/execution.cc +++ b/execution.cc @@ -15,6 +15,7 @@ #include "bugmessage.h" #include "history.h" #include "fuzzer.h" +#include "newfuzzer.h" #define INITIAL_THREAD_ID 0 @@ -64,7 +65,7 @@ ModelExecution::ModelExecution(ModelChecker *m, Scheduler *scheduler) : thrd_last_fence_release(), priv(new struct model_snapshot_members ()), mo_graph(new CycleGraph()), - fuzzer(new Fuzzer()), + fuzzer(new NewFuzzer()), thrd_func_list(), thrd_func_act_lists(), isfinished(false) @@ -303,7 +304,6 @@ void ModelExecution::process_read(ModelAction *curr, SnapVector * int index = fuzzer->selectWrite(curr, rf_set); ModelAction *rf = (*rf_set)[index]; - ASSERT(rf); bool canprune = false; if (r_modification_order(curr, rf, priorset, &canprune)) { diff --git a/fuzzer.h b/fuzzer.h index e794d225..eb6fd4ef 100644 --- a/fuzzer.h +++ b/fuzzer.h @@ -7,7 +7,7 @@ class Fuzzer { public: Fuzzer() {} - int selectWrite(ModelAction *read, SnapVector* rf_set); + virtual int selectWrite(ModelAction *read, SnapVector* rf_set); Thread * selectThread(int * threadlist, int numthreads); Thread * selectNotify(action_list_t * waiters); bool shouldSleep(const ModelAction *sleep); diff --git a/newfuzzer.cc b/newfuzzer.cc new file mode 100644 index 00000000..7bcda8f2 --- /dev/null +++ b/newfuzzer.cc @@ -0,0 +1,10 @@ +#include "newfuzzer.h" +#include "threads-model.h" +#include "model.h" +#include "action.h" + +int NewFuzzer::selectWrite(ModelAction *read, SnapVector * rf_set) +{ + int random_index = random() % rf_set->size(); + return random_index; +} diff --git a/newfuzzer.h b/newfuzzer.h new file mode 100644 index 00000000..0fb730ab --- /dev/null +++ b/newfuzzer.h @@ -0,0 +1,21 @@ +#ifndef __NEWFUZZER_H__ +#define __NEWFUZZER_H__ + +#include "fuzzer.h" +#include "classlist.h" +#include "mymemory.h" +#include "stl-model.h" + +class NewFuzzer : public Fuzzer { +public: + NewFuzzer() {} + int selectWrite(ModelAction *read, SnapVector* rf_set); + Thread * selectThread(int * threadlist, int numthreads); + Thread * selectNotify(action_list_t * waiters); + bool shouldSleep(const ModelAction *sleep); + bool shouldWake(const ModelAction *sleep); + MEMALLOC +private: +}; + +#endif /* end of __NEWFUZZER_H__ */ -- 2.34.1