From 3d28557ac035dbe620c22fdfe4b019ed138bdf60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Fri, 3 Jul 2020 03:55:16 +0200 Subject: [PATCH] Remove unnecessary synchronization when cloning shared representation (#404) --- src/bytes.rs | 2 +- src/bytes_mut.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bytes.rs b/src/bytes.rs index 08bc9b3..79a09f3 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -928,7 +928,7 @@ const KIND_VEC: usize = 0b1; const KIND_MASK: usize = 0b1; unsafe fn shared_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes { - let shared = data.load(Ordering::Acquire); + let shared = data.load(Ordering::Relaxed); shallow_clone_arc(shared as _, ptr, len) } diff --git a/src/bytes_mut.rs b/src/bytes_mut.rs index 4d0585e..802745e 100644 --- a/src/bytes_mut.rs +++ b/src/bytes_mut.rs @@ -1495,7 +1495,7 @@ static SHARED_VTABLE: Vtable = Vtable { }; unsafe fn shared_v_clone(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> Bytes { - let shared = data.load(Ordering::Acquire) as *mut Shared; + let shared = data.load(Ordering::Relaxed) as *mut Shared; increment_shared(shared); let data = AtomicPtr::new(shared as _);