Tweak dedupe hash function.
Change-Id: I6c3450e53a3654969aa7627cea1474835bfc52d7
diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h
index c5c53e3..92c9d9f 100644
--- a/compiler/driver/compiler_driver.h
+++ b/compiler/driver/compiler_driver.h
@@ -457,14 +457,15 @@
hash = (hash * 16777619) ^ b;
}
} else {
- // For larger arrays use the first 4 bytes and then select a number of other values at
- // random.
+ // For larger arrays use the 2 bytes at 6 bytes (the location of a push registers
+ // instruction field for quick generated code on ARM) and then select a number of other
+ // values at random.
static const size_t kRandomHashCount = 16;
- for (size_t i = 0; i < 4; ++i) {
- uint8_t b = array[i];
+ for (size_t i = 0; i < 2; ++i) {
+ uint8_t b = array[i + 6];
hash = (hash * 16777619) ^ b;
}
- for (size_t i = 4; i < kRandomHashCount; ++i) {
+ for (size_t i = 2; i < kRandomHashCount; ++i) {
size_t r = i * 1103515245 + 12345;
uint8_t b = array[r % array.size()];
hash = (hash * 16777619) ^ b;