286f73dea6ec00f065af822f66ae4c3baee1f59c
[cdsspec-compiler.git] / scanalysis.h
1 #ifndef SCANALYSIS_H
2 #define SCANALYSIS_H
3 #include "traceanalysis.h"
4 #include "hashtable.h"
5
6 class SCAnalysis : public TraceAnalysis {
7  public:
8         SCAnalysis();
9         ~SCAnalysis();
10         virtual void setExecution(ModelExecution * execution);
11         virtual void analyze(action_list_t *);
12         virtual char * name();
13         virtual bool option(char *);
14
15         SNAPSHOTALLOC
16  private:
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);
28
29         int maxthreads;
30         HashTable<const ModelAction *, ClockVector *, uintptr_t, 4 > cvmap;
31         bool cyclic;
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;
36 };
37 #endif