pub(super) trait EvalContextExt<'mir, 'tcx: 'mir>: MiriInterpCxExt<'mir, 'tcx> {
    // Provided methods
    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§

source

fn validate_overlapping_atomic( &self, place: &MPlaceTy<'tcx, Provenance> ) -> InterpResult<'tcx>

source

fn buffered_atomic_rmw( &mut self, new_val: Scalar<Provenance>, place: &MPlaceTy<'tcx, Provenance>, atomic: AtomicRwOrd, init: Scalar<Provenance> ) -> InterpResult<'tcx>

source

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>>

source

fn buffered_atomic_write( &mut self, val: Scalar<Provenance>, dest: &MPlaceTy<'tcx, Provenance>, atomic: AtomicWriteOrd, init: Scalar<Provenance> ) -> InterpResult<'tcx>

source

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

Implementors§

source§

impl<'mir, 'tcx: 'mir> EvalContextExt<'mir, 'tcx> for MiriInterpCx<'mir, 'tcx>