src/jdk.jfr/share/classes/jdk/jfr/internal/util/UniversalHashFamily.java
branchJEP-349-branch
changeset 57361 53dccc90a5be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/util/UniversalHashFamily.java	Fri May 17 18:03:14 2019 +0200
@@ -0,0 +1,27 @@
+package jdk.jfr.internal.util;
+
+import java.util.Random;
+
+public class UniversalHashFamily {
+    final Random rand = new Random();
+
+    private static long getA(long hashFunction) {
+        return hashFunction | 1;
+    }
+
+    private static long getB(long hashFunction, long mask) {
+        return hashFunction & mask;
+    }
+
+    private static long getHash(long key, long hashFunction, long mask) {
+        return (getA(hashFunction) * key) + (hashFunction & mask);
+    }
+
+    public static int getIndex(long key, long hashFunction, long shift, long mask) {
+        return (int)(getHash(key, hashFunction, mask) >>> shift);
+    }
+
+    public long getRandomHashFunction() {
+        return rand.nextLong() & Long.MAX_VALUE;
+    }
+}
\ No newline at end of file