diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2012-07-24 09:49:56 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2012-07-24 09:49:56 +0000 |
commit | 7aa6d18a7c51ff7b19149d1e03db839b6b1033dc (patch) | |
tree | 7524c306e4effe5958489e003d2bb147a0439144 /gcc/alloc-pool.c | |
parent | 38ad2d079800cafd77f35c32a335697f643fa1a3 (diff) | |
download | gcc-7aa6d18a7c51ff7b19149d1e03db839b6b1033dc.tar.gz |
sbitmap.h (SBITMAP_ELT_BITS): Use "1u" trick as for BITMAP_WORD_BITS.
gcc/
* sbitmap.h (SBITMAP_ELT_BITS): Use "1u" trick as for BITMAP_WORD_BITS.
Move test to check that there is a popcount function for the the number
of bits in SBITMAP_ELT_BITS to sbitmap.c.
* sbitmap.c: Test SBITMAP_ELT_BITS, not HOST_BITS_PER_WIDEST_FAST_INT.
MEM_STAT_INFO): Define in terms of their ALONE counterparts.
* configure.ac (GATHER_STATISTICS): Always define, non-zero if enabled.
* configure: Regenerate.
* statistics.h (GATHER_STATISTICS): Error out if it is not defined.
(GCC_MEM_STAT_ARGUMENTS): New define.
(ALONE_MEM_STAT_DECL): Define in terms of GCC_MEM_STAT_ARGUMENTS.
(ALONE_FINAL_MEM_STAT_DECL, ALONE_FINAL_PASS_MEM_STAT): New defines.
(MEM_STAT_DECL, FINAL_MEM_STAT_DECL, PASS_MEM_STAT, FINAL_PASS_MEM_STAT,
* ggc-internal.h (ggc_record_overhead): Use FINAL_MEM_STAT_DECL.
* ggc.h (ggc_record_overhead, ggc_free_overhead,
ggc_prune_overhead_list): Remove internal prototypes, they are defined
already in ggc-internal.h.
* ggc-common.c (struct loc_descriptor): Remove #ifdef GATHER_STATISTICS
wrappers.
(add_statistics): Likewise.
(dump_ggc_loc_statistics): Likewise. Return if GATHER_STATISTICS is 0.
* ggc-zone.c (struct page_entry): Remove #ifdef GATHER_STATISTICS
wrappers around "survived" and "stats" members.
(alloc_large_page): Always initialize survived.
(ggc_internal_alloc_zone_stat): Likewise.
Remove #ifdef GATHER_STATISTICS wrappers. Record overhead if
GATHER_STATISTICS is non-0.
(ggc_free): Convert #ifdef GATHER_STATISTICS to if-code.
(sweep_pages): Always increase survived.
(ggc_collect_1): Convert #ifdef GATHER_STATISTICS to if-code.
(calculate_average_page_survival): Always define.
(ggc_collect): Convert #ifdef GATHER_STATISTICS to if-code.
(ggc_print_statistics): Likewise.
(ggc_pch_read): Likewise.
* ggc-page.c (struct globals): Always define "stats" member.
(ggc_internal_alloc_stat): Convert #ifdef GATHER_STATISTICS to if-code.
(ggc_free): Likewise.
(ggc_collec): Likewise.
(ggc_print_statistics): Likewise.
* bitmap.h (struct bitmap_head_def): Always define "desc" member.
(bitmap_initialize_stat): Convert #ifdef GATHER_STATISTICS to if-code.
* gimple.h (enum gimple_alloc_kind): Always define.
(gimple_alloc_kind): Likewise.
* tree-flow.h (phinodes_print_statistics): Always define.
(ssanames_print_statistics): Likewise.
* vec.h (vec_heap_free): Always define.
(VEC_stack_alloc): Define if GATHER_STATISTICS is non-0.
* alloc-pool.c (alloc_pool_descriptor): Always define.
(create_alloc_pool): Convert #ifdef GATHER_STATISTICS to if-code.
(empty_alloc_pool): Likewise.
(pool_alloc): Likewise.
(pool_free): Likewise.
(dump_alloc_pool_statistics): Likewise.
(print_statistics): Always define.
* bitmap.c (struct bitmap_descriptor): Always define.
(bitmap_register): Pass ALONE_FINAL_PASS_MEM_STAT.
(register_overhead): Always define.
(bitmap_element_free): Convert #ifdef GATHER_STATISTICS to if-code.
(bitmap_element_allocate): Likewise.
(bitmap_elt_clear_from): Likewise.
(bitmap_obstack_alloc_stat): Likewise.
(bitmap_gc_alloc_stat): Likewise.
(bitmap_obstack_free): Likewise.
(bitmap_find_bit): Likewise.
(bitmap_ior_and_into): Likewise.
(bitmap_print): Likewise.
(dump_bitmap_statistics): Likewise. Return if GATHER_STATISTICS is 0.
* gimple.c (gimple_alloc_counts, gimple_alloc_sizes): Always define.
(gimple_alloc_kind_names): Likewise.
(gimple_alloc_stat): Convert #ifdef GATHER_STATISTICS to if-code.
(dump_gimple_statistics): Likewise. Return if GATHER_STATISTICS is 0.
* rtl.c (rtx_alloc_counts, rtx_alloc_sizes, rtvec_alloc_counts,
rtvec_alloc_sizes): Always define.
(rvec_alloc): Convert #ifdef GATHER_STATISTICS to if-code.
(rtx_alloc_stat): Likewise.
(dump_rtx_statistics): Likewise. Return if GATHER_STATISTICS is 0.
* tree.c (_obstack_allocated_p, tree_code_counts, tree_node_counts,
tree_node_sizes, tree_node_kind_names): Always define.
(record_node_allocation_statistics): Convert #ifdef GATHER_STATISTICS
to if-code.
(type_hash_canon): Likewise.
(dump_tree_statistics): Likewise.
* tree-ssanames.c (ssa_name_nodes_reused, ssa_name_nodes_created):
Always define.
(ssanames_print_statistics): Likewise.
(make_ssa_name_fn): Convert #ifdef GATHER_STATISTICS to if-code.
* tree-phinodes.c (phi_nodes_reused, phi_nodes_created): Always define.
(phinodes_print_statistics): Likewise.
(allocate_phi_node): Convert #ifdef GATHER_STATISTICS to if-code.
* vec.c (struct vec_descriptor): Always define.
(hash_descriptor, eq_descriptor, ptr_hash_entry, hash_ptr, eq_ptr,
vec_descriptor, rester_overhead, free_overhead): Likewise.
(cmp_statistic): Likewise.
(vec_heap_free): Convert #ifdef GATHER_STATISTICS to if-code.
(vec_heap_o_reserve_1): Likewise.
(dump_vec_loc_statistics): Likewise.
cp/
* cp/class.c (n_vtables, n_vtable_entries, n_vtable_searches,
n_vtable_elems, n_convert_harshness, n_compute_conversion_costs,
n_inner_fields_searched): Always define.
(build_primary_vtable): Convert #ifdef GATHER_STATISTICS to if-code.
(print_class_statistics): Convert #ifdef GATHER_STATISTICS to if-code.
* cp/tree.c (depth_reached): Always define global.
(cxx_print_statistics): Convert #ifdef GATHER_STATISTICS to if-code.
* cp/pt.c (depth_reached): Always define.
(push_tinst_level): Convert #ifdef GATHER_STATISTICS to if-code.
* cp/search.c (n_fields_searched, n_calls_lookup_field,
n_calls_lookup_field_1, n_calls_lookup_fnfields,
n_calls_lookup_fnfields_1, n_calls_get_base_type,
n_outer_fields_searched, n_contexts_saved): Always define.
(lookup_field_1): Convert #ifdef GATHER_STATISTICS to if-code.
(lookup_member): Likewise.
(lookup_fnfields_idx_nolazy): Likewise.
(print_search_statistics): Likewise.
(reinit_search_statistics): Unconditionally re-set counters.
* cp/lex.c (retrofit_lang_decl): Convert #ifdef GATHER_STATISTICS
to if-code.
(cxx_dup_lang_specific_decl): Likewise.
(copy_lang_type): Likewise.
(cxx_make_type): Likewise.
From-SVN: r189803
Diffstat (limited to 'gcc/alloc-pool.c')
-rw-r--r-- | gcc/alloc-pool.c | 77 |
1 files changed, 36 insertions, 41 deletions
diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c index 4dbd0fd570d..5a1ada70802 100644 --- a/gcc/alloc-pool.c +++ b/gcc/alloc-pool.c @@ -62,8 +62,6 @@ typedef struct allocation_object_def static ALLOC_POOL_ID_TYPE last_id; #endif -#ifdef GATHER_STATISTICS - /* Store information about each particular alloc_pool. Note that this will underestimate the amount the amount of storage used by a small amount: 1) The overhead in a pool is not accounted for. @@ -123,7 +121,6 @@ alloc_pool_descriptor (const char *name) (*slot)->name = name; return *slot; } -#endif /* Create a pool of things of size SIZE, with NUM in each block we allocate. */ @@ -133,9 +130,6 @@ create_alloc_pool (const char *name, size_t size, size_t num) { alloc_pool pool; size_t header_size; -#ifdef GATHER_STATISTICS - struct alloc_pool_descriptor *desc; -#endif gcc_checking_assert (name); @@ -146,10 +140,11 @@ create_alloc_pool (const char *name, size_t size, size_t num) /* Now align the size to a multiple of 4. */ size = align_eight (size); -#ifdef ENABLE_CHECKING - /* Add the aligned size of ID. */ - size += offsetof (allocation_object, u.data); -#endif + if (ENABLE_CHECKING) + { + /* Add the aligned size of ID. */ + size += offsetof (allocation_object, u.data); + } /* Um, we can't really allocate 0 elements per block. */ gcc_checking_assert (num); @@ -159,14 +154,16 @@ create_alloc_pool (const char *name, size_t size, size_t num) /* Now init the various pieces of our pool structure. */ pool->name = /*xstrdup (name)*/name; -#ifdef GATHER_STATISTICS - desc = alloc_pool_descriptor (name); - desc->elt_size = size; - desc->created++; -#endif pool->elt_size = size; pool->elts_per_block = num; + if (GATHER_STATISTICS) + { + struct alloc_pool_descriptor *desc = alloc_pool_descriptor (name); + desc->elt_size = size; + desc->created++; + } + /* List header size should be a multiple of 8. */ header_size = align_eight (sizeof (struct alloc_pool_list_def)); @@ -197,9 +194,6 @@ void empty_alloc_pool (alloc_pool pool) { alloc_pool_list block, next_block; -#ifdef GATHER_STATISTICS - struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); -#endif gcc_checking_assert (pool); @@ -210,9 +204,12 @@ empty_alloc_pool (alloc_pool pool) free (block); } -#ifdef GATHER_STATISTICS - desc->current -= (pool->elts_allocated - pool->elts_free) * pool->elt_size; -#endif + if (GATHER_STATISTICS) + { + struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); + desc->current -= (pool->elts_allocated - pool->elts_free) * pool->elt_size; + } + pool->returned_free_list = NULL; pool->virgin_free_list = NULL; pool->virgin_elts_remaining = 0; @@ -251,14 +248,16 @@ void * pool_alloc (alloc_pool pool) { alloc_pool_list header; -#ifdef GATHER_STATISTICS - struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); - desc->allocated += pool->elt_size; - desc->current += pool->elt_size; - if (desc->peak < desc->current) - desc->peak = desc->current; -#endif + if (GATHER_STATISTICS) + { + struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); + + desc->allocated += pool->elt_size; + desc->current += pool->elt_size; + if (desc->peak < desc->current) + desc->peak = desc->current; + } gcc_checking_assert (pool); @@ -324,10 +323,6 @@ void pool_free (alloc_pool pool, void *ptr) { alloc_pool_list header; -#ifdef GATHER_STATISTICS - struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); -#endif - #ifdef ENABLE_CHECKING gcc_assert (ptr @@ -340,7 +335,6 @@ pool_free (alloc_pool pool, void *ptr) /* Mark the element to be free. */ ALLOCATION_OBJECT_PTR_FROM_USER_PTR (ptr)->id = 0; -#else #endif header = (alloc_pool_list) ptr; @@ -348,13 +342,14 @@ pool_free (alloc_pool pool, void *ptr) pool->returned_free_list = header; pool->elts_free++; -#ifdef GATHER_STATISTICS - desc->current -= pool->elt_size; -#endif - + if (GATHER_STATISTICS) + { + struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); + desc->current -= pool->elt_size; + } } + /* Output per-alloc_pool statistics. */ -#ifdef GATHER_STATISTICS /* Used to accumulate statistics about alloc_pool sizes. */ struct output_info @@ -382,15 +377,16 @@ print_statistics (void **slot, void *b) } return 1; } -#endif /* Output per-alloc_pool memory usage statistics. */ void dump_alloc_pool_statistics (void) { -#ifdef GATHER_STATISTICS struct output_info info; + if (! GATHER_STATISTICS) + return; + if (!alloc_pool_hash) return; @@ -403,5 +399,4 @@ dump_alloc_pool_statistics (void) fprintf (stderr, "%-22s %7lu %10lu\n", "Total", info.total_created, info.total_allocated); fprintf (stderr, "--------------------------------------------------------------------------------------------------------------\n"); -#endif } |