-ModelExecution::ModelExecution(struct model_params *params, Scheduler *scheduler, NodeStack *node_stack) :
+ModelExecution::ModelExecution(ModelChecker *m,
+ struct model_params *params,
+ Scheduler *scheduler,
+ NodeStack *node_stack) :
+ model(m),
thrd_last_fence_release(new SnapVector<ModelAction *>()),
node_stack(node_stack),
priv(new struct model_snapshot_members()),
thrd_last_fence_release(new SnapVector<ModelAction *>()),
node_stack(node_stack),
priv(new struct model_snapshot_members()),
{
/* Initialize a model-checker thread, for special ModelActions */
model_thread = new Thread(get_next_id());
{
/* Initialize a model-checker thread, for special ModelActions */
model_thread = new Thread(get_next_id());
static action_list_t * get_safe_ptr_action(HashTable<const void *, action_list_t *, uintptr_t, 4> * hash, void * ptr)
{
action_list_t *tmp = hash->get(ptr);
static action_list_t * get_safe_ptr_action(HashTable<const void *, action_list_t *, uintptr_t, 4> * hash, void * ptr)
{
action_list_t *tmp = hash->get(ptr);
if (isfeasibleprefix()) {
if (scheduler->all_threads_sleeping())
model_print(" SLEEP-SET REDUNDANT");
if (isfeasibleprefix()) {
if (scheduler->all_threads_sleeping())
model_print(" SLEEP-SET REDUNDANT");