From: David Edelsohn Date: Wed, 2 Aug 1995 16:48:02 +0000 (+0000) Subject: (build_hash_table): Allocate all entries at once. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1a67b3b682d0fd7ad79c039e441d7ba415419c23;p=binutils-gdb.git (build_hash_table): Allocate all entries at once. --- diff --git a/opcodes/sparc-dis.c b/opcodes/sparc-dis.c index 532fb94c228..1dc2e352c31 100644 --- a/opcodes/sparc-dis.c +++ b/opcodes/sparc-dis.c @@ -759,8 +759,9 @@ build_hash_table (table, hash_table, num_opcodes) struct opcode_hash **hash_table; int num_opcodes; { - int i; + register int i; int hash_count[HASH_SIZE]; + struct opcode_hash *hash_buf; /* Start at the end of the table and work backwards so that each chain is sorted. */ @@ -768,10 +769,11 @@ build_hash_table (table, hash_table, num_opcodes) memset (hash_table, 0, HASH_SIZE * sizeof (hash_table[0])); memset (hash_count, 0, HASH_SIZE * sizeof (hash_count[0])); + hash_buf = (struct opcode_hash *) xmalloc (sizeof (struct opcode_hash) * num_opcodes); for (i = num_opcodes - 1; i >= 0; --i) { - int hash = HASH_INSN (sparc_opcodes[i].match); - struct opcode_hash *h = (struct opcode_hash *) xmalloc (sizeof (struct opcode_hash)); + register int hash = HASH_INSN (sparc_opcodes[i].match); + register struct opcode_hash *h = &hash_buf[i]; h->next = hash_table[hash]; h->opcode = &sparc_opcodes[i]; hash_table[hash] = h;