pub(super) trait EvalContextExt<'mir, 'tcx: 'mir>: MiriEvalContextExt<'mir, 'tcx> {
    fn validate_overlapping_atomic(
        &self,
        place: &MPlaceTy<'tcx, Tag>
    ) -> InterpResult<'tcx> { ... } fn buffered_atomic_rmw(
        &mut self,
        new_val: ScalarMaybeUninit<Tag>,
        place: &MPlaceTy<'tcx, Tag>,
        atomic: AtomicRwOrd,
        init: ScalarMaybeUninit<Tag>
    ) -> InterpResult<'tcx> { ... } fn buffered_atomic_read(
        &self,
        place: &MPlaceTy<'tcx, Tag>,
        atomic: AtomicReadOrd,
        latest_in_mo: ScalarMaybeUninit<Tag>,
        validate: impl FnOnce() -> InterpResult<'tcx>
    ) -> InterpResult<'tcx, ScalarMaybeUninit<Tag>> { ... } fn buffered_atomic_write(
        &mut self,
        val: ScalarMaybeUninit<Tag>,
        dest: &MPlaceTy<'tcx, Tag>,
        atomic: AtomicWriteOrd,
        init: ScalarMaybeUninit<Tag>
    ) -> InterpResult<'tcx> { ... } fn perform_read_on_buffered_latest(
        &self,
        place: &MPlaceTy<'tcx, Tag>,
        atomic: AtomicReadOrd,
        init: ScalarMaybeUninit<Tag>
    ) -> 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