Skip to content

Commit 9556bea

Browse files
committed
rustc_metadata: use decoder::Metadata instead of &[u8] for Lazy<Table<T>>::get.
1 parent 7a43072 commit 9556bea

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/librustc_metadata/decoder.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ impl<'a, 'tcx> Metadata<'a, 'tcx> for (&'a CrateMetadata, TyCtxt<'a, 'tcx, 'tcx>
130130
}
131131

132132
impl<'a, 'tcx: 'a, T: Encodable + Decodable> Lazy<T> {
133-
pub fn decode<M: Metadata<'a, 'tcx>>(self, meta: M) -> T {
134-
let mut dcx = meta.decoder(self.position.get());
133+
pub fn decode<M: Metadata<'a, 'tcx>>(self, metadata: M) -> T {
134+
let mut dcx = metadata.decoder(self.position.get());
135135
dcx.lazy_state = LazyState::NodeStart(self.position);
136136
T::decode(&mut dcx).unwrap()
137137
}
@@ -140,9 +140,9 @@ impl<'a, 'tcx: 'a, T: Encodable + Decodable> Lazy<T> {
140140
impl<'a, 'tcx: 'a, T: Encodable + Decodable> Lazy<[T]> {
141141
pub fn decode<M: Metadata<'a, 'tcx>>(
142142
self,
143-
meta: M,
143+
metadata: M,
144144
) -> impl Iterator<Item = T> + Captures<'tcx> + 'a {
145-
let mut dcx = meta.decoder(self.position.get());
145+
let mut dcx = metadata.decoder(self.position.get());
146146
dcx.lazy_state = LazyState::NodeStart(self.position);
147147
(0..self.meta).map(move |_| T::decode(&mut dcx).unwrap())
148148
}
@@ -498,7 +498,7 @@ impl<'a, 'tcx> CrateMetadata {
498498

499499
fn maybe_entry(&self, item_id: DefIndex) -> Option<Lazy<Entry<'tcx>>> {
500500
assert!(!self.is_proc_macro(item_id));
501-
self.root.per_def.entry.get(self.blob.raw_bytes(), item_id)
501+
self.root.per_def.entry.get(self, item_id)
502502
}
503503

504504
fn entry(&self, item_id: DefIndex) -> Entry<'tcx> {

src/librustc_metadata/table.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::decoder::Metadata;
12
use crate::schema::*;
23

34
use rustc::hir::def_id::{DefId, DefIndex, DefIndexAddressSpace};
@@ -121,10 +122,14 @@ impl<T> LazyMeta for Table<T> where Option<T>: FixedSizeEncoding {
121122
impl<T> Lazy<Table<T>> where Option<T>: FixedSizeEncoding {
122123
/// Given the metadata, extract out the value at a particular index (if any).
123124
#[inline(never)]
124-
pub fn get(&self, bytes: &[u8], i: usize) -> Option<T> {
125+
pub fn get<'a, 'tcx, M: Metadata<'a, 'tcx>>(
126+
&self,
127+
metadata: M,
128+
i: usize,
129+
) -> Option<T> {
125130
debug!("Table::lookup: index={:?} len={:?}", i, self.meta);
126131

127-
let bytes = &bytes[self.position.get()..][..self.meta];
132+
let bytes = &metadata.raw_bytes()[self.position.get()..][..self.meta];
128133
<Option<T>>::from_bytes(&bytes[i * <Option<T>>::BYTE_LEN..])
129134
}
130135
}
@@ -183,8 +188,12 @@ impl<T> Lazy<PerDefTable<T>> where Option<T>: FixedSizeEncoding {
183188

184189
/// Given the metadata, extract out the value at a particular DefIndex (if any).
185190
#[inline(never)]
186-
pub fn get(&self, bytes: &[u8], def_index: DefIndex) -> Option<T> {
191+
pub fn get<'a, 'tcx, M: Metadata<'a, 'tcx>>(
192+
&self,
193+
metadata: M,
194+
def_index: DefIndex,
195+
) -> Option<T> {
187196
self.table_for_space(def_index.address_space())
188-
.get(bytes, def_index.as_array_index())
197+
.get(metadata, def_index.as_array_index())
189198
}
190199
}

0 commit comments

Comments
 (0)