Trait miri::concurrency::weak_memory::EvalContextExt
source · pub(super) trait EvalContextExt<'mir, 'tcx: 'mir>: MiriEvalContextExt<'mir, 'tcx> {
fn validate_overlapping_atomic(
&self,
place: &MPlaceTy<'tcx, Provenance>
) -> InterpResult<'tcx> { ... }
fn buffered_atomic_rmw(
&mut self,
new_val: Scalar<Provenance>,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicRwOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx> { ... }
fn buffered_atomic_read(
&self,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicReadOrd,
latest_in_mo: Scalar<Provenance>,
validate: impl FnOnce() -> InterpResult<'tcx>
) -> InterpResult<'tcx, Scalar<Provenance>> { ... }
fn buffered_atomic_write(
&mut self,
val: Scalar<Provenance>,
dest: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicWriteOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx> { ... }
fn perform_read_on_buffered_latest(
&self,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicReadOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx> { ... }
}
Provided Methods
sourcefn validate_overlapping_atomic(
fn validate_overlapping_atomic(
&self,
place: &MPlaceTy<'tcx, Provenance>
) -> InterpResult<'tcx>
sourcefn buffered_atomic_rmw(
fn buffered_atomic_rmw(
&mut self,
new_val: Scalar<Provenance>,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicRwOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx>
sourcefn buffered_atomic_read(
fn buffered_atomic_read(
&self,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicReadOrd,
latest_in_mo: Scalar<Provenance>,
validate: impl FnOnce() -> InterpResult<'tcx>
) -> InterpResult<'tcx, Scalar<Provenance>>
sourcefn buffered_atomic_write(
fn buffered_atomic_write(
&mut self,
val: Scalar<Provenance>,
dest: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicWriteOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx>
sourcefn perform_read_on_buffered_latest(
&self,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicReadOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx>
fn perform_read_on_buffered_latest(
&self,
place: &MPlaceTy<'tcx, Provenance>,
atomic: AtomicReadOrd,
init: Scalar<Provenance>
) -> InterpResult<'tcx>
Caller should never need to consult the store buffer for the latest value. This function is used exclusively for failed atomic_compare_exchange_scalar to perform load_impl on the latest store element