current_action = NULL;
next_thread_id = INITIAL_THREAD_ID;
used_sequence_numbers = 0;
+ nextThread = 0;
/* scheduler reset ? */
}
ModelAction *next;
thread_id_t tid;
+ /* Have we completed exploring the preselected path? */
+ if (exploring == NULL)
+ return THREAD_ID_T_NONE;
+
+ /* Else, we are trying to replay an execution */
+ exploring->advance_state();
+
+ ASSERT(exploring->get_state() != NULL);
+
next = exploring->get_state();
if (next == exploring->get_diverge()) {
return tid;
}
-thread_id_t ModelChecker::advance_backtracking_state()
-{
- /* Have we completed exploring the preselected path? */
- if (exploring == NULL)
- return THREAD_ID_T_NONE;
-
- /* Else, we are trying to replay an execution */
- exploring->advance_state();
-
- ASSERT(exploring->get_state() != NULL);
-
- return get_next_replay_thread();
-}
-
bool ModelChecker::next_execution()
{
DBG();
}
model->reset_to_initial_state();
- nextThread = get_next_replay_thread();
return true;
}
return;
}
- nextThread = advance_backtracking_state();
+ nextThread = get_next_replay_thread();
curr->set_node(currentNode);
set_backtracking(curr);
currentNode = currentNode->explore_child(curr);
ModelAction * get_last_conflict(ModelAction *act);
void set_backtracking(ModelAction *act);
- thread_id_t advance_backtracking_state();
thread_id_t get_next_replay_thread();
Backtrack * get_next_backtrack();
void reset_to_initial_state();