* @param nthreads The number of threads which exist at this point in the
* execution trace.
*/
-Node::Node(ModelAction *act, Node *par, int nthreads)
+Node::Node(ModelAction *act, Node *par, int nthreads, bool *enabled)
: action(act),
parent(par),
num_threads(nthreads),
{
if (act)
act->set_node(this);
+ enabled_array=(bool *)MYMALLOC(sizeof(bool)*num_threads);
+ if (enabled)
+ memcpy(enabled_array, enabled, sizeof(bool)*num_threads);
+ else
+ for(int i=0;i<num_threads;i++)
+ enabled_array[i]=false;
}
/** @brief Node desctructor */
{
if (action)
delete action;
+ MYFREE(enabled_array);
}
/** Prints debugging info for the ModelAction associated with this Node */
bool Node::is_enabled(Thread *t)
{
- return id_to_int(t->get_id()) < num_threads;
+ int thread_id=id_to_int(t->get_id());
+ return thread_id < num_threads && enabled_array[thread_id];
}
/**
printf("............................................\n");
}
-ModelAction * NodeStack::explore_action(ModelAction *act)
+ModelAction * NodeStack::explore_action(ModelAction *act, bool * is_enabled)
{
DBG();