class Scheduler;
class Thread;
class ClockVector;
-class Trace_Analysis;
+class TraceAnalysis;
struct model_snapshot_members;
/** @brief Shorthand for a list of release sequence heads */
ClockVector * get_cv(thread_id_t tid) const;
ModelAction * get_parent_action(thread_id_t tid) const;
void check_promises_thread_disabled();
- void check_promises(thread_id_t tid, ClockVector *old_cv, ClockVector *merge_cv);
bool isfeasibleprefix() const;
bool assert_bug(const char *msg, ...);
const model_params params;
Node * get_curr_node() const;
- void add_trace_analysis(Trace_Analysis * a) {
+ void add_trace_analysis(TraceAnalysis *a) {
trace_analyses->push_back(a);
}
bool process_thread_action(ModelAction *curr);
void process_relseq_fixup(ModelAction *curr, work_queue_t *work_queue);
bool read_from(ModelAction *act, const ModelAction *rf);
+ bool synchronize(const ModelAction *first, ModelAction *second);
bool check_action_enabled(ModelAction *curr);
Thread * take_step(ModelAction *curr);
void compute_promises(ModelAction *curr);
void compute_relseq_breakwrites(ModelAction *curr);
+ void check_promises(thread_id_t tid, ClockVector *old_cv, ClockVector *merge_cv);
void mo_check_promises(const ModelAction *act, bool is_read_check);
void thread_blocking_check_promises(Thread *blocker, Thread *waiting);
SnapVector<ModelAction *> * const thrd_last_action;
SnapVector<ModelAction *> * const thrd_last_fence_release;
NodeStack * const node_stack;
- ModelVector<Trace_Analysis *> * trace_analyses;
+ ModelVector<TraceAnalysis *> * trace_analyses;
/** Private data members that should be snapshotted. They are grouped