ClockVector * get_cv(thread_id_t tid);
ModelAction * get_parent_action(thread_id_t tid);
bool next_execution();
- bool isfeasible();
- bool isfeasibleotherthanRMW();
- bool isfinalfeasible();
+ bool isfeasible() const;
+ bool isfeasibleotherthanRMW() const;
+ bool isfinalfeasible() const;
void check_promises_thread_disabled();
void mo_check_promises(thread_id_t tid, const ModelAction *write);
void check_promises(thread_id_t tid, ClockVector *old_cv, ClockVector * merge_cv);
void get_release_seq_heads(ModelAction *act, rel_heads_list_t *release_heads);
void finish_execution();
- bool isfeasibleprefix();
+ bool isfeasibleprefix() const;
void set_assert() {asserted=true;}
bool is_deadlocked() const;
+ bool is_complete_execution() const;
/** @brief Alert the model-checker that an incorrectly-ordered
* synchronization was made */
void set_bad_synchronization() { bad_synchronization = true; }
const model_params params;
- Scheduler * get_scheduler() { return scheduler;}
Node * get_curr_node();
MEMALLOC
void reset_asserted() {asserted=false;}
int num_executions;
int num_feasible_executions;
- bool promises_expired();
+ bool promises_expired() const;
void execute_sleep_set();
void wake_up_sleeping_actions(ModelAction * curr);
modelclock_t get_next_seq_num();
/** Per-object list of actions. Maps an object (i.e., memory location)
* to a trace of all actions performed on the object. */
- HashTable<const void *, action_list_t, uintptr_t, 4> *obj_map;
+ HashTable<const void *, action_list_t *, uintptr_t, 4> *obj_map;
/** Per-object list of actions. Maps an object (i.e., memory location)
* to a trace of all actions performed on the object. */
- HashTable<const void *, action_list_t, uintptr_t, 4> *lock_waiters_map;
+ HashTable<const void *, action_list_t *, uintptr_t, 4> *lock_waiters_map;
/** Per-object list of actions. Maps an object (i.e., memory location)
* to a trace of all actions performed on the object. */
- HashTable<const void *, action_list_t, uintptr_t, 4> *condvar_waiters_map;
+ HashTable<const void *, action_list_t *, uintptr_t, 4> *condvar_waiters_map;
- HashTable<void *, std::vector<action_list_t>, uintptr_t, 4 > *obj_thrd_map;
+ HashTable<void *, std::vector<action_list_t> *, uintptr_t, 4 > *obj_thrd_map;
std::vector< Promise *, SnapshotAlloc<Promise *> > *promises;
std::vector< struct PendingFutureValue, SnapshotAlloc<struct PendingFutureValue> > *futurevalues;