From 2fff26ec917956fb24c8b686efbb8a151f928d55 Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Thu, 9 Oct 2014 14:21:52 +0200 Subject: [PATCH] [mc] Give the real type of mc_heap/std_heap (xbt_mheap_t, not void*) --- src/mc/mc_checkpoint.c | 4 ++-- src/mc/mc_comm_determinism.c | 4 ++-- src/mc/mc_diff.c | 8 ++++---- src/mc/mc_ignore.c | 14 ++++++-------- src/mc/mc_memory.c | 4 ++-- src/mc/mc_page_snapshot.cpp | 6 +++--- src/mc/mc_private.h | 7 +++---- 7 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index 244982166c..9b21eb1e73 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -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); diff --git a/src/mc/mc_comm_determinism.c b/src/mc/mc_comm_determinism.c index 89379e4f53..cfbf3f32bb 100644 --- a/src/mc/mc_comm_determinism.c +++ b/src/mc/mc_comm_determinism.c @@ -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); diff --git a/src/mc/mc_diff.c b/src/mc/mc_diff.c index 377e3cbf26..a9b8dd40b7 100644 --- a/src/mc/mc_diff.c +++ b/src/mc/mc_diff.c @@ -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; diff --git a/src/mc/mc_ignore.c b/src/mc/mc_ignore.c index 48f770477b..480a74b2a3 100644 --- a/src/mc/mc_ignore.c +++ b/src/mc/mc_ignore.c @@ -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); diff --git a/src/mc/mc_memory.c b/src/mc/mc_memory.c index c629cf54a9..77d92843ce 100644 --- a/src/mc/mc_memory.c +++ b/src/mc/mc_memory.c @@ -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 */ diff --git a/src/mc/mc_page_snapshot.cpp b/src/mc/mc_page_snapshot.cpp index 60ff820bc4..a231848005 100644 --- a/src/mc/mc_page_snapshot.cpp +++ b/src/mc/mc_page_snapshot.cpp @@ -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); } diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index c06613eded..09413c4153 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -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 - -- 2.20.1