X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=scanalysis.h;h=e8afc18949aaa1b25b931bcfd46f42a5225fde72;hb=6070a45c81428a5e09909d4beb325150aefd0c52;hp=0ef12ba407ffa4a80e8b0d82723a2ab872094d05;hpb=4541dc5155c69e168beedf3bd2a8f5ece0e0e65b;p=model-checker.git diff --git a/scanalysis.h b/scanalysis.h index 0ef12ba..e8afc18 100644 --- a/scanalysis.h +++ b/scanalysis.h @@ -1,11 +1,29 @@ #ifndef SCANALYSIS_H #define SCANALYSIS_H #include "traceanalysis.h" +#include "hashtable.h" -class SCAnalysis : public Trace_Analysis { +class SCAnalysis : public TraceAnalysis { public: - SCAnalysis(); + SCAnalysis(const ModelExecution *execution); + ~SCAnalysis(); virtual void analyze(action_list_t *); + SNAPSHOTALLOC + private: + void print_list(action_list_t *list); + void buildVectors(action_list_t *); + bool updateConstraints(ModelAction *act); + void computeCV(action_list_t *); + action_list_t * generateSC(action_list_t *); + bool processRead(ModelAction *read, ClockVector *cv); + ModelAction * getNextAction(); + bool merge(ClockVector *cv, const ModelAction *act, ClockVector *cv2); + + int maxthreads; + HashTable cvmap; + HashTable cycleset; + SnapVector threadlists; + const ModelExecution *execution; }; #endif