X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9fcd145754f52ed8f27349db4508a20ae5ba0a49..9a5bef704c2690a8fc084dd6765fcb347d55ecc8:/src/xbt/mmalloc/mmalloc.c diff --git a/src/xbt/mmalloc/mmalloc.c b/src/xbt/mmalloc/mmalloc.c index 89d1ec614d..04f6731c58 100644 --- a/src/xbt/mmalloc/mmalloc.c +++ b/src/xbt/mmalloc/mmalloc.c @@ -122,7 +122,9 @@ static void *register_morecore(struct mdesc *mdp, size_t size) newinfo[BLOCK(oldinfo)].busy_block.size = BLOCKIFY(mdp->heapsize * sizeof(malloc_info)); newinfo[BLOCK(oldinfo)].busy_block.busy_size = size; - newinfo[BLOCK(oldinfo)].busy_block.bt_size = 0;// FIXME setup the backtrace + newinfo[BLOCK(oldinfo)].busy_block.ignore = 0; + newinfo[BLOCK(oldinfo)].busy_block.equal_to = NULL; + //newinfo[BLOCK(oldinfo)].busy_block.bt_size = 0;// FIXME setup the backtrace mfree(mdp, (void *) oldinfo); mdp->heapsize = newsize; } @@ -201,7 +203,10 @@ void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size) /* Update our metadata about this fragment */ candidate_info->busy_frag.frag_size[candidate_frag] = requested_size; - xbt_backtrace_no_malloc(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE); + candidate_info->busy_frag.ignore[candidate_frag] = 0; + candidate_info->busy_frag.equal_to[candidate_frag] = NULL; + //xbt_backtrace_no_malloc(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE); + //xbt_libunwind_backtrace(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE); /* Update the statistics. */ mdp -> heapstats.chunks_used++; @@ -220,6 +225,8 @@ void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size) /* Link all fragments but the first as free, and add the block to the swag of blocks containing free frags */ for (i = 1; i < (size_t) (BLOCKSIZE >> log); ++i) { mdp->heapinfo[block].busy_frag.frag_size[i] = -1; + mdp->heapinfo[block].busy_frag.ignore[i] = 0; + mdp->heapinfo[block].busy_frag.equal_to[i] = NULL; } mdp->heapinfo[block].busy_frag.nfree = i - 1; mdp->heapinfo[block].freehook.prev = NULL; @@ -229,7 +236,10 @@ void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size) /* mark the fragment returned as busy */ mdp->heapinfo[block].busy_frag.frag_size[0] = requested_size; - xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE); + mdp->heapinfo[block].busy_frag.ignore[0] = 0; + mdp->heapinfo[block].busy_frag.equal_to[0] = NULL; + //xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE); + //xbt_libunwind_backtrace(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE); /* update stats */ mdp -> heapstats.chunks_free += (BLOCKSIZE >> log) - 1; @@ -273,10 +283,14 @@ void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size) block = BLOCK(result); for (it=0;itheapinfo[block+it].type = 0; + mdp->heapinfo[block+it].busy_block.busy_size = 0; + mdp->heapinfo[block+it].busy_block.ignore = 0; + mdp->heapinfo[block+it].busy_block.equal_to = NULL; } mdp->heapinfo[block].busy_block.size = blocks; mdp->heapinfo[block].busy_block.busy_size = requested_size; - mdp->heapinfo[block].busy_block.bt_size=xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); + //mdp->heapinfo[block].busy_block.bt_size=xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); + //mdp->heapinfo[block].busy_block.bt_size = xbt_libunwind_backtrace(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); mdp -> heapstats.chunks_used++; mdp -> heapstats.bytes_used += blocks * BLOCKSIZE; @@ -311,12 +325,15 @@ void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size) for (it=0;itheapinfo[block+it].type = 0; + mdp->heapinfo[block+it].busy_block.busy_size = 0; + mdp->heapinfo[block+it].busy_block.ignore = 0; + mdp->heapinfo[block+it].busy_block.equal_to = NULL; } mdp->heapinfo[block].busy_block.size = blocks; - mdp->heapinfo[block].busy_block.busy_size = requested_size; - //mdp->heapinfo[block].busy_block.bt_size = 0; - mdp->heapinfo[block].busy_block.bt_size = xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); - + mdp->heapinfo[block].busy_block.busy_size = requested_size; + //mdp->heapinfo[block].busy_block.bt_size = xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); + //mdp->heapinfo[block].busy_block.bt_size = xbt_libunwind_backtrace(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE); + mdp -> heapstats.chunks_used++; mdp -> heapstats.bytes_used += blocks * BLOCKSIZE; mdp -> heapstats.bytes_free -= blocks * BLOCKSIZE;