about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOliver Schneider <github35764891676564198441@oli-obk.de>2018-05-21 00:46:06 +0200
committerOliver Schneider <github35764891676564198441@oli-obk.de>2018-05-24 20:48:54 +0200
commit3bbf2fd7159e5be5aee8d5c4e11f855862283d26 (patch)
treea30e0236fc591f22df27ffac2b54afe3ae9e563b /src
parentd7324631aed90a5a4182c1eac8f2670f586fb3b3 (diff)
downloadrust-3bbf2fd7159e5be5aee8d5c4e11f855862283d26.tar.gz
rust-3bbf2fd7159e5be5aee8d5c4e11f855862283d26.zip
Remove Pointer::zero in favor of Pointer::from
Diffstat (limited to 'src')
-rw-r--r--src/librustc/mir/interpret/mod.rs11
-rw-r--r--src/librustc_mir/hair/cx/mod.rs6
-rw-r--r--src/librustc_mir/hair/pattern/mod.rs6
-rw-r--r--src/librustc_mir/interpret/eval_context.rs3
-rw-r--r--src/librustc_mir/interpret/memory.rs9
-rw-r--r--src/librustc_mir/interpret/place.rs2
6 files changed, 16 insertions, 21 deletions
diff --git a/src/librustc/mir/interpret/mod.rs b/src/librustc/mir/interpret/mod.rs
index 397e4fdc940..a44729f2c59 100644
--- a/src/librustc/mir/interpret/mod.rs
+++ b/src/librustc/mir/interpret/mod.rs
@@ -115,15 +115,18 @@ pub struct Pointer {
     pub offset: Size,
 }
 
+/// Produces a `Pointer` which points to the beginning of the Allocation
+impl From<AllocId> for Pointer {
+    fn from(alloc_id: AllocId) -> Self {
+        Pointer::new(alloc_id, Size::ZERO)
+    }
+}
+
 impl<'tcx> Pointer {
     pub fn new(alloc_id: AllocId, offset: Size) -> Self {
         Pointer { alloc_id, offset }
     }
 
-    pub fn zero(alloc_id: AllocId) -> Self {
-        Pointer::new(alloc_id, Size::ZERO)
-    }
-
     pub(crate) fn wrapping_signed_offset<C: HasDataLayout>(self, i: i64, cx: C) -> Self {
         Pointer::new(
             self.alloc_id,
diff --git a/src/librustc_mir/hair/cx/mod.rs b/src/librustc_mir/hair/cx/mod.rs
index f633320e650..562e4cec6b8 100644
--- a/src/librustc_mir/hair/cx/mod.rs
+++ b/src/librustc_mir/hair/cx/mod.rs
@@ -182,16 +182,14 @@ impl<'a, 'gcx, 'tcx> Cx<'a, 'gcx, 'tcx> {
             LitKind::Str(ref s, _) => {
                 let s = s.as_str();
                 let id = self.tcx.allocate_bytes(s.as_bytes());
-                let ptr = Pointer::zero(id);
                 ConstValue::ScalarPair(
-                    Scalar::Ptr(ptr),
+                    Scalar::Ptr(id.into()),
                     Scalar::from_u128(s.len() as u128),
                 )
             },
             LitKind::ByteStr(ref data) => {
                 let id = self.tcx.allocate_bytes(data);
-                let ptr = Pointer::zero(id);
-                ConstValue::Scalar(ptr.into())
+                ConstValue::Scalar(Scalar::Ptr(id.into()))
             },
             LitKind::Byte(n) => ConstValue::Scalar(Scalar::Bytes(n as u128)),
             LitKind::Int(n, _) if neg => {
diff --git a/src/librustc_mir/hair/pattern/mod.rs b/src/librustc_mir/hair/pattern/mod.rs
index 21728685230..e387a4fa61b 100644
--- a/src/librustc_mir/hair/pattern/mod.rs
+++ b/src/librustc_mir/hair/pattern/mod.rs
@@ -1128,16 +1128,14 @@ fn lit_to_const<'a, 'tcx>(lit: &'tcx ast::LitKind,
         LitKind::Str(ref s, _) => {
             let s = s.as_str();
             let id = tcx.allocate_bytes(s.as_bytes());
-            let ptr = Pointer::zero(id);
             ConstValue::ScalarPair(
-                Scalar::Ptr(ptr),
+                Scalar::Ptr(id.into()),
                 Scalar::from_u128(s.len() as u128),
             )
         },
         LitKind::ByteStr(ref data) => {
             let id = tcx.allocate_bytes(data);
-            let ptr = Pointer::zero(id);
-            ConstValue::Scalar(ptr.into())
+            ConstValue::Scalar(Scalar::Ptr(id.into()))
         },
         LitKind::Byte(n) => ConstValue::Scalar(Scalar::Bytes(n as u128)),
         LitKind::Int(n, _) => {
diff --git a/src/librustc_mir/interpret/eval_context.rs b/src/librustc_mir/interpret/eval_context.rs
index 2d14b817b8d..40d997126c8 100644
--- a/src/librustc_mir/interpret/eval_context.rs
+++ b/src/librustc_mir/interpret/eval_context.rs
@@ -1019,8 +1019,7 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M
                 .lock()
                 .intern_static(gid.instance.def_id());
             let layout = self.layout_of(ty)?;
-            let ptr = Pointer::zero(alloc_id);
-            return Ok(Value::ByRef(ptr.into(), layout.align))
+            return Ok(Value::ByRef(Scalar::Ptr(alloc_id.into()), layout.align))
         }
         let cv = self.const_eval(gid)?;
         self.const_to_value(&cv.val, ty)
diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs
index 9278b08dff8..a929459f9bd 100644
--- a/src/librustc_mir/interpret/memory.rs
+++ b/src/librustc_mir/interpret/memory.rs
@@ -72,13 +72,11 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> {
     }
 
     pub fn create_fn_alloc(&mut self, instance: Instance<'tcx>) -> Pointer {
-        let id = self.tcx.alloc_map.lock().create_fn_alloc(instance);
-        Pointer::zero(id)
+        self.tcx.alloc_map.lock().create_fn_alloc(instance).into()
     }
 
     pub fn allocate_bytes(&mut self, bytes: &[u8]) -> Pointer {
-        let id = self.tcx.allocate_bytes(bytes);
-        Pointer::zero(id)
+        self.tcx.allocate_bytes(bytes).into()
     }
 
     /// kind is `None` for statics
@@ -109,8 +107,7 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> {
         align: Align,
         kind: Option<MemoryKind<M::MemoryKinds>>,
     ) -> EvalResult<'tcx, Pointer> {
-        let id = self.allocate_value(Allocation::undef(size, align), kind)?;
-        Ok(Pointer::zero(id))
+        self.allocate_value(Allocation::undef(size, align), kind).map(Pointer::from)
     }
 
     pub fn reallocate(
diff --git a/src/librustc_mir/interpret/place.rs b/src/librustc_mir/interpret/place.rs
index 1c630491a9c..9d51fcce7c7 100644
--- a/src/librustc_mir/interpret/place.rs
+++ b/src/librustc_mir/interpret/place.rs
@@ -210,7 +210,7 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> {
                 };
                 let alloc = Machine::init_static(self, cid)?;
                 Place::Ptr {
-                    ptr: Pointer::zero(alloc).into(),
+                    ptr: Scalar::Ptr(alloc.into()),
                     align: layout.align,
                     extra: PlaceExtra::None,
                 }