}
/** @returns a sequence number for a new ModelAction */
-int ModelChecker::get_next_seq_num()
+modelclock_t ModelChecker::get_next_seq_num()
{
return ++used_sequence_numbers;
}
next = node_stack->get_next()->get_action();
if (next == diverge) {
- Node *node = next->get_node();
+ Node *node = next->get_node()->get_parent();
/* Reached divergence point */
DEBUG("*** Divergence point ***\n");
if (prev == NULL)
return;
- node = prev->get_node();
+ node = prev->get_node()->get_parent();
while (!node->is_enabled(t))
t = t->get_parent();
if (node->has_been_explored(t->get_id()))
return;
+ /* Cache the latest backtracking point */
if (!next_backtrack || *prev > *next_backtrack)
next_backtrack = prev;
nextThread = get_next_replay_thread();
- currnode = curr->get_node();
+ currnode = curr->get_node()->get_parent();
if (!currnode->backtrack_empty())
if (!next_backtrack || *curr > *next_backtrack)
}
}
-void ModelChecker::print_summary(void)
-{
- printf("\n");
- printf("Number of executions: %d\n", num_executions);
- printf("Total nodes created: %d\n", node_stack->get_total_nodes());
-
- scheduler->print();
-
- print_list(action_trace);
- printf("\n");
-}
-
-void ModelChecker::print_list(action_list_t *list)
+static void print_list(action_list_t *list)
{
action_list_t::iterator it;
printf("---------------------------------------------------------------------\n");
}
+void ModelChecker::print_summary(void)
+{
+ printf("\n");
+ printf("Number of executions: %d\n", num_executions);
+ printf("Total nodes created: %d\n", node_stack->get_total_nodes());
+
+ scheduler->print();
+
+ print_list(action_trace);
+ printf("\n");
+}
+
int ModelChecker::add_thread(Thread *t)
{
(*thread_map)[id_to_int(t->get_id())] = t;