Do not hash zero bytes of i64 and u32 in Sip128 hasher
This commit is contained in:
parent
b5da80871d
commit
65a3279f4a
2 changed files with 18 additions and 4 deletions
|
@ -409,6 +409,20 @@ impl SipHasher128 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! dispatch_value {
|
||||||
|
($target: expr, $value:expr) => {
|
||||||
|
let value = $value;
|
||||||
|
#[allow(unreachable_patterns)]
|
||||||
|
#[allow(overflowing_literals)]
|
||||||
|
match value {
|
||||||
|
0..=0xFF => $target.short_write(value as u8),
|
||||||
|
0x100..=0xFFFF => $target.short_write(value as u16),
|
||||||
|
0x10000..=0xFFFFFFFF => $target.short_write(value as u32),
|
||||||
|
_ => $target.short_write(value as u64),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
impl Hasher for SipHasher128 {
|
impl Hasher for SipHasher128 {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn write_u8(&mut self, i: u8) {
|
fn write_u8(&mut self, i: u8) {
|
||||||
|
@ -422,7 +436,7 @@ impl Hasher for SipHasher128 {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn write_u32(&mut self, i: u32) {
|
fn write_u32(&mut self, i: u32) {
|
||||||
self.short_write(i);
|
dispatch_value!(self, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
@ -452,7 +466,7 @@ impl Hasher for SipHasher128 {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn write_i64(&mut self, i: i64) {
|
fn write_i64(&mut self, i: i64) {
|
||||||
self.short_write(i as u64);
|
dispatch_value!(self, i as u64);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
// Const generic parameter
|
// Const generic parameter
|
||||||
// gdb-command:info functions -q function_names::const_generic_fn.*
|
// gdb-command:info functions -q function_names::const_generic_fn.*
|
||||||
// gdb-check:[...]static fn function_names::const_generic_fn_bool<false>();
|
// gdb-check:[...]static fn function_names::const_generic_fn_bool<false>();
|
||||||
// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#fe3cfa0214ac55c7}>();
|
// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#3fcd7c34c1555be6}>();
|
||||||
// gdb-check:[...]static fn function_names::const_generic_fn_signed_int<-7>();
|
// gdb-check:[...]static fn function_names::const_generic_fn_signed_int<-7>();
|
||||||
// gdb-check:[...]static fn function_names::const_generic_fn_unsigned_int<14>();
|
// gdb-check:[...]static fn function_names::const_generic_fn_unsigned_int<14>();
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
// Const generic parameter
|
// Const generic parameter
|
||||||
// cdb-command:x a!function_names::const_generic_fn*
|
// cdb-command:x a!function_names::const_generic_fn*
|
||||||
// cdb-check:[...] a!function_names::const_generic_fn_bool<false> (void)
|
// cdb-check:[...] a!function_names::const_generic_fn_bool<false> (void)
|
||||||
// cdb-check:[...] a!function_names::const_generic_fn_non_int<CONST$fe3cfa0214ac55c7> (void)
|
// cdb-check:[...] a!function_names::const_generic_fn_non_int<CONST$3fcd7c34c1555be6> (void)
|
||||||
// cdb-check:[...] a!function_names::const_generic_fn_unsigned_int<14> (void)
|
// cdb-check:[...] a!function_names::const_generic_fn_unsigned_int<14> (void)
|
||||||
// cdb-check:[...] a!function_names::const_generic_fn_signed_int<-7> (void)
|
// cdb-check:[...] a!function_names::const_generic_fn_signed_int<-7> (void)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue