lib: Avoid the hash-lookup division if possible
authorJosh Stone <jistone@redhat.com>
Fri, 13 Dec 2013 00:34:15 +0000 (16:34 -0800)
committerJosh Stone <jistone@redhat.com>
Fri, 13 Dec 2013 17:48:07 +0000 (09:48 -0800)
commitb47e28a743afef4cd02fbe753c1526ed89c472c9
tree441b14baf49c5298abace8a784159d806c3a4b69
parent4e2787c2674bdb152e275edb3ed4d9939c8f62d7
lib: Avoid the hash-lookup division if possible

For Dwarf_Abbrev codes, the most common case is that they're packed at
the low end, saving uleb128 encoding size.  Since the hash table is
always resized to be no more than 90% full, those codes are always less
than the table size, and dividing for the remainder is unnecessary.

Dwarf_Dies are frequently created anew, and need to find abbrev each
time, so even that one division becomes a noticeable hotspot.  This
patch adds a branch to avoid it, which is very predictable for the CPU.

Signed-off-by: Josh Stone <jistone@redhat.com>
lib/ChangeLog
lib/dynamicsizehash.c