summaryrefslogtreecommitdiffstats
path: root/vendor/hashbrown
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /vendor/hashbrown
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/hashbrown')
-rw-r--r--vendor/hashbrown/.cargo-checksum.json2
-rw-r--r--vendor/hashbrown/CHANGELOG.md48
-rw-r--r--vendor/hashbrown/Cargo.toml2
-rw-r--r--vendor/hashbrown/README.md2
-rw-r--r--vendor/hashbrown/src/map.rs2
-rw-r--r--vendor/hashbrown/src/raw/mod.rs18
-rw-r--r--vendor/hashbrown/src/set.rs2
-rw-r--r--vendor/hashbrown/tests/raw.rs11
8 files changed, 60 insertions, 27 deletions
diff --git a/vendor/hashbrown/.cargo-checksum.json b/vendor/hashbrown/.cargo-checksum.json
index 7afacf505..095d0c719 100644
--- a/vendor/hashbrown/.cargo-checksum.json
+++ b/vendor/hashbrown/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"6b641d6636a77b1061a1d0d1d3d3b581c16a8dc1032e9d0b51e6be3004342be8","Cargo.toml":"69044febf7790a9cce87e8f5cf41ae9515f5f9d22157f5519c6ddf34f7efa423","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"73870908321f2a590359e217f3adbe3fbc1de174d8c6c1d7ec5f73a388f99e40","benches/bench.rs":"aadc39d815eadf094ed9357d946319df2d93194203bbccb7c33cea6951d654df","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"d69528827794524cfd9acbeacc1ac4f6131e3c7574311e6d919f818f65fbff07","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"2809e2a0071db8101c38789deb955f3830c5c3455eb1794ff64a0cf2ceb53fc7","src/external_trait_impls/rayon/mod.rs":"156de9c1ad0123334ea3b7e5a17444faf1b8bf971aa88a1f23e2f2d1c3021141","src/external_trait_impls/rayon/raw.rs":"e62c5f3ca5fffea47357e64b6f8c34cec94af62d9bd28a2b87934da46c22b66e","src/external_trait_impls/rayon/set.rs":"c4c44d44e56c2f59e9e1355662e29d8744ac96645ca4414127a359fb46cb0fbf","src/external_trait_impls/serde.rs":"0bc1a1f218d1ae7a5262557a5e3737b9334caf7d50c136dbdc75ff75680c223b","src/lib.rs":"486e1ea3445e8438f0fb6256471d80621f6c59195f0c198d02c7d951838dd35b","src/macros.rs":"36fe532656879c80f7753d13354b889f5b45caef451a1bb3a27dbc32d74c9878","src/map.rs":"1d2f7b4bb655f7fb63e3d61ac641b4ada387f9ea0091047aee70f98640a5c1a2","src/raw/alloc.rs":"184a0345bc2c7544b65c28724063be26b1f2b28dbaaa028a0b01192ccac25557","src/raw/bitmask.rs":"820d90b19b7e3433a1048ace008c9526331cd53a576cb0cfc1ff9960b6fe52f8","src/raw/generic.rs":"51720f27d4b76ab411a9658affd0c6faf423402c9def0879481657dd7b1a7928","src/raw/mod.rs":"f6dd88877914aaa6077f46a73efcebd434e1a1096ff082d390a151ff9d1a1cc9","src/raw/sse2.rs":"838cfdb1daa1e70951ed25f985283b8b7ab4b46fa130f92eda152047ce6086f6","src/rustc_entry.rs":"cdd70972cba5b79ca1cad79869cb5e184d6dc4798ef90822e966ef89679ba011","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"67f212c5cef928139ae8fa396a3414420aecd1c10aec5da47cb3c0dfe44dae44","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/rayon.rs":"83d5289771542203f539a41cccb889fbe7ce70f5adf5b903ac9f051e3ba13cfa","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"01cf39efb04646ef4c63a809ebb96dfa63cfec472bf8bdb6c121f6526d40c40e"},"package":"33ff8ae62cd3a9102e5637afc8452c55acf3844001bd5374e0b0bd7b6616c038"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"9f6a99787d52bc87da929df9348c5e6db403c54995be5a006eea4b641efb7652","Cargo.toml":"da2b6aaf324e787d10a6a3626347dae7c1b101614a04eba0e13a5f455201bdc7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"292bb49a47b4f75f0a94fd2316d43349cd3238823e5b9b96b9ee4d963a88b998","benches/bench.rs":"aadc39d815eadf094ed9357d946319df2d93194203bbccb7c33cea6951d654df","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"d69528827794524cfd9acbeacc1ac4f6131e3c7574311e6d919f818f65fbff07","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"2809e2a0071db8101c38789deb955f3830c5c3455eb1794ff64a0cf2ceb53fc7","src/external_trait_impls/rayon/mod.rs":"156de9c1ad0123334ea3b7e5a17444faf1b8bf971aa88a1f23e2f2d1c3021141","src/external_trait_impls/rayon/raw.rs":"e62c5f3ca5fffea47357e64b6f8c34cec94af62d9bd28a2b87934da46c22b66e","src/external_trait_impls/rayon/set.rs":"c4c44d44e56c2f59e9e1355662e29d8744ac96645ca4414127a359fb46cb0fbf","src/external_trait_impls/serde.rs":"0bc1a1f218d1ae7a5262557a5e3737b9334caf7d50c136dbdc75ff75680c223b","src/lib.rs":"486e1ea3445e8438f0fb6256471d80621f6c59195f0c198d02c7d951838dd35b","src/macros.rs":"36fe532656879c80f7753d13354b889f5b45caef451a1bb3a27dbc32d74c9878","src/map.rs":"83748649c382b608de5f57e7d64a30455ff4270a24ada22159f9a6d8e084f202","src/raw/alloc.rs":"184a0345bc2c7544b65c28724063be26b1f2b28dbaaa028a0b01192ccac25557","src/raw/bitmask.rs":"820d90b19b7e3433a1048ace008c9526331cd53a576cb0cfc1ff9960b6fe52f8","src/raw/generic.rs":"51720f27d4b76ab411a9658affd0c6faf423402c9def0879481657dd7b1a7928","src/raw/mod.rs":"156c574d7e64f845902ac66032be80356acb1bca758839a92f660a233da91108","src/raw/sse2.rs":"838cfdb1daa1e70951ed25f985283b8b7ab4b46fa130f92eda152047ce6086f6","src/rustc_entry.rs":"cdd70972cba5b79ca1cad79869cb5e184d6dc4798ef90822e966ef89679ba011","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"3e8e6ceb1728dd9a2fa0db1cf351413a608dc73df905a1546e268d0e8e527493","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/raw.rs":"43ed2f98877533a0905611d9a30f26b183dd3e103e3856eeab80e7b8ac7894d3","tests/rayon.rs":"83d5289771542203f539a41cccb889fbe7ce70f5adf5b903ac9f051e3ba13cfa","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"01cf39efb04646ef4c63a809ebb96dfa63cfec472bf8bdb6c121f6526d40c40e"},"package":"43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"} \ No newline at end of file
diff --git a/vendor/hashbrown/CHANGELOG.md b/vendor/hashbrown/CHANGELOG.md
index 87fe640c5..960f9387a 100644
--- a/vendor/hashbrown/CHANGELOG.md
+++ b/vendor/hashbrown/CHANGELOG.md
@@ -7,16 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased]
+## [v0.13.2] - 2023-01-12
+
+### Fixed
+
+- Added `#[inline(always)]` to `find_inner`. (#375)
+- Fixed `RawTable::allocation_info` for empty tables. (#376)
+
## [v0.13.1] - 2022-11-10
-# Added
+### Added
- Added `Equivalent` trait to customize key lookups. (#350)
- Added support for 16-bit targets. (#368)
- Added `RawTable::allocation_info` which provides information about the memory
usage of a table. (#371)
-# Changed
+### Changed
- Bumped MSRV to 1.61.0.
- Upgraded to `ahash` 0.8. (#357)
@@ -28,40 +35,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- `Bucket::drop` => Use `RawTable::erase` instead.
- `Bucket::write` => Use `Bucket::as_mut` instead.
-# Fixed
+### Fixed
- Ensure that `HashMap` allocations don't exceed `isize::MAX`. (#362)
- Fixed issue with field retagging in scopeguard. (#359)
## [v0.12.3] - 2022-07-17
-## Fixed
+### Fixed
- Fixed double-drop in `RawTable::clone_from`. (#348)
## [v0.12.2] - 2022-07-09
-## Added
+### Added
- Added `Entry` API for `HashSet`. (#342)
- Added `Extend<&'a (K, V)> for HashMap<K, V, S, A>`. (#340)
- Added length-based short-circuiting for hash table iteration. (#338)
- Added a function to access the `RawTable` of a `HashMap`. (#335)
-## Changed
+### Changed
- Edited `do_alloc` to reduce LLVM IR generated. (#341)
## [v0.12.1] - 2022-05-02
-## Fixed
+### Fixed
- Fixed underflow in `RawIterRange::size_hint`. (#325)
- Fixed the implementation of `Debug` for `ValuesMut` and `IntoValues`. (#325)
## [v0.12.0] - 2022-01-17
-## Added
+### Added
- Added `From<[T; N]>` and `From<[(K, V); N]>` for `HashSet` and `HashMap` respectively. (#297)
- Added an `allocator()` getter to HashMap and HashSet. (#257)
@@ -70,7 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Implement `From<array>` on `HashSet` and `HashMap`. (#298)
- Added `entry_ref` API to `HashMap`. (#201)
-## Changed
+### Changed
- Bumped minimum Rust version to 1.56.1 and edition to 2021.
- Use u64 for the GroupWord on WebAssembly. (#271)
@@ -82,7 +89,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Rename `get_each_mut` to `get_many_mut` and align API with the stdlib. (#291)
- Don't hash the key when searching in an empty table. (#305)
-## Fixed
+### Fixed
- Guard against allocations exceeding isize::MAX. (#268)
- Made `RawTable::insert_no_grow` unsafe. (#254)
@@ -91,19 +98,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
## [v0.11.2] - 2021-03-25
-## Fixed
+### Fixed
- Added missing allocator type parameter to `HashMap`'s and `HashSet`'s `Clone` impls. (#252)
## [v0.11.1] - 2021-03-20
-## Fixed
+### Fixed
- Added missing `pub` modifier to `BumpWrapper`. (#251)
## [v0.11.0] - 2021-03-14
-## Added
+### Added
- Added safe `try_insert_no_grow` method to `RawTable`. (#229)
- Added support for `bumpalo` as an allocator without the `nightly` feature. (#231)
- Implemented `Default` for `RawTable`. (#237)
@@ -112,22 +119,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Added `From<HashMap<T, ()>>` for `HashSet<T>`. (#235)
- Added `try_insert` method to `HashMap`. (#247)
-## Changed
+### Changed
- The minimum Rust version has been bumped to 1.49.0. (#230)
- Significantly improved compilation times by reducing the amount of generated IR. (#205)
-## Removed
+### Removed
- We no longer re-export the unstable allocator items from the standard library, nor the stable shims approximating the same. (#227)
- Removed hasher specialization support from `aHash`, which was resulting in inconsistent hashes being generated for a key. (#248)
-## Fixed
+### Fixed
- Fixed union length comparison. (#228)
## ~~[v0.10.0] - 2021-01-16~~
This release was _yanked_ due to inconsistent hashes being generated with the `nightly` feature. (#248)
-## Changed
+### Changed
- Parametrized `RawTable`, `HashSet` and `HashMap` over an allocator. (#133)
- Improved branch prediction hints on stable. (#209)
- Optimized hashing of primitive types with AHash using specialization. (#207)
@@ -135,7 +142,7 @@ This release was _yanked_ due to inconsistent hashes being generated with the `n
## [v0.9.1] - 2020-09-28
-## Added
+### Added
- Added safe methods to `RawTable` (#202):
- `get`: `find` and `as_ref`
- `get_mut`: `find` and `as_mut`
@@ -143,7 +150,7 @@ This release was _yanked_ due to inconsistent hashes being generated with the `n
- `remove_entry`: `find` and `remove`
- `erase_entry`: `find` and `erase`
-## Changed
+### Changed
- Removed `from_key_hashed_nocheck`'s `Q: Hash`. (#200)
- Made `RawTable::drain` safe. (#201)
@@ -389,7 +396,8 @@ This release was _yanked_ due to a breaking change for users of `no-default-feat
- Initial release
-[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.13.1...HEAD
+[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.13.2...HEAD
+[v0.13.2]: https://github.com/rust-lang/hashbrown/compare/v0.13.1...v0.13.2
[v0.13.1]: https://github.com/rust-lang/hashbrown/compare/v0.12.3...v0.13.1
[v0.12.3]: https://github.com/rust-lang/hashbrown/compare/v0.12.2...v0.12.3
[v0.12.2]: https://github.com/rust-lang/hashbrown/compare/v0.12.1...v0.12.2
diff --git a/vendor/hashbrown/Cargo.toml b/vendor/hashbrown/Cargo.toml
index ca4668249..c64471533 100644
--- a/vendor/hashbrown/Cargo.toml
+++ b/vendor/hashbrown/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.61.0"
name = "hashbrown"
-version = "0.13.1"
+version = "0.13.2"
authors = ["Amanieu d'Antras <amanieu@gmail.com>"]
exclude = [
".github",
diff --git a/vendor/hashbrown/README.md b/vendor/hashbrown/README.md
index f5fff54cb..9b2ca7eae 100644
--- a/vendor/hashbrown/README.md
+++ b/vendor/hashbrown/README.md
@@ -85,7 +85,7 @@ Add this to your `Cargo.toml`:
```toml
[dependencies]
-hashbrown = "0.12"
+hashbrown = "0.13"
```
Then:
diff --git a/vendor/hashbrown/src/map.rs b/vendor/hashbrown/src/map.rs
index 5049aa2b5..e238bf66b 100644
--- a/vendor/hashbrown/src/map.rs
+++ b/vendor/hashbrown/src/map.rs
@@ -7679,7 +7679,7 @@ mod test_map {
let vec: Vec<_> = (100..200).map(|i| (i, i)).collect();
a.extend(iter);
a.extend(&vec);
- a.extend(&create_arr::<i32, 100>(200, 1));
+ a.extend(create_arr::<i32, 100>(200, 1));
assert_eq!(a.len(), 300);
diff --git a/vendor/hashbrown/src/raw/mod.rs b/vendor/hashbrown/src/raw/mod.rs
index 625ca1d71..0e96306ef 100644
--- a/vendor/hashbrown/src/raw/mod.rs
+++ b/vendor/hashbrown/src/raw/mod.rs
@@ -531,7 +531,7 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
#[inline]
#[cfg(feature = "raw")]
pub fn allocation_info(&self) -> (NonNull<u8>, Layout) {
- self.table.allocation_info(Self::TABLE_LAYOUT)
+ self.table.allocation_info_or_zero(Self::TABLE_LAYOUT)
}
/// Returns the index of a bucket from a `Bucket`.
@@ -1189,7 +1189,7 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// Searches for an element in the table. This uses dynamic dispatch to reduce the amount of
/// code generated, but it is eliminated by LLVM optimizations.
- #[inline]
+ #[inline(always)]
fn find_inner(&self, hash: u64, eq: &mut dyn FnMut(usize) -> bool) -> Option<usize> {
let h2_hash = h2(hash);
let mut probe_seq = self.probe_seq(hash);
@@ -1589,6 +1589,11 @@ impl<A: Allocator + Clone> RawTableInner<A> {
#[inline]
fn allocation_info(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
+ debug_assert!(
+ !self.is_empty_singleton(),
+ "this function can only be called on non-empty tables"
+ );
+
// Avoid `Option::unwrap_or_else` because it bloats LLVM IR.
let (layout, ctrl_offset) = match table_layout.calculate_layout_for(self.buckets()) {
Some(lco) => lco,
@@ -1600,6 +1605,15 @@ impl<A: Allocator + Clone> RawTableInner<A> {
)
}
+ #[cfg(feature = "raw")]
+ fn allocation_info_or_zero(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
+ if self.is_empty_singleton() {
+ (NonNull::dangling(), Layout::new::<()>())
+ } else {
+ self.allocation_info(table_layout)
+ }
+ }
+
/// Marks all table buckets as empty without dropping their contents.
#[inline]
fn clear_no_drop(&mut self) {
diff --git a/vendor/hashbrown/src/set.rs b/vendor/hashbrown/src/set.rs
index 60c1b1cd1..a8f24de80 100644
--- a/vendor/hashbrown/src/set.rs
+++ b/vendor/hashbrown/src/set.rs
@@ -2794,7 +2794,7 @@ mod test_set {
let mut a = HashSet::new();
a.insert(1);
- a.extend(&[2, 3, 4]);
+ a.extend([2, 3, 4]);
assert_eq!(a.len(), 4);
assert!(a.contains(&1));
diff --git a/vendor/hashbrown/tests/raw.rs b/vendor/hashbrown/tests/raw.rs
new file mode 100644
index 000000000..858836e63
--- /dev/null
+++ b/vendor/hashbrown/tests/raw.rs
@@ -0,0 +1,11 @@
+#![cfg(feature = "raw")]
+
+use hashbrown::raw::RawTable;
+use std::mem;
+
+#[test]
+fn test_allocation_info() {
+ assert_eq!(RawTable::<()>::new().allocation_info().1.size(), 0);
+ assert_eq!(RawTable::<u32>::new().allocation_info().1.size(), 0);
+ assert!(RawTable::<u32>::with_capacity(1).allocation_info().1.size() > mem::size_of::<u32>());
+}