Skip to content

Commit

Permalink
Remove mi_arena nested function.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ondřej Bílka committed May 30, 2014
1 parent 20c1389 commit 987c026
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 121 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
2014-05-30 Ondřej Bílka <neleai@seznam.cz>

* malloc/malloc.c (malloc_info): Inline mi_arena.

2014-05-29 Richard Henderson <rth@twiddle.net>

* sysdeps/unix/sysv/linux/aarch64/sysdep.h (INTERNAL_VSYSCALL_NCS):
Expand Down
238 changes: 117 additions & 121 deletions malloc/malloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -5004,147 +5004,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);
Expand Down

0 comments on commit 987c026

Please sign in to comment.