about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2019-05-22 13:46:14 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2019-10-15 18:23:50 +0300
commite505857914795dd2171acb4193a010f9d09ebc7c (patch)
treef07bb97d4611ebd902f4307a1e2ed04b0144ea2e
parent437ca55f23b7ed0051334a7e38ecabd83a173b53 (diff)
downloadrust-e505857914795dd2171acb4193a010f9d09ebc7c.tar.gz
rust-e505857914795dd2171acb4193a010f9d09ebc7c.zip
rustc_metadata: remove now-redundant length from the start of the encoding.
-rw-r--r--src/librustc_metadata/index.rs10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/librustc_metadata/index.rs b/src/librustc_metadata/index.rs
index 037f9d35630..8db7a51700b 100644
--- a/src/librustc_metadata/index.rs
+++ b/src/librustc_metadata/index.rs
@@ -110,12 +110,8 @@ impl Index<'tcx> {
 
     crate fn write_index(&self, buf: &mut Encoder) -> Lazy<[Self]> {
         let pos = buf.position();
-
-        // First we write the length of the lower range ...
-        buf.emit_raw_bytes(&(self.positions.len() as u32 / 4).to_le_bytes());
-        // ... then the values.
         buf.emit_raw_bytes(&self.positions);
-        Lazy::from_position_and_meta(pos as usize, self.positions.len() / 4 + 1)
+        Lazy::from_position_and_meta(pos as usize, self.positions.len() / 4)
     }
 }
 
@@ -124,12 +120,12 @@ impl Lazy<[Index<'tcx>]> {
     /// DefIndex (if any).
     #[inline(never)]
     crate fn lookup(&self, bytes: &[u8], def_index: DefIndex) -> Option<Lazy<Entry<'tcx>>> {
-        let bytes = &bytes[self.position..];
         debug!("Index::lookup: index={:?} len={:?}",
                def_index,
                self.meta);
 
-        let position = u32::read_from_bytes_at(bytes, 1 + def_index.index());
+        let bytes = &bytes[self.position..][..self.meta * 4];
+        let position = u32::read_from_bytes_at(bytes, def_index.index());
         if position == u32::MAX {
             debug!("Index::lookup: position=u32::MAX");
             None