-#include "obstack.h"
-
-static void bitset_print PARAMS ((FILE *, bitset, int));
-
-#if BITSET_CHECK
-#define BITSET__CHECK2(DST, SRC) \
-if ((DST)->OPS != (SRC)->OPS) abort ();
-
-#define BITSET__CHECK3(DST, SRC1, SRC2) \
-if ((DST)->OPS != (SRC1)->OPS || (DST)->OPS != (SRC2)->OPS) abort ();
-
-#define BITSET__CHECK4(DST, SRC1, SRC2) \
-if ((DST)->OPS != (SRC1)->OPS || (DST)->OPS != (SRC2)->OPS \
- || (DST)->OPS != (SRC3)->OPS) abort ();
-#else
-#define BITSET__CHECK2(DST, SRC)
-
-#define BITSET__CHECK3(DST, SRC1, SRC2)
-
-#define BITSET__CHECK4(DST, SRC1, SRC2, SRC3)
-#endif
-
-#if BITSET_STATS
-#define BITSET_STATS_FILE "bitset.dat"
-
-#define BITSET_LOG_COUNT_BINS 10
-#define BITSET_LOG_SIZE_BINS 16
-#define BITSET_DENSITY_BINS 20
-
-struct bitset_type_stats_struct
-{
- unsigned int xmallocs;
- unsigned int xfrees;
- unsigned int oballocs;
- unsigned int obfrees;
- unsigned int lists;
- unsigned int list_counts[BITSET_LOG_COUNT_BINS];
- unsigned int list_sizes[BITSET_LOG_SIZE_BINS];
- unsigned int list_density[BITSET_DENSITY_BINS];
-};
-
-struct bitset_stats_struct
-{
- unsigned int runs;
- struct bitset_type_stats_struct types[BITSET_TYPE_NUM];
-};
-
-struct bitset_stats_struct bitset_stats_data;
-struct bitset_stats_struct *bitset_stats;
-
-static void bitset_percent_histogram_print PARAMS ((FILE *, const char *,
- const char *,
- unsigned int,
- unsigned int *));
-static void bitset_log_histogram_print PARAMS ((FILE *, const char *,
- const char *,
- unsigned int, unsigned int *));
-static void bitset_stats_print_1 PARAMS ((FILE *, const char *,
- struct bitset_type_stats_struct *));
-static void bitset_stats_print PARAMS ((FILE *, int));
-static void bitset_stats_read PARAMS ((void));
-static void bitset_stats_write PARAMS ((void));
-
-#define BITSET_STATS_XMALLOCS_INC(TYPE) \
- if (bitset_stats) \
- bitset_stats->types[(TYPE)].xmallocs++
-
-#define BITSET_STATS_XFREES_INC(BSET) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].xfrees++
-
-#define BITSET_STATS_OBALLOCS_INC(TYPE) \
- if (bitset_stats) \
- bitset_stats->types[(TYPE)].oballocs++
-
-#define BITSET_STATS_OBFREES_INC(BSET) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].obfrees++
-
-#define BITSET_STATS_LISTS_INC(BSET) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].lists++
-
-#define BITSET_STATS_LIST_COUNTS_INC(BSET, I) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].list_counts[(I)]++
-
-#define BITSET_STATS_LIST_SIZES_INC(BSET, I) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].list_sizes[(I)]++
-
-#define BITSET_STATS_LIST_DENSITY_INC(BSET, I) \
- if (bitset_stats) \
- bitset_stats->types[(BSET)->ops->type].list_density[(I)]++
-
-#else
-#define BITSET_STATS_XMALLOCS_INC(TYPE)