Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge master into mc-process
[simgrid.git] / src / mc / mc_comm_determinism.c
index b68e563..6576d60 100644 (file)
@@ -167,6 +167,7 @@ static void print_incomplete_communications_pattern(){
 
 static void update_comm_pattern(mc_comm_pattern_t comm_pattern, smx_synchro_t comm)
 {
+  mc_process_t process = &mc_model_checker->process;
   void *addr_pointed;
   comm_pattern->src_proc = comm->comm.src_proc->pid;
   comm_pattern->dst_proc = comm->comm.dst_proc->pid;
@@ -176,7 +177,8 @@ static void update_comm_pattern(mc_comm_pattern_t comm_pattern, smx_synchro_t co
     comm_pattern->data_size = *(comm->comm.dst_buff_size);
     comm_pattern->data = xbt_malloc0(comm_pattern->data_size);
     addr_pointed = *(void **) comm->comm.src_buff;
-    if (addr_pointed > (void*) std_heap && addr_pointed < std_heap->breakval)
+    if (addr_pointed > (void*) process->heap_address
+        && addr_pointed < MC_process_get_heap(process)->breakval)
       memcpy(comm_pattern->data, addr_pointed, comm_pattern->data_size);
     else
       memcpy(comm_pattern->data, comm->comm.src_buff, comm_pattern->data_size);
@@ -216,7 +218,7 @@ void list_comm_pattern_free_voidp(void *p) {
 
 void get_comm_pattern(xbt_dynar_t list, smx_simcall_t request, e_mc_call_type_t call_type)
 {
-
+  mc_process_t process = &mc_model_checker->process;
   mc_comm_pattern_t pattern = NULL;
   pattern = xbt_new0(s_mc_comm_pattern_t, 1);
   pattern->data_size = -1;
@@ -237,7 +239,8 @@ void get_comm_pattern(xbt_dynar_t list, smx_simcall_t request, e_mc_call_type_t
       pattern->data_size = pattern->comm->comm.src_buff_size;
       pattern->data = xbt_malloc0(pattern->data_size);
       addr_pointed = *(void **) pattern->comm->comm.src_buff;
-      if (addr_pointed > (void*) std_heap && addr_pointed < std_heap->breakval)
+      if (addr_pointed > (void*) process->heap_address
+          && addr_pointed < MC_process_get_heap(process)->breakval)
         memcpy(pattern->data, addr_pointed, pattern->data_size);
       else
         memcpy(pattern->data, pattern->comm->comm.src_buff, pattern->data_size);
@@ -322,16 +325,12 @@ void complete_comm_pattern(xbt_dynar_t list, smx_synchro_t comm, int backtrackin
 
 void MC_pre_modelcheck_comm_determinism(void)
 {
-
-  int mc_mem_set = (mmalloc_get_current_heap() == mc_heap);
+  MC_SET_MC_HEAP;
 
   mc_state_t initial_state = NULL;
   smx_process_t process;
   int i;
 
-  if (!mc_mem_set)
-    MC_SET_MC_HEAP;
-
   if (_sg_mc_visited > 0)
     visited_states = xbt_dynar_new(sizeof(mc_visited_state_t), visited_state_free_voidp);