miri::borrow_tracker::stacked_borrows

Trait EvalContextPrivExt

Source
trait EvalContextPrivExt<'tcx, 'ecx>: MiriInterpCxExt<'tcx> {
    // Provided methods
    fn sb_reborrow(
        &mut self,
        place: &MPlaceTy<'tcx>,
        size: Size,
        new_perm: NewPermission,
        new_tag: BorTag,
        retag_info: RetagInfo,
    ) -> InterpResult<'tcx, Option<Provenance>> { ... }
    fn sb_retag_place(
        &mut self,
        place: &MPlaceTy<'tcx>,
        new_perm: NewPermission,
        info: RetagInfo,
    ) -> InterpResult<'tcx, MPlaceTy<'tcx>> { ... }
    fn sb_retag_reference(
        &mut self,
        val: &ImmTy<'tcx>,
        new_perm: NewPermission,
        info: RetagInfo,
    ) -> InterpResult<'tcx, ImmTy<'tcx>> { ... }
}

Provided Methods§

Source

fn sb_reborrow( &mut self, place: &MPlaceTy<'tcx>, size: Size, new_perm: NewPermission, new_tag: BorTag, retag_info: RetagInfo, ) -> InterpResult<'tcx, Option<Provenance>>

Returns the provenance that should be used henceforth.

Source

fn sb_retag_place( &mut self, place: &MPlaceTy<'tcx>, new_perm: NewPermission, info: RetagInfo, ) -> InterpResult<'tcx, MPlaceTy<'tcx>>

Source

fn sb_retag_reference( &mut self, val: &ImmTy<'tcx>, new_perm: NewPermission, info: RetagInfo, ) -> InterpResult<'tcx, ImmTy<'tcx>>

Retags an individual pointer, returning the retagged version. kind indicates what kind of reference is being created.

Implementors§

Source§

impl<'tcx, 'ecx> EvalContextPrivExt<'tcx, 'ecx> for MiriInterpCx<'tcx>

Retagging/reborrowing. There is some policy in here, such as which permissions to grant for which references, and when to add protectors.