diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:29 +0000 |
commit | 631cd5845e8de329d0e227aaa707d7ea228b8f8f (patch) | |
tree | a1b87c8f8cad01cf18f7c5f57a08f102771ed303 /vendor/elsa | |
parent | Adding debian version 1.69.0+dfsg1-1. (diff) | |
download | rustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.tar.xz rustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.zip |
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/elsa')
-rw-r--r-- | vendor/elsa/.cargo-checksum.json | 2 | ||||
-rw-r--r-- | vendor/elsa/Cargo.lock | 2 | ||||
-rw-r--r-- | vendor/elsa/Cargo.toml | 2 | ||||
-rw-r--r-- | vendor/elsa/src/sync.rs | 26 |
4 files changed, 19 insertions, 13 deletions
diff --git a/vendor/elsa/.cargo-checksum.json b/vendor/elsa/.cargo-checksum.json index a43c1ffd2..64a85c66b 100644 --- a/vendor/elsa/.cargo-checksum.json +++ b/vendor/elsa/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"436a38effb1bc439febdcf0235758d480258326fb87c19c5cd482194e37d19f3","Cargo.toml":"3f3f154070e2d096c40b6080e233e0f081cd8c67b033fb5150badf7cb3f97a7f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"15656cc11a8331f28c0986b8ab97220d3e76f98e60ed388b5ffad37dfac4710c","README.md":"72ec631a7cc4907ab80d87776b8eb1929d7cbd76b260f2fdb913714787f30dac","examples/arena.rs":"dd44f11e4b4e8b1eedca5ce5205aef3efface3c8888daa16b735dd476362b335","examples/fluentresource.rs":"d2bc2a1b02e6c92819bc608d91214591d8dc7d52f7f524c24e39ba5fe28ee6fe","examples/mutable_arena.rs":"553541b20ac97339cf89e2ef60810490f8362520911f3279f4129a30c2af6eb6","examples/string_interner.rs":"d8b427b71e6c340bf8ee01bc1245c82839fa6efb3dde6b91aab8791f0dfebbf9","examples/sync.rs":"bf9f395c029129fac6247068874b9514e0a174d342174dc4c65716acdbce3741","src/index_map.rs":"c265730dc36a49c8e7966226ebab0aa74f6c828fa6a5b3779a8df4bd34981c19","src/index_set.rs":"2173479eb3cd1009ed4e6b54ebc8aab8e0869d076b7e270dc937657e49838e01","src/lib.rs":"d26839bf88764445d2ec453b269b4359761186afda947101ee42c344cb0ad940","src/map.rs":"8f663631d817081dc8eac50d5235cac28f11dac0f8ebef6f57676d495b1aaab3","src/sync.rs":"8bc2e17981f58c9773e90d5ef40f66ebb1a13ee0f794294133486e6b4f5b50a0","src/vec.rs":"c9f053f0e22dc40ff1137d60b87650bf521f09a41111c4b8329b37af59893697"},"package":"f74077c3c3aedb99a2683919698285596662518ea13e5eedcf8bdd43b0d0453b"}
\ No newline at end of file +{"files":{"Cargo.lock":"e158003308c04130effdcbb27d5568945643e94a3a44093ab43e03fb518b3531","Cargo.toml":"ec3d86514ed65fbe8c70a329b831581e50557f23d35d9f7de8835f77d1b0c3c4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"15656cc11a8331f28c0986b8ab97220d3e76f98e60ed388b5ffad37dfac4710c","README.md":"72ec631a7cc4907ab80d87776b8eb1929d7cbd76b260f2fdb913714787f30dac","examples/arena.rs":"dd44f11e4b4e8b1eedca5ce5205aef3efface3c8888daa16b735dd476362b335","examples/fluentresource.rs":"d2bc2a1b02e6c92819bc608d91214591d8dc7d52f7f524c24e39ba5fe28ee6fe","examples/mutable_arena.rs":"553541b20ac97339cf89e2ef60810490f8362520911f3279f4129a30c2af6eb6","examples/string_interner.rs":"d8b427b71e6c340bf8ee01bc1245c82839fa6efb3dde6b91aab8791f0dfebbf9","examples/sync.rs":"bf9f395c029129fac6247068874b9514e0a174d342174dc4c65716acdbce3741","src/index_map.rs":"c265730dc36a49c8e7966226ebab0aa74f6c828fa6a5b3779a8df4bd34981c19","src/index_set.rs":"2173479eb3cd1009ed4e6b54ebc8aab8e0869d076b7e270dc937657e49838e01","src/lib.rs":"d26839bf88764445d2ec453b269b4359761186afda947101ee42c344cb0ad940","src/map.rs":"8f663631d817081dc8eac50d5235cac28f11dac0f8ebef6f57676d495b1aaab3","src/sync.rs":"70d39f929a4c8f60a42bf0caf580c48d778ecad055e30a579384d80394a5aa19","src/vec.rs":"c9f053f0e22dc40ff1137d60b87650bf521f09a41111c4b8329b37af59893697"},"package":"848fe615fbb0a74d9ae68dcaa510106d32e37d9416207bbea4bd008bd89c47ed"}
\ No newline at end of file diff --git a/vendor/elsa/Cargo.lock b/vendor/elsa/Cargo.lock index a03e9a806..27799eadb 100644 --- a/vendor/elsa/Cargo.lock +++ b/vendor/elsa/Cargo.lock @@ -10,7 +10,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "elsa" -version = "1.8.0" +version = "1.7.1" dependencies = [ "indexmap", "stable_deref_trait", diff --git a/vendor/elsa/Cargo.toml b/vendor/elsa/Cargo.toml index b9c473a20..d59000a61 100644 --- a/vendor/elsa/Cargo.toml +++ b/vendor/elsa/Cargo.toml @@ -12,7 +12,7 @@ [package] edition = "2018" name = "elsa" -version = "1.8.0" +version = "1.7.1" authors = ["Manish Goregaokar <manishsmail@gmail.com>"] description = "Append-only collections for Rust where borrows to entries can outlive insertions" documentation = "https://docs.rs/elsa/" diff --git a/vendor/elsa/src/sync.rs b/vendor/elsa/src/sync.rs index afa4bb7c7..5746989d1 100644 --- a/vendor/elsa/src/sync.rs +++ b/vendor/elsa/src/sync.rs @@ -13,7 +13,6 @@ use std::collections::BTreeMap; use std::collections::HashMap; use std::hash::Hash; use std::iter::{FromIterator, IntoIterator}; -use std::mem::MaybeUninit; use std::ops::Index; use std::sync::atomic::AtomicPtr; @@ -301,9 +300,11 @@ pub struct LockFreeFrozenVec<T: Copy> { impl<T: Copy> Drop for LockFreeFrozenVec<T> { fn drop(&mut self) { let cap = *self.cap.get_mut(); - let layout = self.layout(cap); - unsafe { - std::alloc::dealloc((*self.data.get_mut()).cast(), layout); + let layout = Self::layout(cap); + if cap != 0 { + unsafe { + std::alloc::dealloc((*self.data.get_mut()).cast(), layout); + } } } } @@ -326,9 +327,7 @@ impl<T: Copy> LockFreeFrozenVec<T> { pub fn with_capacity(cap: usize) -> Self { Self { - data: AtomicPtr::new( - Box::into_raw(vec![MaybeUninit::<T>::uninit(); cap].into_boxed_slice()).cast(), - ), + data: AtomicPtr::new(unsafe { std::alloc::alloc(Self::layout(cap)) }.cast()), len: AtomicUsize::new(0), cap: AtomicUsize::new(cap), } @@ -349,7 +348,7 @@ impl<T: Copy> LockFreeFrozenVec<T> { ret } - fn layout(&self, cap: usize) -> Layout { + fn layout(cap: usize) -> Layout { let num_bytes = std::mem::size_of::<T>() * cap; let align = std::mem::align_of::<T>(); Layout::from_size_align(num_bytes, align).unwrap() @@ -375,7 +374,7 @@ impl<T: Copy> LockFreeFrozenVec<T> { if len >= cap { if cap == 0 { // No memory allocated yet - let layout = self.layout(128); + let layout = Self::layout(128); // SAFETY: `LockFreeFrozenVec` statically rejects zsts unsafe { *ptr = std::alloc::alloc(layout).cast::<T>(); @@ -385,7 +384,7 @@ impl<T: Copy> LockFreeFrozenVec<T> { self.cap.store(128, Ordering::Release); } else { // Out of memory, realloc with double the capacity - let layout = self.layout(cap); + let layout = Self::layout(cap); let new_size = layout.size() * 2; // SAFETY: `LockFreeFrozenVec` statically rejects zsts and the input `ptr` has always been // allocated at the size stated in `cap`. @@ -459,6 +458,13 @@ fn test_non_lockfree() { } }); } + // Test dropping empty vecs + for _ in [ + LockFreeFrozenVec::<()>::new(), + LockFreeFrozenVec::with_capacity(1), + LockFreeFrozenVec::with_capacity(2), + LockFreeFrozenVec::with_capacity(1000), + ] {} } /// Append-only threadsafe version of `std::collections::BTreeMap` where |