Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Simplify s_mc_snapshot_stack
authorGabriel Corona <gabriel.corona@loria.fr>
Mon, 16 Jun 2014 11:00:15 +0000 (13:00 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Mon, 16 Jun 2014 11:00:15 +0000 (13:00 +0200)
Some fields were not used and have been removed:

  * stack_pointer (SP in the snapshot)
  * real_address  (address of the stack)

The first one does not make sense with page-fragmented snapshot.

Simplify the computation of snapshot->stack_sizes[cursor].  The old
computation did not make sense with page fragmented snapshots.

src/mc/mc_checkpoint.c
src/mc/mc_private.h

index 08b3352..9d575f2 100644 (file)
@@ -478,18 +478,12 @@ static xbt_dynar_t MC_take_snapshot_stacks(mc_snapshot_t * snapshot, void *heap)
     st->local_variables = MC_get_local_variables_values(st->stack_frames);
 
     unw_word_t sp = xbt_dynar_get_as(st->stack_frames, 0, mc_stack_frame_t)->sp;
-    st->stack_pointer =
-        ((char *) heap + (size_t) (((char *) ((long) sp) - (char *) std_heap)));
 
-    st->real_address = current_stack->address;
     xbt_dynar_push(res, &st);
     (*snapshot)->stack_sizes =
         xbt_realloc((*snapshot)->stack_sizes, (cursor + 1) * sizeof(size_t));
     (*snapshot)->stack_sizes[cursor] =
-        current_stack->size - ((char *) st->stack_pointer -
-                               (char *) ((char *) heap +
-                                         ((char *) current_stack->address -
-                                          (char *) std_heap)));
+      (char*) current_stack->address + current_stack->size - (char*) sp;
   }
 
   return res;
index 62a82f5..c8fa6bd 100644 (file)
@@ -87,8 +87,6 @@ typedef struct s_mc_stack_frame {
 
 typedef struct s_mc_snapshot_stack{
   xbt_dynar_t local_variables;
-  void *stack_pointer;
-  void *real_address;
   xbt_dynar_t stack_frames; // mc_stack_frame_t
 }s_mc_snapshot_stack_t, *mc_snapshot_stack_t;