X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=scanalysis.h;h=ffa933ad5e2b872769199ca81fbcec9d7afd8333;hp=f9db2db74693d4e4706dc08a2462d1e842f2bb3d;hb=b090a4abc4915a9aa2a29787f76a6add79f838e2;hpb=66a17f91a2fff4c92b686a5524fe0ae920c2a203 diff --git a/scanalysis.h b/scanalysis.h index f9db2db..ffa933a 100644 --- a/scanalysis.h +++ b/scanalysis.h @@ -3,25 +3,35 @@ #include "traceanalysis.h" #include "hashtable.h" -class SCAnalysis : public Trace_Analysis { +class SCAnalysis : public TraceAnalysis { public: SCAnalysis(); ~SCAnalysis(); + virtual void setExecution(ModelExecution * execution); virtual void analyze(action_list_t *); + virtual char * name(); + SNAPSHOTALLOC private: void print_list(action_list_t *list); - void buildVectors(action_list_t *); + int 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 getNextActions(ModelAction **array); + bool merge(ClockVector *cv, const ModelAction *act, const ModelAction *act2); + void check_rf(action_list_t *list); + void reset(action_list_t *list); + ModelAction* pruneArray(ModelAction**, int); + int maxthreads; - HashTable * cvmap; - HashTable * cycleset; - SnapVector * threadlists; + HashTable cvmap; + bool cyclic; + HashTable badrfset; + HashTable lastwrmap; + SnapVector threadlists; + ModelExecution *execution; }; #endif