- /** 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<void *, std::vector<action_list_t> *, uintptr_t, 4 > * const obj_thrd_map;
- std::vector< Promise *, SnapshotAlloc<Promise *> > * const promises;
- std::vector< struct PendingFutureValue, SnapshotAlloc<struct PendingFutureValue> > * const futurevalues;
-
- /**
- * List of pending release sequences. Release sequences might be
- * determined lazily as promises are fulfilled and modification orders
- * are established. Each entry in the list may only be partially
- * filled, depending on its pending status.
- */
- std::vector< struct release_seq *, SnapshotAlloc<struct release_seq *> > * const pending_rel_seqs;
-
- std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > * const thrd_last_action;
- std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > * const thrd_last_fence_release;
- NodeStack * const node_stack;
-
- /** Private data members that should be snapshotted. They are grouped
- * together for efficiency and maintainability. */
- struct model_snapshot_members * const priv;
-
- /** A special model-checker Thread; used for associating with
- * model-checker-related ModelAcitons */
- Thread *model_thread;
-
- /**
- * @brief The modification order graph
- *
- * A directed acyclic graph recording observations of the modification
- * order on all the atomic objects in the system. This graph should
- * never contain any cycles, as that represents a violation of the
- * memory model (total ordering). This graph really consists of many
- * disjoint (unconnected) subgraphs, each graph corresponding to a
- * separate ordering on a distinct object.
- *
- * The edges in this graph represent the "ordered before" relation,
- * such that <tt>a --> b</tt> means <tt>a</tt> was ordered before
- * <tt>b</tt>.
- */
- CycleGraph * const mo_graph;