Commit 0194e877 by Zack Weinberg Committed by Zack Weinberg

hashtab.c (htab_find_with_hash): Avoid calculating hash2 unless it will be used.

	* hashtab.c (htab_find_with_hash): Avoid calculating hash2
	unless it will be used.  Rearrange loop for better
	optimization.
	(higher_prime_number): Add static prototype.

From-SVN: r32809
parent c6b5cb46
2000-03-29 Zack Weinberg <zack@wolery.cumb.org>
* hashtab.c (htab_find_with_hash): Avoid calculating hash2
unless it will be used. Rearrange loop for better
optimization.
(higher_prime_number): Add static prototype.
Thu Mar 16 01:33:58 2000 Jeffrey A Law (law@cygnus.com)
* Makefile.in (partition.o): Depend on config.h
......
......@@ -55,8 +55,10 @@ Boston, MA 02111-1307, USA. */
#define DELETED_ENTRY ((void *) 1)
static unsigned long higher_prime_number PARAMS ((unsigned long));
/* The following function returns the nearest prime number which is
greater than given source number. */
greater than a given source number. */
static unsigned long
higher_prime_number (n)
......@@ -223,24 +225,30 @@ htab_find_with_hash (htab, element, hash)
{
unsigned int index, hash2;
size_t size;
void *entry;
htab->searches++;
size = htab->size;
hash2 = 1 + hash % (size - 2);
index = hash % size;
entry = htab->entries[index];
if (entry == EMPTY_ENTRY
|| (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element)))
return entry;
hash2 = 1 + hash % (size - 2);
for (;;)
{
void *entry = htab->entries[index];
if (entry == EMPTY_ENTRY)
return NULL;
else if (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element))
return entry;
htab->collisions++;
index += hash2;
if (index >= size)
index -= size;
entry = htab->entries[index];
if (entry == EMPTY_ENTRY
|| (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element)))
return entry;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment