From d7e3e5bede187d113fa01c4d8b8c16a2bd4f721c Mon Sep 17 00:00:00 2001 From: SparrowLii Date: Sat, 6 May 2023 10:23:51 +0800 Subject: add `DynSend / DynSync` for `CopyTaggedPtr` --- compiler/rustc_data_structures/src/lib.rs | 2 -- compiler/rustc_data_structures/src/marker.rs | 11 ++++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'compiler/rustc_data_structures') diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs index 579f54c5f71..5b9b0e106d2 100644 --- a/compiler/rustc_data_structures/src/lib.rs +++ b/compiler/rustc_data_structures/src/lib.rs @@ -30,8 +30,6 @@ #![feature(get_mut_unchecked)] #![feature(lint_reasons)] #![feature(unwrap_infallible)] -#![feature(const_mut_refs)] -#![feature(const_trait_impl)] #![feature(strict_provenance)] #![feature(ptr_alignment_type)] #![feature(macro_metavar_expr)] diff --git a/compiler/rustc_data_structures/src/marker.rs b/compiler/rustc_data_structures/src/marker.rs index e23a10839ee..f8c06f9a814 100644 --- a/compiler/rustc_data_structures/src/marker.rs +++ b/compiler/rustc_data_structures/src/marker.rs @@ -94,6 +94,7 @@ cfg_if!( [Box where T: ?Sized + DynSend, A: std::alloc::Allocator + DynSend] [crate::sync::Lock where T: DynSend] [crate::sync::RwLock where T: DynSend] + [crate::tagged_ptr::CopyTaggedPtr where P: Send + crate::tagged_ptr::Pointer, T: Send + crate::tagged_ptr::Tag, const CP: bool] [rustc_arena::TypedArena where T: DynSend] [indexmap::IndexSet where V: DynSend, S: DynSend] [indexmap::IndexMap where K: DynSend, V: DynSend, S: DynSend] @@ -175,6 +176,7 @@ cfg_if!( [crate::sync::OneThread where T] [crate::sync::WorkerLocal where T: DynSend] [crate::intern::Interned<'a, T> where 'a, T: DynSync] + [crate::tagged_ptr::CopyTaggedPtr where P: Sync + crate::tagged_ptr::Pointer, T: Sync + crate::tagged_ptr::Tag, const CP: bool] [parking_lot::lock_api::Mutex where R: DynSync, T: ?Sized + DynSend] [parking_lot::lock_api::RwLock where R: DynSync, T: ?Sized + DynSend + DynSync] [indexmap::IndexSet where V: DynSync, S: DynSync] @@ -218,9 +220,10 @@ unsafe impl Send for FromDyn {} #[cfg(parallel_compiler)] unsafe impl Sync for FromDyn {} -impl const std::ops::Deref for FromDyn { +impl std::ops::Deref for FromDyn { type Target = T; + #[inline(always)] fn deref(&self) -> &Self::Target { &self.0 } @@ -237,15 +240,17 @@ unsafe impl DynSend for IntoDynSyncSend {} #[cfg(parallel_compiler)] unsafe impl DynSync for IntoDynSyncSend {} -impl const std::ops::Deref for IntoDynSyncSend { +impl std::ops::Deref for IntoDynSyncSend { type Target = T; + #[inline(always)] fn deref(&self) -> &T { &self.0 } } -impl const std::ops::DerefMut for IntoDynSyncSend { +impl std::ops::DerefMut for IntoDynSyncSend { + #[inline(always)] fn deref_mut(&mut self) -> &mut T { &mut self.0 } -- cgit 1.4.1-3-g733a5