diff options
Diffstat (limited to 'gcc/alloc-pool.c')
-rw-r--r-- | gcc/alloc-pool.c | 60 |
1 files changed, 2 insertions, 58 deletions
diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c index e9fdc86..601c2b7 100644 --- a/gcc/alloc-pool.c +++ b/gcc/alloc-pool.c @@ -26,70 +26,14 @@ along with GCC; see the file COPYING3. If not see #include "hash-map.h" ALLOC_POOL_ID_TYPE last_id; - -/* Hashtable mapping alloc_pool names to descriptors. */ -hash_map<const char *, alloc_pool_descriptor> *alloc_pool_hash; - -struct alloc_pool_descriptor * -allocate_pool_descriptor (const char *name) -{ - if (!alloc_pool_hash) - alloc_pool_hash = new hash_map<const char *, alloc_pool_descriptor> (10, - false, - false); - - return &alloc_pool_hash->get_or_insert (name); -} - -/* Output per-alloc_pool statistics. */ - -/* Used to accumulate statistics about alloc_pool sizes. */ -struct pool_output_info -{ - unsigned long total_created; - unsigned long total_allocated; -}; - -/* Called via hash_map.traverse. Output alloc_pool descriptor pointed out by - SLOT and update statistics. */ -bool -print_alloc_pool_statistics (const char *const &name, - const alloc_pool_descriptor &d, - struct pool_output_info *i) -{ - if (d.allocated) - { - fprintf (stderr, - "%-22s %6d %10lu %10lu(%10lu) %10lu(%10lu) %10lu(%10lu)\n", - name, d.elt_size, d.created, d.allocated, - d.allocated / d.elt_size, d.peak, d.peak / d.elt_size, - d.current, d.current / d.elt_size); - i->total_allocated += d.allocated; - i->total_created += d.created; - } - return 1; -} +mem_alloc_description<pool_usage> pool_allocator_usage; /* Output per-alloc_pool memory usage statistics. */ void dump_alloc_pool_statistics (void) { - struct pool_output_info info; - if (! GATHER_STATISTICS) return; - if (!alloc_pool_hash) - return; - - fprintf (stderr, "\nAlloc-pool Kind Elt size Pools Allocated (elts) Peak (elts) Leak (elts)\n"); - fprintf (stderr, "--------------------------------------------------------------------------------------------------------------\n"); - info.total_created = 0; - info.total_allocated = 0; - alloc_pool_hash->traverse <struct pool_output_info *, - print_alloc_pool_statistics> (&info); - fprintf (stderr, "--------------------------------------------------------------------------------------------------------------\n"); - fprintf (stderr, "%-22s %7lu %10lu\n", - "Total", info.total_created, info.total_allocated); - fprintf (stderr, "--------------------------------------------------------------------------------------------------------------\n"); + pool_allocator_usage.dump (ALLOC_POOL); } |