From af44cc9a2142508d1307d0bb164d9def7a22481f Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Fri, 28 Apr 2023 02:01:20 +0200 Subject: [PATCH] One use less of get_recipe() that will soon die --- src/mc/explo/DFSExplorer.cpp | 9 ++++++--- src/mc/mc_record.hpp | 9 +++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/mc/explo/DFSExplorer.cpp b/src/mc/explo/DFSExplorer.cpp index 63765f80cf..4742ab474a 100644 --- a/src/mc/explo/DFSExplorer.cpp +++ b/src/mc/explo/DFSExplorer.cpp @@ -69,10 +69,13 @@ void DFSExplorer::check_non_termination(const State* current_state) RecordTrace DFSExplorer::get_record_trace() // override { RecordTrace res; - for (auto const& transition : stack_.back()->get_recipe()) - res.push_back(transition); + if (const auto trans = stack_.back()->get_transition_out(); trans != nullptr) - res.push_back(stack_.back()->get_transition_out().get()); + res.push_back(trans.get()); + for (const auto* state = stack_.back().get(); state != nullptr; state = state->get_parent_state().get()) + if (state->get_transition_in() != nullptr) + res.push_front(state->get_transition_in().get()); + return res; } diff --git a/src/mc/mc_record.hpp b/src/mc/mc_record.hpp index 753ffafa9f..b0739db41f 100644 --- a/src/mc/mc_record.hpp +++ b/src/mc/mc_record.hpp @@ -19,13 +19,13 @@ #include "src/mc/mc_forward.hpp" #include "xbt/base.h" +#include #include -#include namespace simgrid::mc { class RecordTrace { - std::vector transitions_; + std::deque transitions_; public: RecordTrace() = default; @@ -35,9 +35,10 @@ public: /** Make a string representation that can later be used to create a new trace */ std::string to_string() const; + void push_front(Transition* t) { transitions_.push_front(t); } void push_back(Transition* t) { transitions_.push_back(t); } - std::vector::const_iterator begin() const { return transitions_.begin(); } - std::vector::const_iterator end() const { return transitions_.end(); } + std::deque::const_iterator begin() const { return transitions_.begin(); } + std::deque::const_iterator end() const { return transitions_.end(); } /** Replay all transitions of a trace */ void replay() const; -- 2.20.1