]> git.lizzy.rs Git - rust.git/commitdiff
Move undef mask methods from `Memory` to `Allocation`
authorOliver Scherer <github35764891676564198441@oli-obk.de>
Mon, 12 Nov 2018 07:35:32 +0000 (08:35 +0100)
committerOliver Scherer <github35764891676564198441@oli-obk.de>
Sat, 24 Nov 2018 10:36:31 +0000 (11:36 +0100)
src/librustc/mir/interpret/allocation.rs
src/librustc_mir/interpret/memory.rs

index 2334ca2f91a9a956f7e78549b5f242ef1af7fe70..ad4bf415b8de044db644c6e07b78f1b6fb17e781 100644 (file)
@@ -206,6 +206,39 @@ fn check_relocation_edges(&self, ptr: Pointer<M::PointerTag>, size: Size) -> Eva
     }
 }
 
+
+/// Undefined bytes
+impl<'tcx, Tag, Extra> Allocation<Tag, Extra> {
+    /// Checks that a range of bytes is defined. If not, returns the `ReadUndefBytes`
+    /// error which will report the first byte which is undefined.
+    #[inline]
+    fn check_defined(&self, ptr: Pointer<M::PointerTag>, size: Size) -> EvalResult<'tcx> {
+        let alloc = self.get(ptr.alloc_id)?;
+        alloc.undef_mask.is_range_defined(
+            ptr.offset,
+            ptr.offset + size,
+        ).or_else(|idx| err!(ReadUndefBytes(idx)))
+    }
+
+    pub fn mark_definedness(
+        &mut self,
+        ptr: Pointer<M::PointerTag>,
+        size: Size,
+        new_state: bool,
+    ) -> EvalResult<'tcx> {
+        if size.bytes() == 0 {
+            return Ok(());
+        }
+        let alloc = self.get_mut(ptr.alloc_id)?;
+        alloc.undef_mask.set_range(
+            ptr.offset,
+            ptr.offset + size,
+            new_state,
+        );
+        Ok(())
+    }
+}
+
 pub trait AllocationExtra<Tag>: ::std::fmt::Debug + Default + Clone {
     /// Hook for performing extra checks on a memory read access.
     ///
index cb52e595e02be9625c2ba2e657257936453a54b7..d8ae107a22b563bd1cabdafdbea12ef87853f8f0 100644 (file)
@@ -984,33 +984,4 @@ fn copy_undef_mask(
 
         Ok(())
     }
-
-    /// Checks that a range of bytes is defined. If not, returns the `ReadUndefBytes`
-    /// error which will report the first byte which is undefined.
-    #[inline]
-    fn check_defined(&self, ptr: Pointer<M::PointerTag>, size: Size) -> EvalResult<'tcx> {
-        let alloc = self.get(ptr.alloc_id)?;
-        alloc.undef_mask.is_range_defined(
-            ptr.offset,
-            ptr.offset + size,
-        ).or_else(|idx| err!(ReadUndefBytes(idx)))
-    }
-
-    pub fn mark_definedness(
-        &mut self,
-        ptr: Pointer<M::PointerTag>,
-        size: Size,
-        new_state: bool,
-    ) -> EvalResult<'tcx> {
-        if size.bytes() == 0 {
-            return Ok(());
-        }
-        let alloc = self.get_mut(ptr.alloc_id)?;
-        alloc.undef_mask.set_range(
-            ptr.offset,
-            ptr.offset + size,
-            new_state,
-        );
-        Ok(())
-    }
 }