Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Make Snapshot::stack_sizes a std::vector
authorGabriel Corona <gabriel.corona@loria.fr>
Mon, 8 Jun 2015 09:21:33 +0000 (11:21 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 9 Jun 2015 08:20:44 +0000 (10:20 +0200)
src/mc/mc_checkpoint.cpp
src/mc/mc_snapshot.cpp
src/mc/mc_snapshot.h

index 341e81b..1ef9834 100644 (file)
@@ -468,10 +468,9 @@ static xbt_dynar_t MC_take_snapshot_stacks(mc_snapshot_t * snapshot)
     unw_word_t sp = xbt_dynar_get_as(st->stack_frames, 0, mc_stack_frame_t)->sp;
 
     xbt_dynar_push(res, &st);
-    (*snapshot)->stack_sizes = (size_t*)
-        xbt_realloc((*snapshot)->stack_sizes, (cursor + 1) * sizeof(size_t));
-    (*snapshot)->stack_sizes[cursor] =
+    size_t stack_size =
       (char*) current_stack->address + current_stack->size - (char*) sp;
+    (*snapshot)->stack_sizes.push_back(stack_size);
   }
 
   return res;
index c394871..8635af9 100644 (file)
@@ -161,7 +161,7 @@ Snapshot::Snapshot() :
   snapshot_regions_count(0),
   enabled_processes(),
   privatization_index(0),
-  stack_sizes(nullptr),
+  stack_sizes(),
   stacks(nullptr),
   to_ignore(nullptr),
   hash(0),
@@ -177,7 +177,6 @@ Snapshot::~Snapshot()
     delete this->snapshot_regions[i];
   }
   xbt_free(this->snapshot_regions);
-  xbt_free(this->stack_sizes);
   xbt_dynar_free(&(this->stacks));
   xbt_dynar_free(&(this->to_ignore));
   xbt_dynar_free(&this->ignored_data);
index 6a23ca0..075b9b7 100644 (file)
@@ -10,6 +10,7 @@
 #include <sys/types.h> // off_t
 #include <stdint.h> // size_t
 
+#include <vector>
 #include <set>
 
 #include <simgrid_config.h>
@@ -112,7 +113,7 @@ public: // To be private
   size_t snapshot_regions_count;
   std::set<pid_t> enabled_processes;
   int privatization_index;
-  size_t *stack_sizes;
+  std::vector<size_t> stack_sizes;
   xbt_dynar_t stacks;
   xbt_dynar_t to_ignore;
   uint64_t hash;