3 #include "traceanalysis.h"
7 unsigned long long elapsedtime;
9 unsigned int nonsccount;
12 class SCAnalysis : public TraceAnalysis {
16 virtual void setExecution(ModelExecution * execution);
17 virtual void analyze(action_list_t *);
18 virtual const char * name();
19 virtual bool option(char *);
20 virtual void finish();
26 void print_list(action_list_t *list);
27 int buildVectors(action_list_t *);
28 bool updateConstraints(ModelAction *act);
29 void computeCV(action_list_t *);
30 action_list_t * generateSC(action_list_t *);
31 bool processRead(ModelAction *read, ClockVector *cv);
32 int getNextActions(ModelAction **array);
33 bool merge(ClockVector *cv, const ModelAction *act, const ModelAction *act2);
34 void check_rf(action_list_t *list);
35 void reset(action_list_t *list);
36 ModelAction* pruneArray(ModelAction**, int);
39 HashTable<const ModelAction *, ClockVector *, uintptr_t, 4 > cvmap;
41 HashTable<const ModelAction *, const ModelAction *, uintptr_t, 4 > badrfset;
42 HashTable<void *, const ModelAction *, uintptr_t, 4 > lastwrmap;
43 SnapVector<action_list_t> threadlists;
44 ModelExecution *execution;
49 struct sc_statistics *stats;