presto-orc/src/main/java/io/prestosql/orc/metadata/statistics/BloomFilter.java/BloomFilter/hash64
class BloomFilter:        @SuppressWarnings("fallthrough")
        public static long hash64(Slice data)
        {
            long hash = DEFAULT_SEED;
            int fastLimit = (data.length() - SIZE_OF_LONG) + 1;

            // body
            int current = 0;
            while (current < fastLimit) {
                long k = UnsafeSlice.getLongUnchecked(data, current);
                current += SIZE_OF_LONG;

                // mix functions
                k *= C1;
                k = Long.rotateLeft(k, R1);
                k *= C2;
                hash ^= k;
                hash = Long.rotateLeft(hash, R2) * M + N1;
            }

            // tail
            long k = 0;
            switch (data.length() - current) {
                case 7:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 6) & 0xff) << 48;
                case 6:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 5) & 0xff) << 40;
                case 5:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 4) & 0xff) << 32;
                case 4:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 3) & 0xff) << 24;
                case 3:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 2) & 0xff) << 16;
                case 2:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current + 1) & 0xff) << 8;
                case 1:
                    k ^= ((long) UnsafeSlice.getByteUnchecked(data, current) & 0xff);
                    k *= C1;
                    k = Long.rotateLeft(k, R1);
                    k *= C2;
                    hash ^= k;
            }

            // finalization
            hash ^= data.length();
            hash = fmix64(hash);

            return hash;
        }