Struct miri::concurrency::weak_memory::StoreBuffer
source · pub(super) struct StoreBuffer {
buffer: VecDeque<StoreElement>,
}
Fields§
§buffer: VecDeque<StoreElement>
Implementations§
source§impl<'tcx> StoreBuffer
impl<'tcx> StoreBuffer
fn new(init: Option<Scalar>) -> Self
sourcefn read_from_last_store(
&self,
global: &DataRaceState,
thread_mgr: &ThreadManager<'_>,
is_seqcst: bool,
)
fn read_from_last_store( &self, global: &DataRaceState, thread_mgr: &ThreadManager<'_>, is_seqcst: bool, )
Reads from the last store in modification order, if any.
fn buffered_read( &self, global: &DataRaceState, thread_mgr: &ThreadManager<'_>, is_seqcst: bool, rng: &mut (impl Rng + ?Sized), validate: impl FnOnce() -> InterpResult<'tcx>, ) -> InterpResult<'tcx, (Option<Scalar>, LoadRecency)>
fn buffered_write( &mut self, val: Scalar, global: &DataRaceState, thread_mgr: &ThreadManager<'_>, is_seqcst: bool, ) -> InterpResult<'tcx>
sourcefn fetch_store<R: Rng + ?Sized>(
&self,
is_seqcst: bool,
clocks: &ThreadClockSet,
rng: &mut R,
) -> (&StoreElement, LoadRecency)
fn fetch_store<R: Rng + ?Sized>( &self, is_seqcst: bool, clocks: &ThreadClockSet, rng: &mut R, ) -> (&StoreElement, LoadRecency)
Selects a valid store element in the buffer.
Trait Implementations§
source§impl Clone for StoreBuffer
impl Clone for StoreBuffer
source§fn clone(&self) -> StoreBuffer
fn clone(&self) -> StoreBuffer
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for StoreBuffer
impl Debug for StoreBuffer
source§impl PartialEq for StoreBuffer
impl PartialEq for StoreBuffer
impl Eq for StoreBuffer
impl StructuralPartialEq for StoreBuffer
Auto Trait Implementations§
impl Freeze for StoreBuffer
impl !RefUnwindSafe for StoreBuffer
impl !Send for StoreBuffer
impl !Sync for StoreBuffer
impl Unpin for StoreBuffer
impl UnwindSafe for StoreBuffer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 32 bytes