diff options
author | Martin Liska <mliska@suse.cz> | 2020-08-15 19:46:33 +0200 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-08-20 10:51:57 +0930 |
commit | abebb03c3af215d7542f5e6b71d78823b15220d5 (patch) | |
tree | e14c7c04f583709ad523399880ba504c3259d7cc /gas/hash.c | |
parent | c51ed085abec8c60bab2fbee16493666f6d84caa (diff) | |
download | gdb-abebb03c3af215d7542f5e6b71d78823b15220d5.zip gdb-abebb03c3af215d7542f5e6b71d78823b15220d5.tar.gz gdb-abebb03c3af215d7542f5e6b71d78823b15220d5.tar.bz2 |
gas/hash.c: add new functions
The first of a patch series deleting the gas/hash.c hash table
implementation and instead using libiberty/hashtab.c hash tables in
gas.
* as.h: Include hashtab.h.
* hash.c (htab_insert): New.
(htab_print_statistics): Likewise.
* hash.h (htab_insert): Likewise.
(htab_print_statistics): Likewise.
Diffstat (limited to 'gas/hash.c')
-rw-r--r-- | gas/hash.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -407,6 +407,30 @@ hash_print_statistics (FILE *f ATTRIBUTE_UNUSED, fprintf (f, "\t%lu empty slots\n", empty); #endif } + +/* Insert ELEMENT into HTAB. If the element exists, it is overwritten. */ + +void +htab_insert (htab_t htab, PTR element) +{ + void **slot = htab_find_slot (htab, element, INSERT); + if (slot != NULL && htab->del_f) + (*htab->del_f) (*slot); + + *slot = element; +} + +/* Print statistics about a hash table. */ + +void +htab_print_statistics (FILE *f, const char *name, htab_t table) +{ + fprintf (f, "%s hash statistics:\n", name); + fprintf (f, "\t%u searches\n", table->searches); + fprintf (f, "\t%u collisions\n", table->collisions); + fprintf (f, "\t%lu elements\n", (unsigned long) htab_elements (table)); + fprintf (f, "\t%lu table size\n", (unsigned long) htab_size (table)); +} #ifdef TEST |