Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Give the real type of mc_heap/std_heap (xbt_mheap_t, not void*)
authorGabriel Corona <gabriel.corona@loria.fr>
Thu, 9 Oct 2014 12:21:52 +0000 (14:21 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Thu, 9 Oct 2014 13:21:54 +0000 (15:21 +0200)
src/mc/mc_checkpoint.c
src/mc/mc_comm_determinism.c
src/mc/mc_diff.c
src/mc/mc_ignore.c
src/mc/mc_memory.c
src/mc/mc_page_snapshot.cpp
src/mc/mc_private.h

index 2449821..9b21eb1 100644 (file)
@@ -171,8 +171,8 @@ static void MC_snapshot_add_region(mc_snapshot_t snapshot, int type,
 static void MC_get_memory_regions(mc_snapshot_t snapshot)
 {
 
-  void *start_heap = ((xbt_mheap_t) std_heap)->base;
-  void *end_heap = ((xbt_mheap_t) std_heap)->breakval;
+  void *start_heap = std_heap->base;
+  void *end_heap = std_heap->breakval;
   MC_snapshot_add_region(snapshot, 0, start_heap, start_heap,
                          (char *) end_heap - (char *) start_heap);
   snapshot->heap_bytes_used = mmalloc_get_bytes_used(std_heap);
index 89379e4..cfbf3f3 100644 (file)
@@ -159,7 +159,7 @@ static void update_comm_pattern(mc_comm_pattern_t comm_pattern, smx_action_t com
     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 > std_heap && addr_pointed < ((xbt_mheap_t) std_heap)->breakval)
+    if (addr_pointed > (void*) std_heap && addr_pointed < std_heap->breakval)
       memcpy(comm_pattern->data, addr_pointed, comm_pattern->data_size);
     else
       memcpy(comm_pattern->data, comm->comm.src_buff, comm_pattern->data_size);
@@ -183,7 +183,7 @@ void get_comm_pattern(xbt_dynar_t list, smx_simcall_t request, int call)
     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 > std_heap && addr_pointed < ((xbt_mheap_t) std_heap)->breakval)
+    if (addr_pointed > (void*) std_heap && addr_pointed < std_heap->breakval)
       memcpy(pattern->data, addr_pointed, pattern->data_size);
     else
       memcpy(pattern->data, pattern->comm->comm.src_buff, pattern->data_size);
index 377e3cb..a9b8dd4 100644 (file)
@@ -436,8 +436,8 @@ int mmalloc_compare_heap(mc_snapshot_t snapshot1, mc_snapshot_t snapshot2)
   mc_mem_region_t heap_region2 = snapshot2->regions[0];
 
   // This is in snapshot do not use them directly:
-  malloc_info* heapinfos1 = mc_snapshot_read_pointer(&((xbt_mheap_t)std_heap)->heapinfo, snapshot1, MC_NO_PROCESS_INDEX);
-  malloc_info* heapinfos2 = mc_snapshot_read_pointer(&((xbt_mheap_t)std_heap)->heapinfo, snapshot2, MC_NO_PROCESS_INDEX);
+  malloc_info* heapinfos1 = mc_snapshot_read_pointer(&std_heap->heapinfo, snapshot1, MC_NO_PROCESS_INDEX);
+  malloc_info* heapinfos2 = mc_snapshot_read_pointer(&std_heap->heapinfo, snapshot2, MC_NO_PROCESS_INDEX);
 
   while (i1 <= state->heaplimit) {
 
@@ -1136,8 +1136,8 @@ int compare_heap_area(int process_index, void *area1, void *area2, mc_snapshot_t
 
   int match_pairs = 0;
 
-  malloc_info* heapinfos1 = mc_snapshot_read_pointer(&((xbt_mheap_t)std_heap)->heapinfo, snapshot1, process_index);
-  malloc_info* heapinfos2 = mc_snapshot_read_pointer(&((xbt_mheap_t)std_heap)->heapinfo, snapshot2, process_index);
+  malloc_info* heapinfos1 = mc_snapshot_read_pointer(&std_heap->heapinfo, snapshot1, process_index);
+  malloc_info* heapinfos2 = mc_snapshot_read_pointer(&std_heap->heapinfo, snapshot2, process_index);
 
   malloc_info heapinfo_temp1, heapinfo_temp2;
 
index 48f7704..480a74b 100644 (file)
@@ -73,18 +73,16 @@ void MC_ignore_heap(void *address, size_t size)
 
   region->block =
       ((char *) address -
-       (char *) ((xbt_mheap_t) std_heap)->heapbase) / BLOCKSIZE + 1;
+       (char *) std_heap->heapbase) / BLOCKSIZE + 1;
 
-  if (((xbt_mheap_t) std_heap)->heapinfo[region->block].type == 0) {
+  if (std_heap->heapinfo[region->block].type == 0) {
     region->fragment = -1;
-    ((xbt_mheap_t) std_heap)->heapinfo[region->block].busy_block.ignore++;
+    std_heap->heapinfo[region->block].busy_block.ignore++;
   } else {
     region->fragment =
-        ((uintptr_t) (ADDR2UINT(address) % (BLOCKSIZE))) >> ((xbt_mheap_t)
-                                                             std_heap)->
+        ((uintptr_t) (ADDR2UINT(address) % (BLOCKSIZE))) >> std_heap->
         heapinfo[region->block].type;
-    ((xbt_mheap_t) std_heap)->heapinfo[region->block].busy_frag.ignore[region->
-                                                                       fragment]++;
+    std_heap->heapinfo[region->block].busy_frag.ignore[region->fragment]++;
   }
 
   if (mc_heap_comparison_ignore == NULL) {
@@ -330,7 +328,7 @@ void MC_new_stack_area(void *stack, smx_process_t process, void *context, size_t
   region->size = size;
   region->block =
       ((char *) stack -
-       (char *) ((xbt_mheap_t) std_heap)->heapbase) / BLOCKSIZE + 1;
+       (char *) std_heap->heapbase) / BLOCKSIZE + 1;
 #ifdef HAVE_SMPI
   if (smpi_privatize_global_variables && process) {
     region->process_index = smpi_process_index_of_smx_process(process);
index c629cf5..77d9284 100644 (file)
@@ -14,8 +14,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_memory, mc,
                                 "Logging specific to MC (memory)");
 
 /* Pointers to each of the heap regions to use */
-void *std_heap = NULL;          /* memory erased each time the MC stuff rollbacks to the beginning. Almost everything goes here */
-void *mc_heap = NULL;           /* memory persistent over the MC rollbacks. Only MC stuff should go there */
+xbt_mheap_t std_heap = NULL;          /* memory erased each time the MC stuff rollbacks to the beginning. Almost everything goes here */
+xbt_mheap_t mc_heap = NULL;           /* memory persistent over the MC rollbacks. Only MC stuff should go there */
 
 /* Initialize the model-checker memory subsystem */
 /* It creates the two heap regions: std_heap and mc_heap */
index 60ff820..a231848 100644 (file)
@@ -176,7 +176,7 @@ mc_mem_region_t mc_region_new_sparse(int type, void *start_addr, void* permanent
 
   uint64_t* pagemap = NULL;
   if (_sg_mc_soft_dirty && mc_model_checker->parent_snapshot) {
-      pagemap = (uint64_t*) mmalloc_no_memset((xbt_mheap_t) mc_heap, sizeof(uint64_t) * page_count);
+      pagemap = (uint64_t*) mmalloc_no_memset(mc_heap, sizeof(uint64_t) * page_count);
       mc_read_pagemap(pagemap, mc_page_number(NULL, permanent_addr), page_count);
   }
 
@@ -185,7 +185,7 @@ mc_mem_region_t mc_region_new_sparse(int type, void *start_addr, void* permanent
     ref_reg==NULL ? NULL : ref_reg->page_numbers);
 
   if(pagemap) {
-    mfree((xbt_mheap_t) mc_heap, pagemap);
+    mfree(mc_heap, pagemap);
   }
   return new_reg;
 }
@@ -200,7 +200,7 @@ void mc_region_restore_sparse(mc_mem_region_t reg, mc_mem_region_t ref_reg)
 
   // Read soft-dirty bits if necessary in order to know which pages have changed:
   if (_sg_mc_soft_dirty && mc_model_checker->parent_snapshot) {
-    pagemap = (uint64_t*) mmalloc_no_memset((xbt_mheap_t) mc_heap, sizeof(uint64_t) * page_count);
+    pagemap = (uint64_t*) mmalloc_no_memset(mc_heap, sizeof(uint64_t) * page_count);
     mc_read_pagemap(pagemap, mc_page_number(NULL, reg->permanent_addr), page_count);
   }
 
index c06613e..09413c4 100644 (file)
@@ -319,8 +319,8 @@ void MC_print_statistics(mc_stats_t);
 /* Normally the system should operate in std, for switching to raw mode */
 /* you must wrap the code between MC_SET_RAW_MODE and MC_UNSET_RAW_MODE */
 
-extern void *std_heap;
-extern void *mc_heap;
+extern xbt_mheap_t std_heap;
+extern xbt_mheap_t mc_heap;
 
 
 /* FIXME: Horrible hack! because the mmalloc library doesn't provide yet of */
@@ -755,7 +755,7 @@ static inline __attribute__ ((always_inline))
   void* mc_snapshot_get_heap_end(mc_snapshot_t snapshot) {
   if(snapshot==NULL)
       xbt_die("snapshot is NULL");
-  void** addr = &((xbt_mheap_t)std_heap)->breakval;
+  void** addr = &(std_heap->breakval);
   return mc_snapshot_read_pointer(addr, snapshot, MC_ANY_PROCESS_INDEX);
 }
 
@@ -818,4 +818,3 @@ void* mc_snapshot_read_pointer_region(void* addr, mc_mem_region_t region)
 SG_END_DECL()
 
 #endif
-