提交 689c7119 编写于 作者: R Ralf Jung

remove cur_frame from memory (validation is gone, new validation will not need it)

上级 7483ea81
......@@ -604,8 +604,6 @@ pub fn push_stack_frame(
}
}
self.memory.cur_frame = self.cur_frame();
if self.stack.len() > self.stack_limit {
err!(StackFrameLimitReached)
} else {
......@@ -619,10 +617,6 @@ pub(super) fn pop_stack_frame(&mut self) -> EvalResult<'tcx> {
let frame = self.stack.pop().expect(
"tried to pop a stack frame, but there were none",
);
if !self.stack.is_empty() {
// TODO: Is this the correct time to start considering these accesses as originating from the returned-to stack frame?
self.memory.cur_frame = self.cur_frame();
}
match frame.return_to_block {
StackPopCleanup::MarkStatic(mutable) => {
if let Place::Ptr(MemPlace { ptr, .. }) = frame.return_place {
......
......@@ -43,9 +43,6 @@ pub struct Memory<'a, 'mir, 'tcx: 'a + 'mir, M: Machine<'mir, 'tcx>> {
/// Actual memory allocations (arbitrary bytes, may contain pointers into other allocations).
alloc_map: FxHashMap<AllocId, Allocation>,
/// The current stack frame. Used to check accesses against locks.
pub cur_frame: usize,
pub tcx: TyCtxtAt<'a, 'tcx, 'tcx>,
}
......@@ -63,14 +60,12 @@ fn eq(&self, other: &Self) -> bool {
data,
alloc_kind,
alloc_map,
cur_frame,
tcx: _,
} = self;
*data == other.data
&& *alloc_kind == other.alloc_kind
&& *alloc_map == other.alloc_map
&& *cur_frame == other.cur_frame
}
}
......@@ -83,12 +78,10 @@ fn hash<H: Hasher>(&self, state: &mut H) {
data,
alloc_kind: _,
alloc_map: _,
cur_frame,
tcx: _,
} = self;
data.hash(state);
cur_frame.hash(state);
// We ignore some fields which don't change between evaluation steps.
......@@ -114,7 +107,6 @@ pub fn new(tcx: TyCtxtAt<'a, 'tcx, 'tcx>, data: M::MemoryData) -> Self {
alloc_kind: FxHashMap::default(),
alloc_map: FxHashMap::default(),
tcx,
cur_frame: usize::max_value(),
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册