pub trait EvalContextExt<'mir, 'tcx: 'mir>: MiriInterpCxExt<'mir, 'tcx> {
    // Provided methods
    fn tb_retag_ptr_value(
        &mut self,
        kind: RetagKind,
        val: &ImmTy<'tcx, Provenance>
    ) -> InterpResult<'tcx, ImmTy<'tcx, Provenance>> { ... }
    fn tb_retag_place_contents(
        &mut self,
        kind: RetagKind,
        place: &PlaceTy<'tcx, Provenance>
    ) -> InterpResult<'tcx> { ... }
    fn tb_protect_place(
        &mut self,
        place: &MPlaceTy<'tcx, Provenance>
    ) -> InterpResult<'tcx, MPlaceTy<'tcx, Provenance>> { ... }
    fn tb_expose_tag(
        &mut self,
        alloc_id: AllocId,
        tag: BorTag
    ) -> InterpResult<'tcx> { ... }
    fn print_tree(
        &mut self,
        alloc_id: AllocId,
        show_unnamed: bool
    ) -> InterpResult<'tcx> { ... }
    fn tb_give_pointer_debug_name(
        &mut self,
        ptr: Pointer<Option<Provenance>>,
        nth_parent: u8,
        name: &str
    ) -> InterpResult<'tcx> { ... }
}

Provided Methods§

source

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

Retag a pointer. References are passed to from_ref_ty and raw pointers are never reborrowed.

source

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

Retag all pointers that are stored in this place.

source

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

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 tb_expose_tag( &mut 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_tree( &mut self, alloc_id: AllocId, show_unnamed: bool ) -> InterpResult<'tcx>

Display the tree.

source

fn tb_give_pointer_debug_name( &mut self, ptr: Pointer<Option<Provenance>>, nth_parent: u8, name: &str ) -> InterpResult<'tcx>

Give a name to the pointer, usually the name it has in the source code (for debugging). The name given is name and the pointer that receives it is the nth_parent of ptr (with 0 representing ptr itself)

Implementors§

source§

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