3 #include "traceanalysis.h"
6 class SCAnalysis : public TraceAnalysis {
10 virtual void setExecution(ModelExecution * execution);
11 virtual void analyze(action_list_t *);
12 virtual char * name();
17 void print_list(action_list_t *list);
18 int buildVectors(action_list_t *);
19 bool updateConstraints(ModelAction *act);
20 void computeCV(action_list_t *);
21 action_list_t * generateSC(action_list_t *);
22 bool processRead(ModelAction *read, ClockVector *cv);
23 int getNextActions(ModelAction **array);
24 bool merge(ClockVector *cv, const ModelAction *act, const ModelAction *act2);
25 void check_rf(action_list_t *list);
26 void reset(action_list_t *list);
27 ModelAction* pruneArray(ModelAction**, int);
30 HashTable<const ModelAction *, ClockVector *, uintptr_t, 4 > cvmap;
32 HashTable<const ModelAction *, const ModelAction *, uintptr_t, 4 > badrfset;
33 HashTable<void *, const ModelAction *, uintptr_t, 4 > lastwrmap;
34 SnapVector<action_list_t> threadlists;
35 ModelExecution *execution;