You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
276 lines
8.4 KiB
276 lines
8.4 KiB
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 |
|
--- a/malloc/malloc.c |
|
+++ b/malloc/malloc.c |
|
@@ -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);
|
|
|