this->exploring = NULL;
this->nextThread = THREAD_ID_T_NONE;
- rootNode = new TreeNode(NULL);
+ rootNode = new TreeNode();
currentNode = rootNode;
action_trace = new action_list_t();
}
{
ModelAction *prev;
TreeNode *node;
+ Thread *t = get_thread(act->get_tid());
prev = get_last_conflict(act);
if (prev == NULL)
node = prev->get_node();
+ while (t && !node->is_enabled(t))
+ t = t->get_parent();
+
/* Check if this has been explored already */
- if (node->hasBeenExplored(act->get_tid()))
+ if (node->hasBeenExplored(t->get_id()))
return;
/* If this is a new backtracking point, mark the tree */
- if (node->setBacktrack(act->get_tid()) != 0)
+ if (node->setBacktrack(t->get_id()) != 0)
return;
DEBUG("Setting backtrack: conflict = %d, instead tid = %d\n",
- prev->get_tid(), act->get_tid());
+ prev->get_tid(), t->get_id());
if (DBG_ENABLED()) {
prev->print();
act->print();
nextThread = advance_backtracking_state();
next->set_node(currentNode);
set_backtracking(next);
- currentNode = currentNode->exploreChild(next->get_tid());
+ currentNode = currentNode->explore_child(next);
this->action_trace->push_back(next);
}