diff options
author | Alan Modra <amodra@gmail.com> | 2011-04-20 12:52:16 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-04-20 12:52:16 +0000 |
commit | 8ad17b3a2ce2deb3b6fe599924747a93da5a6a65 (patch) | |
tree | 03f4fbe6b24b1676abbec5eefb15ec8ff4c7ab7d /gas/hash.c | |
parent | 7bca32d788b5b06024cf34f01ae6bef16751e5ca (diff) | |
download | gdb-8ad17b3a2ce2deb3b6fe599924747a93da5a6a65.zip gdb-8ad17b3a2ce2deb3b6fe599924747a93da5a6a65.tar.gz gdb-8ad17b3a2ce2deb3b6fe599924747a93da5a6a65.tar.bz2 |
bfd/
* hash.c (bfd_default_hash_table_size): Make it an unsigned long.
(bfd_hash_table_init_n): Overflow checking.
(bfd_hash_set_default_size): Return current size. Take unsigned long
arg. Add 65537 to hash_size primes.
* bfd-in.h (bfd_hash_set_default_size): Update prototype.
* bfd-in2.h: Regenerate.
gas/
* hash.c (set_gas_hash_table_size): Use bfd_hash_set_default_size.
(hash_new_sized): New function, split out from..
(hash_new): ..here.
ld/
* ld.h (ld_config_type <hash_table_size>): Make it an unsigned long.
Diffstat (limited to 'gas/hash.c')
-rw-r--r-- | gas/hash.c | 38 |
1 files changed, 10 insertions, 28 deletions
@@ -1,6 +1,6 @@ /* hash.c -- gas hash table code Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, - 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -78,41 +78,17 @@ static unsigned long gas_hash_table_size = 65537; void set_gas_hash_table_size (unsigned long size) { - gas_hash_table_size = size; -} - -/* FIXME: This function should be amalgmated with bfd/hash.c:bfd_hash_set_default_size(). */ -static unsigned long -get_gas_hash_table_size (void) -{ - /* Extend this prime list if you want more granularity of hash table size. */ - static const unsigned long hash_size_primes[] = - { - 1021, 4051, 8599, 16699, 65537 - }; - unsigned int hindex; - - /* Work out the best prime number near the hash_size. - FIXME: This could be a more sophisticated algorithm, - but is it really worth implementing it ? */ - for (hindex = 0; hindex < ARRAY_SIZE (hash_size_primes) - 1; ++ hindex) - if (gas_hash_table_size <= hash_size_primes[hindex]) - break; - - return hash_size_primes[hindex]; + gas_hash_table_size = bfd_hash_set_default_size (size); } /* Create a hash table. This return a control block. */ -struct hash_control * -hash_new (void) +static struct hash_control * +hash_new_sized (unsigned long size) { - unsigned long size; unsigned long alloc; struct hash_control *ret; - size = get_gas_hash_table_size (); - ret = (struct hash_control *) xmalloc (sizeof *ret); obstack_begin (&ret->memory, chunksize); alloc = size * sizeof (struct hash_entry *); @@ -132,6 +108,12 @@ hash_new (void) return ret; } +struct hash_control * +hash_new (void) +{ + return hash_new_sized (gas_hash_table_size); +} + /* Delete a hash table, freeing all allocated memory. */ void |