This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wed, Feb 26, 2014 at 10:49:24PM +0100, OndÅej BÃlka wrote: > Hi, > > I noticed a minor simplification in malloc_info, that nested function > mi_arena looks useless as it gets called at only one site and I do not > have to rename its argument. The resulting patch is big due of > reindenting but is simple in principle. > > Is there any deep reason to keep it? I agree that it makes more sense to just inline it since there's just one call site and especially since breaking it out into a function will result in a lot of state being passed on to the function, which is a waste. If Carlos agrees, I think this patch is good to go in. If not, then we'll have to wait to hear why he thinks the function is necessary. Siddhesh > > * malloc/malloc.c (malloc_info): Inline mi_arena. > > diff --git a/malloc/malloc.c b/malloc/malloc.c > index 516120f..fe51725 100644 > --- a/malloc/malloc.c > +++ b/malloc/malloc.c > @@ -4894,147 +4894,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); > > - 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; > - } > + if (__malloc_initialized < 0) > + ptmalloc_init (); > > - 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; > + fputs ("<malloc version=\"1\">\n", fp); > > - sizes[i].total = sizes[i].count * sizes[i].to; > - } > + /* Iterate over all arenas currently in use. */ > + mstate ar_ptr = &main_arena; > + do > + { > + 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])) > > - mbinptr bin; > - struct malloc_chunk *r; > + mutex_lock (&ar_ptr->mutex); > > - 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 < 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; > > - 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; > + } > + > + 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; > + } > > - 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); > + mutex_unlock (&ar_ptr->mutex); > > - 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); > + total_nfastblocks += nfastblocks; > + total_fastavail += fastavail; > > - total_system += ar_ptr->system_mem; > - total_max_system += ar_ptr->max_system_mem; > + total_nblocks += nblocks; > + total_avail += avail; > > - 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); > + 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 (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; > - } > + 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); > > - fputs ("</heap>\n", fp); > - } > + total_system += ar_ptr->system_mem; > + total_max_system += ar_ptr->max_system_mem; > > - if (__malloc_initialized < 0) > - ptmalloc_init (); > + 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); > > - fputs ("<malloc version=\"1\">\n", fp); > + 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; > + } > > - /* Iterate over all arenas currently in use. */ > - mstate ar_ptr = &main_arena; > - do > - { > - mi_arena (ar_ptr); > + fputs ("</heap>\n", fp); > ar_ptr = ar_ptr->next; > } > while (ar_ptr != &main_arena);
Attachment:
pgpeOTXDUSZbV.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |