aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-12-10 11:53:44 -0500
committerUlrich Drepper <drepper@gmail.com>2011-12-10 11:53:44 -0500
commitf039c043071f2f55943d052fa7d4ad5f1a67db09 (patch)
tree2c64a4951dd64770b17439dee64a79697eb09bd3
parent850fb039cec802072f70ed9763927881bbbf639c (diff)
downloadglibc-f039c043071f2f55943d052fa7d4ad5f1a67db09.zip
glibc-f039c043071f2f55943d052fa7d4ad5f1a67db09.tar.gz
glibc-f039c043071f2f55943d052fa7d4ad5f1a67db09.tar.bz2
Optimize generic ELF hash function a bit more
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/generic/dl-hash.h5
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 73e9911..93adebd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-10 Ulrich Drepper <drepper@gmail.com>
+
+ * sysdeps/generic/dl-hash.h (_dl_elf_hash): Lift one operation out of
+ the inner loop.
+
2011-12-06 Andreas Schwab <schwab@linux-m68k.org>
[BZ #13472]
diff --git a/sysdeps/generic/dl-hash.h b/sysdeps/generic/dl-hash.h
index 28312ca..e0db00e 100644
--- a/sysdeps/generic/dl-hash.h
+++ b/sysdeps/generic/dl-hash.h
@@ -60,9 +60,12 @@ _dl_elf_hash (const char *name_arg)
But the following is equivalent and a lot
faster, especially on modern processors. */
- hash ^= hi;
hash ^= hi >> 24;
}
+
+ /* Second part of the modified formula. This
+ operation can be lifted outside the loop. */
+ hash &= 0x0fffffff;
}
}
}