diff options
| author | bors <bors@rust-lang.org> | 2021-10-24 06:29:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-10-24 06:29:41 +0000 |
| commit | bdcb52851231dc14bc6a7915dc62528cae7b8137 (patch) | |
| tree | 1c693f074dd54f52f4d0e8f0d9f42ca61642c198 /compiler/rustc_data_structures/src | |
| parent | a99c9d6518690023914abdbaad572634f857c4c2 (diff) | |
| parent | 3cd5c95ab0618924d790fcd19f31883e020cc90f (diff) | |
| download | rust-bdcb52851231dc14bc6a7915dc62528cae7b8137.tar.gz rust-bdcb52851231dc14bc6a7915dc62528cae7b8137.zip | |
Auto merge of #90208 - Mark-Simulacrum:hash-bytes-fast, r=oli-obk
Specialize HashStable for [u8] slices Particularly for ctfe-stress-4, the hashing of byte slices as part of the MIR Allocation is quite hot. Previously, we were falling back on byte-by-byte copying of the slice into the SipHash buffer (64 bytes long) before hashing a 64 byte chunk, and then doing that again and again; now we use the dedicated byte-slice write.
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/stable_hasher.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_data_structures/src/stable_hasher.rs b/compiler/rustc_data_structures/src/stable_hasher.rs index 354f9dd93cc..f800ec6a6a1 100644 --- a/compiler/rustc_data_structures/src/stable_hasher.rs +++ b/compiler/rustc_data_structures/src/stable_hasher.rs @@ -301,6 +301,13 @@ impl<T: HashStable<CTX>, CTX> HashStable<CTX> for [T] { } } +impl<CTX> HashStable<CTX> for [u8] { + fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) { + self.len().hash_stable(ctx, hasher); + hasher.write(self); + } +} + impl<T: HashStable<CTX>, CTX> HashStable<CTX> for Vec<T> { #[inline] fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) { |
