| commit 987c02692a88b8c9024cb99187434aad02c3c047 |
| Author: Ondřej Bílka <neleai@seznam.cz> |
| Date: Fri May 30 13:24:56 2014 +0200 |
| |
| Remove mi_arena nested function. |
| |
| diff --git a/malloc/malloc.c b/malloc/malloc.c |
| index 5c7a27129d66e06a..c99b26d4a85e1b22 100644 |
| |
| |
| @@ -5023,147 +5023,143 @@ malloc_info (int options, FILE *fp) |
| size_t total_aspace = 0; |
| size_t total_aspace_mprotect = 0; |
| |
| - void |
| - mi_arena (mstate ar_ptr) |
| - { |
| - fprintf (fp, "<heap nr=\"%d\">\n<sizes>\n", n++); |
| |
| - size_t nblocks = 0; |
| - size_t nfastblocks = 0; |
| - size_t avail = 0; |
| - size_t fastavail = 0; |
| - struct |
| - { |
| - size_t from; |
| - size_t to; |
| - size_t total; |
| - size_t count; |
| - } sizes[NFASTBINS + NBINS - 1]; |
| -#define nsizes (sizeof (sizes) / sizeof (sizes[0])) |
| |
| - mutex_lock (&ar_ptr->mutex); |
| + if (__malloc_initialized < 0) |
| + ptmalloc_init (); |
| + |
| + fputs ("<malloc version=\"1\">\n", fp); |
| + |
| + /* Iterate over all arenas currently in use. */ |
| + mstate ar_ptr = &main_arena; |
| + do |
| + { |
| + fprintf (fp, "<heap nr=\"%d\">\n<sizes>\n", n++); |
| |
| - for (size_t i = 0; i < NFASTBINS; ++i) |
| + size_t nblocks = 0; |
| + size_t nfastblocks = 0; |
| + size_t avail = 0; |
| + size_t fastavail = 0; |
| + struct |
| { |
| - mchunkptr p = fastbin (ar_ptr, i); |
| - if (p != NULL) |
| - { |
| - size_t nthissize = 0; |
| - size_t thissize = chunksize (p); |
| - |
| - while (p != NULL) |
| - { |
| - ++nthissize; |
| - p = p->fd; |
| - } |
| - |
| - fastavail += nthissize * thissize; |
| - nfastblocks += nthissize; |
| - sizes[i].from = thissize - (MALLOC_ALIGNMENT - 1); |
| - sizes[i].to = thissize; |
| - sizes[i].count = nthissize; |
| - } |
| - else |
| - sizes[i].from = sizes[i].to = sizes[i].count = 0; |
| - |
| - sizes[i].total = sizes[i].count * sizes[i].to; |
| - } |
| + size_t from; |
| + size_t to; |
| + size_t total; |
| + size_t count; |
| + } sizes[NFASTBINS + NBINS - 1]; |
| +#define nsizes (sizeof (sizes) / sizeof (sizes[0])) |
| |
| + mutex_lock (&ar_ptr->mutex); |
| |
| - mbinptr bin; |
| - struct malloc_chunk *r; |
| + for (size_t i = 0; i < NFASTBINS; ++i) |
| + { |
| + mchunkptr p = fastbin (ar_ptr, i); |
| + if (p != NULL) |
| + { |
| + size_t nthissize = 0; |
| + size_t thissize = chunksize (p); |
| + |
| + while (p != NULL) |
| + { |
| + ++nthissize; |
| + p = p->fd; |
| + } |
| + |
| + fastavail += nthissize * thissize; |
| + nfastblocks += nthissize; |
| + sizes[i].from = thissize - (MALLOC_ALIGNMENT - 1); |
| + sizes[i].to = thissize; |
| + sizes[i].count = nthissize; |
| + } |
| + else |
| + sizes[i].from = sizes[i].to = sizes[i].count = 0; |
| |
| - for (size_t i = 1; i < NBINS; ++i) |
| - { |
| - bin = bin_at (ar_ptr, i); |
| - r = bin->fd; |
| - sizes[NFASTBINS - 1 + i].from = ~((size_t) 0); |
| - sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total |
| - = sizes[NFASTBINS - 1 + i].count = 0; |
| - |
| - if (r != NULL) |
| - while (r != bin) |
| - { |
| - ++sizes[NFASTBINS - 1 + i].count; |
| - sizes[NFASTBINS - 1 + i].total += r->size; |
| - sizes[NFASTBINS - 1 + i].from |
| - = MIN (sizes[NFASTBINS - 1 + i].from, r->size); |
| - sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to, |
| - r->size); |
| - |
| - r = r->fd; |
| - } |
| - |
| - if (sizes[NFASTBINS - 1 + i].count == 0) |
| - sizes[NFASTBINS - 1 + i].from = 0; |
| - nblocks += sizes[NFASTBINS - 1 + i].count; |
| - avail += sizes[NFASTBINS - 1 + i].total; |
| - } |
| + sizes[i].total = sizes[i].count * sizes[i].to; |
| + } |
| |
| - mutex_unlock (&ar_ptr->mutex); |
| |
| - total_nfastblocks += nfastblocks; |
| - total_fastavail += fastavail; |
| + mbinptr bin; |
| + struct malloc_chunk *r; |
| |
| - total_nblocks += nblocks; |
| - total_avail += avail; |
| + for (size_t i = 1; i < NBINS; ++i) |
| + { |
| + bin = bin_at (ar_ptr, i); |
| + r = bin->fd; |
| + sizes[NFASTBINS - 1 + i].from = ~((size_t) 0); |
| + sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total |
| + = sizes[NFASTBINS - 1 + i].count = 0; |
| + |
| + if (r != NULL) |
| + while (r != bin) |
| + { |
| + ++sizes[NFASTBINS - 1 + i].count; |
| + sizes[NFASTBINS - 1 + i].total += r->size; |
| + sizes[NFASTBINS - 1 + i].from |
| + = MIN (sizes[NFASTBINS - 1 + i].from, r->size); |
| + sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to, |
| + r->size); |
| + |
| + r = r->fd; |
| + } |
| |
| - for (size_t i = 0; i < nsizes; ++i) |
| - if (sizes[i].count != 0 && i != NFASTBINS) |
| - fprintf (fp, " \ |
| -<size from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n", |
| - sizes[i].from, sizes[i].to, sizes[i].total, sizes[i].count); |
| + if (sizes[NFASTBINS - 1 + i].count == 0) |
| + sizes[NFASTBINS - 1 + i].from = 0; |
| + nblocks += sizes[NFASTBINS - 1 + i].count; |
| + avail += sizes[NFASTBINS - 1 + i].total; |
| + } |
| |
| - if (sizes[NFASTBINS].count != 0) |
| - fprintf (fp, "\ |
| -<unsorted from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n", |
| - sizes[NFASTBINS].from, sizes[NFASTBINS].to, |
| - sizes[NFASTBINS].total, sizes[NFASTBINS].count); |
| + mutex_unlock (&ar_ptr->mutex); |
| |
| - total_system += ar_ptr->system_mem; |
| - total_max_system += ar_ptr->max_system_mem; |
| + total_nfastblocks += nfastblocks; |
| + total_fastavail += fastavail; |
| |
| - fprintf (fp, |
| - "</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n" |
| - "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n" |
| - "<system type=\"current\" size=\"%zu\"/>\n" |
| - "<system type=\"max\" size=\"%zu\"/>\n", |
| - nfastblocks, fastavail, nblocks, avail, |
| - ar_ptr->system_mem, ar_ptr->max_system_mem); |
| + total_nblocks += nblocks; |
| + total_avail += avail; |
| |
| - if (ar_ptr != &main_arena) |
| - { |
| - heap_info *heap = heap_for_ptr (top (ar_ptr)); |
| - fprintf (fp, |
| - "<aspace type=\"total\" size=\"%zu\"/>\n" |
| - "<aspace type=\"mprotect\" size=\"%zu\"/>\n", |
| - heap->size, heap->mprotect_size); |
| - total_aspace += heap->size; |
| - total_aspace_mprotect += heap->mprotect_size; |
| - } |
| - else |
| - { |
| - fprintf (fp, |
| - "<aspace type=\"total\" size=\"%zu\"/>\n" |
| - "<aspace type=\"mprotect\" size=\"%zu\"/>\n", |
| - ar_ptr->system_mem, ar_ptr->system_mem); |
| - total_aspace += ar_ptr->system_mem; |
| - total_aspace_mprotect += ar_ptr->system_mem; |
| - } |
| + for (size_t i = 0; i < nsizes; ++i) |
| + if (sizes[i].count != 0 && i != NFASTBINS) |
| + fprintf (fp, " \ |
| + <size from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n", |
| + sizes[i].from, sizes[i].to, sizes[i].total, sizes[i].count); |
| |
| - fputs ("</heap>\n", fp); |
| - } |
| + if (sizes[NFASTBINS].count != 0) |
| + fprintf (fp, "\ |
| + <unsorted from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n", |
| + sizes[NFASTBINS].from, sizes[NFASTBINS].to, |
| + sizes[NFASTBINS].total, sizes[NFASTBINS].count); |
| |
| - if (__malloc_initialized < 0) |
| - ptmalloc_init (); |
| + total_system += ar_ptr->system_mem; |
| + total_max_system += ar_ptr->max_system_mem; |
| |
| - fputs ("<malloc version=\"1\">\n", fp); |
| + fprintf (fp, |
| + "</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n" |
| + "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n" |
| + "<system type=\"current\" size=\"%zu\"/>\n" |
| + "<system type=\"max\" size=\"%zu\"/>\n", |
| + nfastblocks, fastavail, nblocks, avail, |
| + ar_ptr->system_mem, ar_ptr->max_system_mem); |
| |
| - /* Iterate over all arenas currently in use. */ |
| - mstate ar_ptr = &main_arena; |
| - do |
| - { |
| - mi_arena (ar_ptr); |
| + if (ar_ptr != &main_arena) |
| + { |
| + heap_info *heap = heap_for_ptr (top (ar_ptr)); |
| + fprintf (fp, |
| + "<aspace type=\"total\" size=\"%zu\"/>\n" |
| + "<aspace type=\"mprotect\" size=\"%zu\"/>\n", |
| + heap->size, heap->mprotect_size); |
| + total_aspace += heap->size; |
| + total_aspace_mprotect += heap->mprotect_size; |
| + } |
| + else |
| + { |
| + fprintf (fp, |
| + "<aspace type=\"total\" size=\"%zu\"/>\n" |
| + "<aspace type=\"mprotect\" size=\"%zu\"/>\n", |
| + ar_ptr->system_mem, ar_ptr->system_mem); |
| + total_aspace += ar_ptr->system_mem; |
| + total_aspace_mprotect += ar_ptr->system_mem; |
| + } |
| + |
| + fputs ("</heap>\n", fp); |
| ar_ptr = ar_ptr->next; |
| } |
| while (ar_ptr != &main_arena); |