summaryrefslogtreecommitdiffstats
path: root/vendor/elsa
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
commit1376c5a617be5c25655d0d7cb63e3beaa5a6e026 (patch)
tree3bb8d61aee02bc7a15eab3f36e3b921afc2075d0 /vendor/elsa
parentReleasing progress-linux version 1.69.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.tar.xz
rustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.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.json2
-rw-r--r--vendor/elsa/Cargo.lock2
-rw-r--r--vendor/elsa/Cargo.toml2
-rw-r--r--vendor/elsa/src/sync.rs26
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