miri::borrow_tracker::stacked_borrows

Trait EvalContextExt

Source
pub trait EvalContextExt<'tcx>: MiriInterpCxExt<'tcx> {
    // Provided methods
    fn sb_retag_ptr_value(
        &mut self,
        kind: RetagKind,
        val: &ImmTy<'tcx>,
    ) -> InterpResult<'tcx, ImmTy<'tcx>> { ... }
    fn sb_retag_place_contents(
        &mut self,
        kind: RetagKind,
        place: &PlaceTy<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn sb_protect_place(
        &mut self,
        place: &MPlaceTy<'tcx>,
    ) -> InterpResult<'tcx, MPlaceTy<'tcx>> { ... }
    fn sb_expose_tag(
        &self,
        alloc_id: AllocId,
        tag: BorTag,
    ) -> InterpResult<'tcx> { ... }
    fn print_stacks(&mut self, alloc_id: AllocId) -> InterpResult<'tcx> { ... }
}

Provided Methods§

Source

fn sb_retag_ptr_value( &mut self, kind: RetagKind, val: &ImmTy<'tcx>, ) -> InterpResult<'tcx, ImmTy<'tcx>>

Source

fn sb_retag_place_contents( &mut self, kind: RetagKind, place: &PlaceTy<'tcx>, ) -> InterpResult<'tcx>

Source

fn sb_protect_place( &mut self, place: &MPlaceTy<'tcx>, ) -> InterpResult<'tcx, MPlaceTy<'tcx>>

Protect a place so that it cannot be used any more for the duration of the current function call.

This is used to ensure soundness of in-place function argument/return passing.

Source

fn sb_expose_tag(&self, alloc_id: AllocId, tag: BorTag) -> InterpResult<'tcx>

Mark the given tag as exposed. It was found on a pointer with the given AllocId.

Source

fn print_stacks(&mut self, alloc_id: AllocId) -> InterpResult<'tcx>

Implementors§

Source§

impl<'tcx> EvalContextExt<'tcx> for MiriInterpCx<'tcx>