Struct miri::machine::FrameExtra
source · pub struct FrameExtra<'tcx> {
pub borrow_tracker: Option<FrameState>,
pub catch_unwind: Option<CatchUnwindData<'tcx>>,
pub timing: Option<DetachedTiming>,
pub is_user_relevant: bool,
salt: usize,
}
Expand description
Extra data stored with each stack frame
Fields§
§borrow_tracker: Option<FrameState>
Extra data for the Borrow Tracker.
catch_unwind: Option<CatchUnwindData<'tcx>>
If this is Some(), then this is a special “catch unwind” frame (the frame of try_fn
called by try
). When this frame is popped during unwinding a panic,
we stop unwinding, use the CatchUnwindData
to handle catching.
timing: Option<DetachedTiming>
If measureme
profiling is enabled, holds timing information
for the start of this frame. When we finish executing this frame,
we use this to register a completed event with measureme
.
is_user_relevant: bool
Indicates whether a Frame
is part of a workspace-local crate and is also not
#[track_caller]
. We compute this once on creation and store the result, as an
optimization.
This is used by MiriMachine::current_span
and MiriMachine::caller_span
salt: usize
We have a cache for the mapping from mir::Const
to resulting AllocId
.
However, we don’t want all frames to always get the same result, so we insert
an additional bit of “salt” into the cache key. This salt is fixed per-frame
so that within a call, a const will have a stable address.
Trait Implementations§
source§impl<'tcx> Debug for FrameExtra<'tcx>
impl<'tcx> Debug for FrameExtra<'tcx>
source§impl VisitProvenance for FrameExtra<'_>
impl VisitProvenance for FrameExtra<'_>
fn visit_provenance(&self, visit: &mut VisitWith<'_>)
Auto Trait Implementations§
impl<'tcx> Freeze for FrameExtra<'tcx>
impl<'tcx> !RefUnwindSafe for FrameExtra<'tcx>
impl<'tcx> Send for FrameExtra<'tcx>
impl<'tcx> Sync for FrameExtra<'tcx>
impl<'tcx> Unpin for FrameExtra<'tcx>
impl<'tcx> !UnwindSafe for FrameExtra<'tcx>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 312 bytes