From 689c71193ac2bac0366c917f38f3a553f12ff895 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 15 Aug 2018 20:21:59 +0200 Subject: [PATCH] remove cur_frame from memory (validation is gone, new validation will not need it) --- src/librustc_mir/interpret/eval_context.rs | 6 ------ src/librustc_mir/interpret/memory.rs | 8 -------- 2 files changed, 14 deletions(-) diff --git a/src/librustc_mir/interpret/eval_context.rs b/src/librustc_mir/interpret/eval_context.rs index 2ccd04370c8..3a1f0db227f 100644 --- a/src/librustc_mir/interpret/eval_context.rs +++ b/src/librustc_mir/interpret/eval_context.rs @@ -604,8 +604,6 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M } } - self.memory.cur_frame = self.cur_frame(); - if self.stack.len() > self.stack_limit { err!(StackFrameLimitReached) } else { @@ -619,10 +617,6 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M 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 { diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs index 461b98e4ff3..9cd82d84d7d 100644 --- a/src/librustc_mir/interpret/memory.rs +++ b/src/librustc_mir/interpret/memory.rs @@ -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, - /// The current stack frame. Used to check accesses against locks. - pub cur_frame: usize, - pub tcx: TyCtxtAt<'a, 'tcx, 'tcx>, } @@ -63,14 +60,12 @@ impl<'a, 'mir, 'tcx, M> PartialEq for Memory<'a, 'mir, 'tcx, M> 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 @@ impl<'a, 'mir, 'tcx, M> Hash for Memory<'a, 'mir, 'tcx, M> 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 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> { alloc_kind: FxHashMap::default(), alloc_map: FxHashMap::default(), tcx, - cur_frame: usize::max_value(), } }