mirror of
https://github.com/openharmony/third_party_rust_bytes.git
synced 2026-07-21 04:15:24 -04:00
use raw ptr for racy load and add comment (#289)
This commit is contained in:
+5
-2
@@ -1940,8 +1940,11 @@ impl Inner {
|
||||
|
||||
#[inline]
|
||||
fn inline_len(&self) -> usize {
|
||||
let p: &usize = unsafe { mem::transmute(&self.arc) };
|
||||
(p & INLINE_LEN_MASK) >> INLINE_LEN_OFFSET
|
||||
// This is undefind behavior due to a data race, but experimental
|
||||
// evidence shows that it works in practice (discussion:
|
||||
// https://internals.rust-lang.org/t/bit-wise-reasoning-for-atomic-accesses/8853).
|
||||
let p: *const usize = unsafe { mem::transmute(&self.arc) };
|
||||
(unsafe { *p } & INLINE_LEN_MASK) >> INLINE_LEN_OFFSET
|
||||
}
|
||||
|
||||
/// Set the length of the inline buffer. This is done by writing to the
|
||||
|
||||
Reference in New Issue
Block a user