chunk/find: don't hard code the buzhash shift
This commit is contained in:
parent
0028e5f382
commit
6d584b10ec
@ -37,6 +37,7 @@ namespace emory::chunk {
|
|||||||
digest_type const mask = ~digest_type (0) >> (sizeof (digest_type) * 8 - p.bits);
|
digest_type const mask = ~digest_type (0) >> (sizeof (digest_type) * 8 - p.bits);
|
||||||
|
|
||||||
u64 hash_state = 0;
|
u64 hash_state = 0;
|
||||||
|
static u64 constexpr hash_shift = 1;
|
||||||
auto start = src.begin ();
|
auto start = src.begin ();
|
||||||
|
|
||||||
// Scan the entire source memory region
|
// Scan the entire source memory region
|
||||||
@ -54,8 +55,8 @@ namespace emory::chunk {
|
|||||||
if (cursor < start + p.maximum) {
|
if (cursor < start + p.maximum) {
|
||||||
// Rotate the buzhash state if we haven't hit a marker.
|
// Rotate the buzhash state if we haven't hit a marker.
|
||||||
if (likely (hash_state & mask)) {
|
if (likely (hash_state & mask)) {
|
||||||
hash_state = cruft::rotatel (hash_state, 1)
|
hash_state = cruft::rotatel (hash_state, hash_shift)
|
||||||
^ cruft::rotatel (u64 (*(cursor - p.window)), p.window)
|
^ cruft::rotatel (u64 (*(cursor - p.window)), p.window * hash_shift)
|
||||||
^ *cursor;
|
^ *cursor;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user