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

Provided Methods§

source

fn sb_reborrow( &mut self, place: &MPlaceTy<'tcx, Provenance>, 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_reference( &mut self, val: &ImmTy<'tcx, Provenance>, new_perm: NewPermission, info: RetagInfo ) -> InterpResult<'tcx, ImmTy<'tcx, Provenance>>

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

Implementors§

source§

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

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