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

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

Implementors