X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/708989f9970b6f37f3ca7c7b568bcbfeaa53867f..a76bc40240b725442f23738d4d5603cb10d4baf6:/src/xbt/mmalloc/mfree.c diff --git a/src/xbt/mmalloc/mfree.c b/src/xbt/mmalloc/mfree.c index 53e83ce65b..59cac74b08 100644 --- a/src/xbt/mmalloc/mfree.c +++ b/src/xbt/mmalloc/mfree.c @@ -33,13 +33,6 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) type = mdp->heapinfo[block].busy.type; switch (type) { case 0: - /* Get as many statistics as early as we can. */ - mdp->heapstats.chunks_used--; - mdp->heapstats.bytes_used -= - mdp->heapinfo[block].busy.info.block.size * BLOCKSIZE; - mdp->heapstats.bytes_free += - mdp->heapinfo[block].busy.info.block.size * BLOCKSIZE; - /* Find the free cluster previous to this one in the free list. Start searching at the last block referenced; this may benefit programs with locality of allocation. */ @@ -68,7 +61,6 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) mdp->heapinfo[block].free.prev = i; mdp->heapinfo[i].free.next = block; mdp->heapinfo[mdp->heapinfo[block].free.next].free.prev = block; - mdp->heapstats.chunks_free++; } /* Now that the block is linked in, see if we can coalesce it @@ -81,7 +73,6 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) mdp->heapinfo[block].free.next = mdp->heapinfo[mdp->heapinfo[block].free.next].free.next; mdp->heapinfo[mdp->heapinfo[block].free.next].free.prev = block; - mdp->heapstats.chunks_free--; } /* Now see if we can return stuff to the system. */ @@ -106,12 +97,6 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) break; default: - /* Do some of the statistics. */ - mdp->heapstats.chunks_used--; - mdp->heapstats.bytes_used -= 1 << type; - mdp->heapstats.chunks_free++; - mdp->heapstats.bytes_free += 1 << type; - /* Get the address of the first free fragment in this block. */ prev = (struct list *) ((char *) ADDRESS(block) + @@ -133,12 +118,6 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) mdp->heapinfo[block].busy.info.block.size = 1; mdp->heapinfo[block].busy.info.block.busy_size = 0; - /* Keep the statistics accurate. */ - mdp->heapstats.chunks_used++; - mdp->heapstats.bytes_used += BLOCKSIZE; - mdp->heapstats.chunks_free -= BLOCKSIZE >> type; - mdp->heapstats.bytes_free -= BLOCKSIZE; - mfree((void *) mdp, (void *) ADDRESS(block)); } else if (mdp->heapinfo[block].busy.info.frag.nfree != 0) { /* If some fragments of this block are free, link this @@ -173,24 +152,8 @@ void __mmalloc_free(struct mdesc *mdp, void *ptr) /* Return memory to the heap. */ -void mfree(void *md, void *ptr) +void mfree(xbt_mheap_t mdp, void *ptr) { - struct mdesc *mdp; - register struct alignlist *l; - - if (ptr != NULL) { - mdp = MD_TO_MDP(md); - for (l = mdp->aligned_blocks; l != NULL; l = l->next) { - if (l->aligned == ptr) { - l->aligned = NULL; /* Mark the slot in the list as free. */ - ptr = l->exact; - break; - } - } - if (mdp->mfree_hook != NULL) { - mdp->mfree_hook(mdp, ptr); - } else { - __mmalloc_free(mdp, ptr); - } - } + if (ptr != NULL) + __mmalloc_free(mdp, ptr); }