ModelAction * get_next_backtrack();
- action_list_t * get_action_trace() const { return action_trace; }
+ action_list_t * get_action_trace() { return &action_trace; }
SNAPSHOTALLOC
private:
ModelAction * get_uninitialized_action(const ModelAction *curr) const;
- action_list_t * const action_trace;
- HashTable<int, Thread *, int> * const thread_map;
+ action_list_t action_trace;
+ SnapVector<Thread *> thread_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> * const 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> * const condvar_waiters_map;
+ HashTable<const void *, action_list_t *, uintptr_t, 4> condvar_waiters_map;
- HashTable<void *, SnapVector<action_list_t> *, uintptr_t, 4 > * const obj_thrd_map;
- SnapVector<Promise *> * const promises;
- SnapVector<struct PendingFutureValue> * const futurevalues;
+ HashTable<void *, SnapVector<action_list_t> *, uintptr_t, 4> obj_thrd_map;
+ SnapVector<Promise *> promises;
+ SnapVector<struct PendingFutureValue> futurevalues;
/**
* List of pending release sequences. Release sequences might be
* are established. Each entry in the list may only be partially
* filled, depending on its pending status.
*/
- SnapVector<struct release_seq *> * const pending_rel_seqs;
+ SnapVector<struct release_seq *> pending_rel_seqs;
- SnapVector<ModelAction *> * const thrd_last_action;
- SnapVector<ModelAction *> * const thrd_last_fence_release;
+ SnapVector<ModelAction *> thrd_last_action;
+ SnapVector<ModelAction *> thrd_last_fence_release;
NodeStack * const node_stack;
/** A special model-checker Thread; used for associating with