57361
|
1 |
package jdk.jfr.internal.util;
|
|
2 |
|
|
3 |
import java.util.Random;
|
|
4 |
|
|
5 |
public class UniversalHashFamily {
|
|
6 |
final Random rand = new Random();
|
|
7 |
|
|
8 |
private static long getA(long hashFunction) {
|
|
9 |
return hashFunction | 1;
|
|
10 |
}
|
|
11 |
|
|
12 |
private static long getB(long hashFunction, long mask) {
|
|
13 |
return hashFunction & mask;
|
|
14 |
}
|
|
15 |
|
|
16 |
private static long getHash(long key, long hashFunction, long mask) {
|
|
17 |
return (getA(hashFunction) * key) + (hashFunction & mask);
|
|
18 |
}
|
|
19 |
|
|
20 |
public static int getIndex(long key, long hashFunction, long shift, long mask) {
|
|
21 |
return (int)(getHash(key, hashFunction, mask) >>> shift);
|
|
22 |
}
|
|
23 |
|
|
24 |
public long getRandomHashFunction() {
|
|
25 |
return rand.nextLong() & Long.MAX_VALUE;
|
|
26 |
}
|
|
27 |
} |