X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/02650b7f0e3ef470a949768bdb907183da4b3beb..7601a471f5b0dee063748c5d4383bc03c6313164:/lib/bitset_stats.c diff --git a/lib/bitset_stats.c b/lib/bitset_stats.c index 7b7fb341..83163026 100644 --- a/lib/bitset_stats.c +++ b/lib/bitset_stats.c @@ -1,10 +1,12 @@ /* Bitset statistics. - Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + + Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. + Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -13,8 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* This file is a wrapper bitset implementation for the other bitset implementations. It provides bitset compatibility checking and @@ -23,16 +24,15 @@ operations get vectored through here and we then call the appropriate routines. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include + +#include "bitset_stats.h" #include "bbitset.h" #include "abitset.h" #include "ebitset.h" #include "lbitset.h" #include "vbitset.h" -#include "bitset_stats.h" #include #include #include @@ -48,29 +48,29 @@ /* Accessor macros. */ -#define BITSET_STATS_ALLOCS_INC(TYPE) \ +#define BITSET_STATS_ALLOCS_INC(TYPE) \ bitset_stats_info->types[(TYPE)].allocs++ -#define BITSET_STATS_FREES_INC(BSET) \ +#define BITSET_STATS_FREES_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].frees++ -#define BITSET_STATS_SETS_INC(BSET) \ +#define BITSET_STATS_SETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].sets++ -#define BITSET_STATS_CACHE_SETS_INC(BSET) \ +#define BITSET_STATS_CACHE_SETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_sets++ -#define BITSET_STATS_RESETS_INC(BSET) \ +#define BITSET_STATS_RESETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].resets++ -#define BITSET_STATS_CACHE_RESETS_INC(BSET) \ +#define BITSET_STATS_CACHE_RESETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_resets++ -#define BITSET_STATS_TESTS_INC(BSET) \ +#define BITSET_STATS_TESTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].tests++ -#define BITSET_STATS_CACHE_TESTS_INC(BSET) \ +#define BITSET_STATS_CACHE_TESTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_tests++ -#define BITSET_STATS_LISTS_INC(BSET) \ +#define BITSET_STATS_LISTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].lists++ -#define BITSET_STATS_LIST_COUNTS_INC(BSET, I) \ +#define BITSET_STATS_LIST_COUNTS_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_counts[(I)]++ -#define BITSET_STATS_LIST_SIZES_INC(BSET, I) \ +#define BITSET_STATS_LIST_SIZES_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_sizes[(I)]++ -#define BITSET_STATS_LIST_DENSITY_INC(BSET, I) \ +#define BITSET_STATS_LIST_DENSITY_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_density[(I)]++ @@ -105,7 +105,7 @@ bool bitset_stats_enabled = false; /* Print a percentage histogram with message MSG to FILE. */ static void bitset_percent_histogram_print (FILE *file, const char *name, const char *msg, - unsigned int n_bins, unsigned int *bins) + unsigned int n_bins, unsigned int *bins) { unsigned int i; unsigned int total; @@ -120,16 +120,16 @@ bitset_percent_histogram_print (FILE *file, const char *name, const char *msg, fprintf (file, "%s %s", name, msg); for (i = 0; i < n_bins; i++) fprintf (file, "%.0f-%.0f%%\t%8u (%5.1f%%)\n", - i * 100.0 / n_bins, - (i + 1) * 100.0 / n_bins, bins[i], - (100.0 * bins[i]) / total); + i * 100.0 / n_bins, + (i + 1) * 100.0 / n_bins, bins[i], + (100.0 * bins[i]) / total); } /* Print a log histogram with message MSG to FILE. */ static void bitset_log_histogram_print (FILE *file, const char *name, const char *msg, - unsigned int n_bins, unsigned int *bins) + unsigned int n_bins, unsigned int *bins) { unsigned int i; unsigned int total; @@ -153,50 +153,50 @@ bitset_log_histogram_print (FILE *file, const char *name, const char *msg, fprintf (file, "%s %s", name, msg); for (i = 0; i < 2; i++) fprintf (file, "%*d\t%8u (%5.1f%%)\n", - max_width, i, bins[i], 100.0 * bins[i] / total); + max_width, i, bins[i], 100.0 * bins[i] / total); for (; i < n_bins; i++) fprintf (file, "%*lu-%lu\t%8u (%5.1f%%)\n", - max_width - ((unsigned int) (0.30103 * (i) + 0.9999) + 1), - 1UL << (i - 1), - (1UL << i) - 1, - bins[i], - (100.0 * bins[i]) / total); + max_width - ((unsigned int) (0.30103 * (i) + 0.9999) + 1), + 1UL << (i - 1), + (1UL << i) - 1, + bins[i], + (100.0 * bins[i]) / total); } /* Print bitset statistics to FILE. */ static void bitset_stats_print_1 (FILE *file, const char *name, - struct bitset_type_info_struct *stats) + struct bitset_type_info_struct *stats) { if (!stats) return; fprintf (file, "%s:\n", name); fprintf (file, _("%u bitset_allocs, %u freed (%.2f%%).\n"), - stats->allocs, stats->frees, - stats->allocs ? 100.0 * stats->frees / stats->allocs : 0); + stats->allocs, stats->frees, + stats->allocs ? 100.0 * stats->frees / stats->allocs : 0); fprintf (file, _("%u bitset_sets, %u cached (%.2f%%)\n"), - stats->sets, stats->cache_sets, - stats->sets ? 100.0 * stats->cache_sets / stats->sets : 0); + stats->sets, stats->cache_sets, + stats->sets ? 100.0 * stats->cache_sets / stats->sets : 0); fprintf (file, _("%u bitset_resets, %u cached (%.2f%%)\n"), - stats->resets, stats->cache_resets, - stats->resets ? 100.0 * stats->cache_resets / stats->resets : 0); + stats->resets, stats->cache_resets, + stats->resets ? 100.0 * stats->cache_resets / stats->resets : 0); fprintf (file, _("%u bitset_tests, %u cached (%.2f%%)\n"), - stats->tests, stats->cache_tests, - stats->tests ? 100.0 * stats->cache_tests / stats->tests : 0); + stats->tests, stats->cache_tests, + stats->tests ? 100.0 * stats->cache_tests / stats->tests : 0); fprintf (file, _("%u bitset_lists\n"), stats->lists); bitset_log_histogram_print (file, name, _("count log histogram\n"), - BITSET_LOG_COUNT_BINS, stats->list_counts); + BITSET_LOG_COUNT_BINS, stats->list_counts); bitset_log_histogram_print (file, name, _("size log histogram\n"), - BITSET_LOG_SIZE_BINS, stats->list_sizes); + BITSET_LOG_SIZE_BINS, stats->list_sizes); bitset_percent_histogram_print (file, name, _("density histogram\n"), - BITSET_DENSITY_BINS, stats->list_density); + BITSET_DENSITY_BINS, stats->list_density); } @@ -216,7 +216,7 @@ bitset_stats_print (FILE *file, bool verbose ATTRIBUTE_UNUSED) for (i = 0; i < BITSET_TYPE_NUM; i++) bitset_stats_print_1 (file, bitset_type_names[i], - &bitset_stats_info->types[i]); + &bitset_stats_info->types[i]); } @@ -253,15 +253,15 @@ bitset_stats_read (const char *file_name) if (file) { if (fread (&bitset_stats_info_data, sizeof (bitset_stats_info_data), - 1, file) != 1) - { - if (ferror (file)) - perror (_("Could not read stats file.")); - else - fprintf (stderr, _("Bad stats file size.\n")); - } + 1, file) != 1) + { + if (ferror (file)) + perror (_("cannot read stats file")); + else + fprintf (stderr, _("bad stats file size\n")); + } if (fclose (file) != 0) - perror (_("Could not read stats file.")); + perror (_("cannot read stats file")); } bitset_stats_info_data.runs++; } @@ -283,13 +283,13 @@ bitset_stats_write (const char *file_name) if (file) { if (fwrite (&bitset_stats_info_data, sizeof (bitset_stats_info_data), - 1, file) != 1) - perror (_("Could not write stats file.")); + 1, file) != 1) + perror (_("cannot write stats file")); if (fclose (file) != 0) - perror (_("Could not write stats file.")); + perror (_("cannot write stats file")); } else - perror (_("Could not open stats file for writing.")); + perror (_("cannot open stats file for writing")); } @@ -340,7 +340,7 @@ bitset_stats_reset (bitset dst, bitset_bindex bitno) if (offset < bset->b.csize) { bset->b.cdata[offset] &= - ~((bitset_word) 1 << (bitno % BITSET_WORD_BITS)); + ~((bitset_word) 1 << (bitno % BITSET_WORD_BITS)); BITSET_STATS_CACHE_RESETS_INC (bset); } else @@ -570,17 +570,15 @@ bitset_stats_or_and_cmp (bitset dst, bitset src1, bitset src2, bitset src3) static bitset_bindex bitset_stats_list (bitset bset, bitset_bindex *list, - bitset_bindex num, bitset_bindex *next) + bitset_bindex num, bitset_bindex *next) { bitset_bindex count; bitset_bindex tmp; bitset_bindex size; bitset_bindex i; - enum bitset_type type; count = BITSET_LIST_ (bset->s.bset, list, num, next); - type = BITSET_TYPE_ (bset->s.bset); BITSET_STATS_LISTS_INC (bset->s.bset); /* Log histogram of number of set bits. */ @@ -609,7 +607,7 @@ bitset_stats_list (bitset bset, bitset_bindex *list, static bitset_bindex bitset_stats_list_reverse (bitset bset, bitset_bindex *list, - bitset_bindex num, bitset_bindex *next) + bitset_bindex num, bitset_bindex *next) { return BITSET_LIST_REVERSE_ (bset->s.bset, list, num, next); }