MCPcopy
hub / github.com/google/guava / rehash

Method rehash

guava/src/com/google/common/cache/LocalCache.java:1681–1691  ·  view source on GitHub ↗

Applies a supplemental hash function to a given hash code, which defends against poor quality hash functions. This is critical when the concurrent hash map uses power-of-two length hash tables, that otherwise encounter collisions for hash codes that do not differ in lower or upper bits. @param h ha

(int h)

Source from the content-addressed store, hash-verified

1679 * @param h hash code
1680 */
1681 static int rehash(int h) {
1682 // Spread bits to regularize both segment and index locations,
1683 // using variant of single-word Wang/Jenkins hash.
1684 // TODO(kevinb): use Hashing/move this to Hashing?
1685 h += (h << 15) ^ 0xffffcd7d;
1686 h ^= h >>> 10;
1687 h += h << 3;
1688 h ^= h >>> 6;
1689 h += (h << 2) + (h << 14);
1690 return h ^ (h >>> 16);
1691 }
1692
1693 /**
1694 * This method is a convenience for testing. Code should call {@link Segment#newEntry} directly.

Callers 1

hashMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected