Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further reduce the amount of call sites for RemoteProcess::actors()
[simgrid.git] / src / mc / sosp / Snapshot.cpp
index b195356..bf91e7c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2021. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2014-2022. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -10,8 +10,7 @@
 #include <cstddef> /* std::size_t */
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_snapshot, mc, "Taking and restoring snapshots");
-namespace simgrid {
-namespace mc {
+namespace simgrid::mc {
 /************************************* Take Snapshot ************************************/
 /****************************************************************************************/
 
@@ -58,6 +57,12 @@ static void fill_local_variables_values(mc_stack_frame_t stack_frame, Frame* sco
     if (not valid_variable(&current_variable, scope, (void*)stack_frame->ip))
       continue;
 
+    if (not current_variable.type) {
+      XBT_VERB("Ignore local variable without type: '%s' [%s]", current_variable.name.c_str(),
+               stack_frame->frame->name.c_str());
+      continue;
+    }
+
     s_local_variable_t new_var;
     new_var.subprogram = stack_frame->frame;
     new_var.ip         = stack_frame->ip;
@@ -194,12 +199,9 @@ static void snapshot_ignore_restore(const simgrid::mc::Snapshot* snapshot)
                                                 remote(ignored_data.start));
 }
 
-Snapshot::Snapshot(int num_state, RemoteProcess* process) : AddressSpace(process), num_state_(num_state)
+Snapshot::Snapshot(long num_state, RemoteProcess* process) : AddressSpace(process), num_state_(num_state)
 {
-  XBT_DEBUG("Taking snapshot %i", num_state);
-
-  for (auto const& p : process->actors())
-    enabled_processes_.insert(p.copy.get_buffer()->get_pid());
+  XBT_DEBUG("Taking snapshot %ld", num_state);
 
   snapshot_handle_ignore(this);
 
@@ -271,7 +273,7 @@ Region* Snapshot::get_region(const void* addr, Region* hinted_region) const
 
 void Snapshot::restore(RemoteProcess* process) const
 {
-  XBT_DEBUG("Restore snapshot %i", num_state_);
+  XBT_DEBUG("Restore snapshot %ld", num_state_);
 
   // Restore regions
   for (std::unique_ptr<Region> const& region : snapshot_regions_) {
@@ -283,5 +285,4 @@ void Snapshot::restore(RemoteProcess* process) const
   process->clear_cache();
 }
 
-} // namespace mc
-} // namespace simgrid
+} // namespace simgrid::mc