Trait miri::stacked_borrows::EvalContextExt
source · [−]pub trait EvalContextExt<'mir, 'tcx: 'mir>: MiriEvalContextExt<'mir, 'tcx> {
fn retag(
&mut self,
kind: RetagKind,
place: &PlaceTy<'tcx, Provenance>
) -> InterpResult<'tcx> { ... }
fn retag_return_place(&mut self) -> InterpResult<'tcx> { ... }
fn expose_tag(&mut self, alloc_id: AllocId, tag: SbTag) -> InterpResult<'tcx> { ... }
}
Provided Methods
sourcefn retag(
fn retag(
&mut self,
kind: RetagKind,
place: &PlaceTy<'tcx, Provenance>
) -> InterpResult<'tcx>
sourcefn retag_return_place(&mut self) -> InterpResult<'tcx>
fn retag_return_place(&mut self) -> InterpResult<'tcx>
After a stack frame got pushed, retag the return place so that we are sure it does not alias with anything.
This is a HACK because there is nothing in MIR that would make the retag explicit. Also see https://github.com/rust-lang/rust/issues/71117.
sourcefn expose_tag(&mut self, alloc_id: AllocId, tag: SbTag) -> InterpResult<'tcx>
fn expose_tag(&mut self, alloc_id: AllocId, tag: SbTag) -> InterpResult<'tcx>
Mark the given tag as exposed. It was found on a pointer with the given AllocId.