rename some more types for consistency
This commit is contained in:
parent
595490e8dd
commit
b12ce552ff
@ -200,7 +200,7 @@ impl GlobalStateInner {
|
||||
FrameState { call_id, protected_tags: SmallVec::new() }
|
||||
}
|
||||
|
||||
pub fn end_call(&mut self, frame: &machine::FrameData<'_>) {
|
||||
pub fn end_call(&mut self, frame: &machine::FrameExtra<'_>) {
|
||||
for tag in &frame
|
||||
.borrow_tracker
|
||||
.as_ref()
|
||||
|
@ -59,7 +59,7 @@ use super::{
|
||||
weak_memory::EvalContextExt as _,
|
||||
};
|
||||
|
||||
pub type AllocExtra = VClockAlloc;
|
||||
pub type AllocState = VClockAlloc;
|
||||
|
||||
/// Valid atomic read-write orderings, alias of atomic::Ordering (not non-exhaustive).
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
||||
|
@ -113,7 +113,7 @@ pub struct Thread<'mir, 'tcx> {
|
||||
thread_name: Option<Vec<u8>>,
|
||||
|
||||
/// The virtual call stack.
|
||||
stack: Vec<Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>>,
|
||||
stack: Vec<Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>>,
|
||||
|
||||
/// The function to call when the stack ran empty, to figure out what to do next.
|
||||
/// Conceptually, this is the interpreter implementation of the things that happen 'after' the
|
||||
@ -232,7 +232,7 @@ impl VisitTags for Thread<'_, '_> {
|
||||
}
|
||||
}
|
||||
|
||||
impl VisitTags for Frame<'_, '_, Provenance, FrameData<'_>> {
|
||||
impl VisitTags for Frame<'_, '_, Provenance, FrameExtra<'_>> {
|
||||
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
|
||||
let Frame {
|
||||
return_place,
|
||||
@ -385,20 +385,20 @@ impl<'mir, 'tcx: 'mir> ThreadManager<'mir, 'tcx> {
|
||||
}
|
||||
|
||||
/// Borrow the stack of the active thread.
|
||||
pub fn active_thread_stack(&self) -> &[Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>] {
|
||||
pub fn active_thread_stack(&self) -> &[Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>] {
|
||||
&self.threads[self.active_thread].stack
|
||||
}
|
||||
|
||||
/// Mutably borrow the stack of the active thread.
|
||||
fn active_thread_stack_mut(
|
||||
&mut self,
|
||||
) -> &mut Vec<Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>> {
|
||||
) -> &mut Vec<Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>> {
|
||||
&mut self.threads[self.active_thread].stack
|
||||
}
|
||||
|
||||
pub fn all_stacks(
|
||||
&self,
|
||||
) -> impl Iterator<Item = &[Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>]> {
|
||||
) -> impl Iterator<Item = &[Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>]> {
|
||||
self.threads.iter().map(|t| &t.stack[..])
|
||||
}
|
||||
|
||||
@ -921,7 +921,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn active_thread_stack(&self) -> &[Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>] {
|
||||
fn active_thread_stack(&self) -> &[Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>] {
|
||||
let this = self.eval_context_ref();
|
||||
this.machine.threads.active_thread_stack()
|
||||
}
|
||||
@ -929,7 +929,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
||||
#[inline]
|
||||
fn active_thread_stack_mut(
|
||||
&mut self,
|
||||
) -> &mut Vec<Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>> {
|
||||
) -> &mut Vec<Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>> {
|
||||
let this = self.eval_context_mut();
|
||||
this.machine.threads.active_thread_stack_mut()
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ use super::{
|
||||
vector_clock::{VClock, VTimestamp, VectorIdx},
|
||||
};
|
||||
|
||||
pub type AllocExtra = StoreBufferAlloc;
|
||||
pub type AllocState = StoreBufferAlloc;
|
||||
|
||||
// Each store buffer must be bounded otherwise it will grow indefinitely.
|
||||
// However, bounding the store buffer means restricting the amount of weak
|
||||
|
@ -988,7 +988,7 @@ impl<'mir, 'tcx> MiriMachine<'mir, 'tcx> {
|
||||
self.stack()[frame_idx].current_span()
|
||||
}
|
||||
|
||||
fn stack(&self) -> &[Frame<'mir, 'tcx, Provenance, machine::FrameData<'tcx>>] {
|
||||
fn stack(&self) -> &[Frame<'mir, 'tcx, Provenance, machine::FrameExtra<'tcx>>] {
|
||||
self.threads.active_thread_stack()
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ pub use crate::eval::{
|
||||
pub use crate::helpers::EvalContextExt as _;
|
||||
pub use crate::intptrcast::ProvenanceMode;
|
||||
pub use crate::machine::{
|
||||
AllocExtra, FrameData, MiriInterpCx, MiriInterpCxExt, MiriMachine, MiriMemoryKind,
|
||||
AllocExtra, FrameExtra, MiriInterpCx, MiriInterpCxExt, MiriMachine, MiriMemoryKind,
|
||||
PrimitiveLayouts, Provenance, ProvenanceExtra, PAGE_SIZE, STACK_ADDR, STACK_SIZE,
|
||||
};
|
||||
pub use crate::mono_hash_map::MonoHashMap;
|
||||
|
@ -37,7 +37,7 @@ pub const STACK_ADDR: u64 = 32 * PAGE_SIZE; // not really about the "stack", but
|
||||
pub const STACK_SIZE: u64 = 16 * PAGE_SIZE; // whatever
|
||||
|
||||
/// Extra data stored with each stack frame
|
||||
pub struct FrameData<'tcx> {
|
||||
pub struct FrameExtra<'tcx> {
|
||||
/// Extra data for Stacked Borrows.
|
||||
pub borrow_tracker: Option<borrow_tracker::FrameState>,
|
||||
|
||||
@ -58,10 +58,10 @@ pub struct FrameData<'tcx> {
|
||||
pub is_user_relevant: bool,
|
||||
}
|
||||
|
||||
impl<'tcx> std::fmt::Debug for FrameData<'tcx> {
|
||||
impl<'tcx> std::fmt::Debug for FrameExtra<'tcx> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
// Omitting `timing`, it does not support `Debug`.
|
||||
let FrameData { borrow_tracker, catch_unwind, timing: _, is_user_relevant: _ } = self;
|
||||
let FrameExtra { borrow_tracker, catch_unwind, timing: _, is_user_relevant: _ } = self;
|
||||
f.debug_struct("FrameData")
|
||||
.field("borrow_tracker", borrow_tracker)
|
||||
.field("catch_unwind", catch_unwind)
|
||||
@ -69,9 +69,9 @@ impl<'tcx> std::fmt::Debug for FrameData<'tcx> {
|
||||
}
|
||||
}
|
||||
|
||||
impl VisitTags for FrameData<'_> {
|
||||
impl VisitTags for FrameExtra<'_> {
|
||||
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
|
||||
let FrameData { catch_unwind, borrow_tracker, timing: _, is_user_relevant: _ } = self;
|
||||
let FrameExtra { catch_unwind, borrow_tracker, timing: _, is_user_relevant: _ } = self;
|
||||
|
||||
catch_unwind.visit_tags(visit);
|
||||
borrow_tracker.visit_tags(visit);
|
||||
@ -258,10 +258,10 @@ pub struct AllocExtra {
|
||||
pub borrow_tracker: Option<borrow_tracker::AllocState>,
|
||||
/// Data race detection via the use of a vector-clock,
|
||||
/// this is only added if it is enabled.
|
||||
pub data_race: Option<data_race::AllocExtra>,
|
||||
pub data_race: Option<data_race::AllocState>,
|
||||
/// Weak memory emulation via the use of store buffers,
|
||||
/// this is only added if it is enabled.
|
||||
pub weak_memory: Option<weak_memory::AllocExtra>,
|
||||
pub weak_memory: Option<weak_memory::AllocState>,
|
||||
}
|
||||
|
||||
impl VisitTags for AllocExtra {
|
||||
@ -736,7 +736,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for MiriMachine<'mir, 'tcx> {
|
||||
type MemoryKind = MiriMemoryKind;
|
||||
type ExtraFnVal = Dlsym;
|
||||
|
||||
type FrameExtra = FrameData<'tcx>;
|
||||
type FrameExtra = FrameExtra<'tcx>;
|
||||
type AllocExtra = AllocExtra;
|
||||
|
||||
type Provenance = Provenance;
|
||||
@ -908,14 +908,14 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for MiriMachine<'mir, 'tcx> {
|
||||
.map(|bt| bt.borrow_mut().new_allocation(id, alloc.size(), kind, &ecx.machine));
|
||||
|
||||
let race_alloc = ecx.machine.data_race.as_ref().map(|data_race| {
|
||||
data_race::AllocExtra::new_allocation(
|
||||
data_race::AllocState::new_allocation(
|
||||
data_race,
|
||||
&ecx.machine.threads,
|
||||
alloc.size(),
|
||||
kind,
|
||||
)
|
||||
});
|
||||
let buffer_alloc = ecx.machine.weak_memory.then(weak_memory::AllocExtra::new_allocation);
|
||||
let buffer_alloc = ecx.machine.weak_memory.then(weak_memory::AllocState::new_allocation);
|
||||
let alloc: Allocation<Provenance, Self::AllocExtra> = alloc.adjust_from_tcx(
|
||||
&ecx.tcx,
|
||||
AllocExtra { borrow_tracker, data_race: race_alloc, weak_memory: buffer_alloc },
|
||||
@ -1070,7 +1070,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for MiriMachine<'mir, 'tcx> {
|
||||
fn init_frame_extra(
|
||||
ecx: &mut InterpCx<'mir, 'tcx, Self>,
|
||||
frame: Frame<'mir, 'tcx, Provenance>,
|
||||
) -> InterpResult<'tcx, Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>> {
|
||||
) -> InterpResult<'tcx, Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>> {
|
||||
// Start recording our event before doing anything else
|
||||
let timing = if let Some(profiler) = ecx.machine.profiler.as_ref() {
|
||||
let fn_name = frame.instance.to_string();
|
||||
@ -1088,7 +1088,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for MiriMachine<'mir, 'tcx> {
|
||||
|
||||
let borrow_tracker = ecx.machine.borrow_tracker.as_ref();
|
||||
|
||||
let extra = FrameData {
|
||||
let extra = FrameExtra {
|
||||
borrow_tracker: borrow_tracker.map(|bt| bt.borrow_mut().new_frame(&ecx.machine)),
|
||||
catch_unwind: None,
|
||||
timing,
|
||||
@ -1157,7 +1157,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for MiriMachine<'mir, 'tcx> {
|
||||
#[inline(always)]
|
||||
fn after_stack_pop(
|
||||
ecx: &mut InterpCx<'mir, 'tcx, Self>,
|
||||
mut frame: Frame<'mir, 'tcx, Provenance, FrameData<'tcx>>,
|
||||
mut frame: Frame<'mir, 'tcx, Provenance, FrameExtra<'tcx>>,
|
||||
unwinding: bool,
|
||||
) -> InterpResult<'tcx, StackPopJump> {
|
||||
if frame.extra.is_user_relevant {
|
||||
|
@ -125,7 +125,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
||||
|
||||
fn handle_stack_pop_unwind(
|
||||
&mut self,
|
||||
mut extra: FrameData<'tcx>,
|
||||
mut extra: FrameExtra<'tcx>,
|
||||
unwinding: bool,
|
||||
) -> InterpResult<'tcx, StackPopJump> {
|
||||
let this = self.eval_context_mut();
|
||||
|
Loading…
x
Reference in New Issue
Block a user