]> git.lizzy.rs Git - rust.git/commitdiff
remove cur_frame from memory (validation is gone, new validation will not need it)
authorRalf Jung <post@ralfj.de>
Wed, 15 Aug 2018 18:21:59 +0000 (20:21 +0200)
committerRalf Jung <post@ralfj.de>
Wed, 22 Aug 2018 07:06:28 +0000 (09:06 +0200)
src/librustc_mir/interpret/eval_context.rs
src/librustc_mir/interpret/memory.rs

index 2ccd04370c8b41bb42169931d6a40ad9ee123ed3..3a1f0db227f733813575c80b790e3c340a72aa20 100644 (file)
@@ -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 {
index 461b98e4ff39e1b8dbfb82726a6d8078ecbb30ff..9cd82d84d7d03d25c55d6064d4b46d7122f87559 100644 (file)
@@ -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(),
         }
     }