Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rename some fields to obey our coding standard
[simgrid.git] / src / mc / explo / DFSExplorer.cpp
index 15d30b9..d9eb85d 100644 (file)
@@ -118,7 +118,7 @@ void DFSExplorer::run()
     // Backtrack if we are revisiting a state we saw previously
     if (visited_state_ != nullptr) {
       XBT_DEBUG("State already visited (equal to state %ld), exploration stopped on this path.",
-                visited_state_->original_num == -1 ? visited_state_->num : visited_state_->original_num);
+                visited_state_->original_num_ == -1 ? visited_state_->num_ : visited_state_->original_num_);
 
       visited_state_ = nullptr;
       this->backtrack();
@@ -143,13 +143,14 @@ void DFSExplorer::run()
       continue;
     }
 
-    XBT_VERB("Sleep set actually containing:");
-    for (auto & [aid, transition] : state->get_sleep_set()) {
-      
-       XBT_VERB("###<%ld,%s>", aid, transition.to_string().c_str());
+    if (_sg_mc_sleep_set) {
+       XBT_VERB("Sleep set actually containing:");
+       for (auto & [aid, transition] : state->get_sleep_set()) {
+   
+           XBT_VERB("  <%ld,%s>", aid, transition.to_string().c_str());
       
+       }
     }
-
     /* Actually answer the request: let's execute the selected request (MCed does one step) */
     state->execute_next(next);
     on_transition_execute_signal(state->get_transition(), get_remote_app());
@@ -160,11 +161,11 @@ void DFSExplorer::run()
              state->get_transition()->to_string().c_str(), stack_.size(), state->get_num(), state->count_todo());
 
     /* Create the new expanded state (copy the state of MCed into our MCer data) */
-    std::__detail::__unique_ptr_t<simgrid::mc::State> next_state;
+    std::unique_ptr<State> next_state;
 
     /* If we want sleep set reduction, pass the old state to the new state so it can
      * both copy the sleep set and eventually removes things from it locally */
-    if (sleep_set_reduction_)
+    if (_sg_mc_sleep_set)
        next_state = std::make_unique<State>(get_remote_app(), state); 
     else
        next_state = std::make_unique<State>(get_remote_app());
@@ -183,7 +184,7 @@ void DFSExplorer::run()
     if (visited_state_ == nullptr) {
       /* Get an enabled process and insert it in the interleave set of the next state */
       for (auto const& [aid, _] : next_state->get_actors_list()) {
-        if (next_state->is_actor_enabled(aid) and not next_state->is_done(aid)) {
+        if (next_state->is_actor_enabled(aid) and not next_state->is_actor_done(aid)) {
           next_state->mark_todo(aid);
           if (reduction_mode_ == ReductionMode::dpor)
             break; // With DPOR, we take the first enabled transition
@@ -194,8 +195,8 @@ void DFSExplorer::run()
                                    state->get_transition()->dot_string().c_str());
     } else
       mc_model_checker->dot_output("\"%ld\" -> \"%ld\" [%s];\n", state->get_num(),
-                                   visited_state_->original_num == -1 ? visited_state_->num
-                                                                      : visited_state_->original_num,
+                                   visited_state_->original_num_ == -1 ? visited_state_->num_
+                                                                       : visited_state_->original_num_,
                                    state->get_transition()->dot_string().c_str());
 
     stack_.push_back(std::move(next_state));
@@ -209,7 +210,6 @@ void DFSExplorer::backtrack()
   backtrack_count_++;
   XBT_VERB("Backtracking from %s", get_record_trace().to_string().c_str());
   on_backtracking_signal(get_remote_app());
-
   get_remote_app().check_deadlock();
 
   /* We may backtrack from somewhere either because it's leaf, or because every enabled process are in done/sleep set.
@@ -228,9 +228,8 @@ void DFSExplorer::backtrack()
     
     stack_.pop_back();
     
-    XBT_DEBUG("Maarking Transition >>%s<< of process %ld done and adding it to the sleep set", state->get_transition()->to_string().c_str(), state->get_transition()->aid_);
-    state->mark_done(state->get_transition()->aid_);
-    state->set_sleep_set(state->get_transition());
+    XBT_DEBUG("Marking Transition >>%s<< of process %ld done and adding it to the sleep set", state->get_transition()->to_string().c_str(), state->get_transition()->aid_);
+    state->add_sleep_set(state->get_transition()); // Actors are marked done when they are considerd in ActorState
 
     if (reduction_mode_ == ReductionMode::dpor) {
       aid_t issuer_id = state->get_transition()->aid_;
@@ -246,13 +245,13 @@ void DFSExplorer::backtrack()
           XBT_VERB("  %s (state=%ld)", state->get_transition()->to_string().c_str(), state->get_num());
 
          if (prev_state->is_actor_enabled(issuer_id)){
-             if (not prev_state->is_done(issuer_id))
+             if (not prev_state->is_actor_done(issuer_id))
                  prev_state->mark_todo(issuer_id);
              else
                  XBT_DEBUG("Actor %ld is already in done set: no need to explore it again", issuer_id);
          } else {
-             XBT_DEBUG("Actor %ld is not enabled: DPOR may be failing, to stay sound, we are marking every enabled transition as todo", issuer_id);
-             prev_state->mark_all_todo();
+             XBT_DEBUG("Actor %ld is not enabled: DPOR may be failing. To stay sound, we are marking every enabled transition as todo", issuer_id);
+             prev_state->mark_all_enabled_todo();
          }
           break;
         } else {
@@ -267,7 +266,8 @@ void DFSExplorer::backtrack()
       XBT_DEBUG("Delete state %ld at depth %zu", state->get_num(), stack_.size() + 1);
 
     } else {
-       XBT_DEBUG("Back-tracking to state %ld at depth %zu: %ld transitions left to be explored", state->get_num(), stack_.size() + 1, state->count_todo());
+      XBT_DEBUG("Back-tracking to state %ld at depth %zu: %lu transitions left to be explored", state->get_num(),
+                stack_.size() + 1, state->count_todo());
       stack_.push_back(std::move(state)); // Put it back on the stack so we can explore the next transition of the interleave
       found_backtracking_point = true;
     }
@@ -305,8 +305,6 @@ DFSExplorer::DFSExplorer(const std::vector<char*>& args, bool with_dpor) : Explo
   else
     reduction_mode_ = ReductionMode::none;
 
-  sleep_set_reduction_ = _sg_mc_sleep_set;
-  
   if (_sg_mc_termination) {
     if (with_dpor) {
       XBT_INFO("Check non progressive cycles (turning DPOR off)");