for (const std::unique_ptr<State>& state : state_stack) {
if (state == state_stack.back()) /* If we are arrived on the target state, don't replay the outgoing transition */
break;
- state->get_transition()->replay(get_remote_app());
+ state->get_transition_out()->replay(get_remote_app());
}
}
XBT_DEBUG("Moving {%s} from U to G...", to_remove.to_string().c_str());
clean_up_set.form_union(to_remove);
}
- // TODO: We compute everything... but we don't actually
- // remove anything yet. This is a workaround until
- // we figure out how to deal with the fact that the previous
+
+ // TODO: We still perhaps need to
+ // figure out how to deal with the fact that the previous
// extension sets computed for past configurations
// contain events that may be removed from `U`. Perhaps
// it would be best to keep them around forever (they
// more efficient (we have to search all of `U` for such conflicts,
// and there would be no reason to search those events
// that UDPOR has marked as no longer being important)
- //
- // this->unfolding.remove(clean_up_set);
+ // For now, there appear to be no "obvious" issues (although
+ // UDPOR's behavior is often far from obvious...)
+ this->unfolding.mark_finished(clean_up_set);
}
RecordTrace UdporChecker::get_record_trace()
{
RecordTrace res;
for (auto const& state : state_stack)
- res.push_back(state->get_transition());
+ res.push_back(state->get_transition_out().get());
return res;
}
-std::vector<std::string> UdporChecker::get_textual_trace()
-{
- std::vector<std::string> trace;
- for (auto const& state : state_stack) {
- const auto* t = state->get_transition();
- trace.push_back(xbt::string_printf("%ld: %s", t->aid_, t->to_string().c_str()));
- }
- return trace;
-}
-
} // namespace simgrid::mc::udpor
namespace simgrid::mc {