about summary refs log tree commit diff
path: root/src/librustc_metadata/decoder.rs
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo.net>2015-12-25 13:59:02 -0500
committerMichael Woerister <michaelwoerister@posteo.net>2015-12-28 12:15:44 -0500
commitfa2a7411e403ec31b426c339c9950af8a1037995 (patch)
tree6cac70777036907baec037cdcd5c470ab2e1834e /src/librustc_metadata/decoder.rs
parent89753077fc25abb9d04d24a2b2b73984854f7c3a (diff)
downloadrust-fa2a7411e403ec31b426c339c9950af8a1037995.tar.gz
rust-fa2a7411e403ec31b426c339c9950af8a1037995.zip
Use a more efficient encoding for opaque data in RBML.
Diffstat (limited to 'src/librustc_metadata/decoder.rs')
-rw-r--r--src/librustc_metadata/decoder.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 8126970759e..40b19627795 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -833,9 +833,11 @@ pub fn maybe_get_item_mir<'tcx>(cdata: Cmd,
         };
         let mut decoder = reader::Decoder::new(mir_doc);
 
-        let mut mir = tls::enter_decoding_context(&dcx, &mut decoder, |_, decoder| {
-            Decodable::decode(decoder).unwrap()
-        });
+        let mut mir = decoder.read_opaque(|opaque_decoder, _| {
+            tls::enter_decoding_context(&dcx, opaque_decoder, |_, opaque_decoder| {
+                Decodable::decode(opaque_decoder)
+            })
+        }).unwrap();
 
         let mut def_id_and_span_translator = MirDefIdAndSpanTranslator {
             crate_metadata: cdata,
@@ -1643,7 +1645,9 @@ pub fn get_imported_filemaps(metadata: &[u8]) -> Vec<codemap::FileMap> {
 
     reader::tagged_docs(cm_doc, tag_codemap_filemap).map(|filemap_doc| {
         let mut decoder = reader::Decoder::new(filemap_doc);
-        Decodable::decode(&mut decoder).unwrap()
+        decoder.read_opaque(|opaque_decoder, _| {
+            Decodable::decode(opaque_decoder)
+        }).unwrap()
     }).collect()
 }