about summary refs log tree commit diff
path: root/src/rustc/metadata
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-08-28 13:59:48 -0700
committerGraydon Hoare <graydon@mozilla.com>2012-08-28 14:50:39 -0700
commitb769e296803f578d99654e9fc271c4109e50ab75 (patch)
tree74d9b8b86fa4c3b2cda40218db61cc30cfd8402a /src/rustc/metadata
parent31bbcf026727cf69e2c4b756a6d2ddc584274056 (diff)
downloadrust-b769e296803f578d99654e9fc271c4109e50ab75.tar.gz
rust-b769e296803f578d99654e9fc271c4109e50ab75.zip
Compress metadata section. Seems a minor speed win, major space win.
Diffstat (limited to 'src/rustc/metadata')
-rw-r--r--src/rustc/metadata/encoder.rs2
-rw-r--r--src/rustc/metadata/loader.rs4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 5764e5ace59..cf8b0232392 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -1164,7 +1164,7 @@ fn encode_metadata(parms: encode_parms, crate: @crate) -> ~[u8] {
     // Pad this, since something (LLVM, presumably) is cutting off the
     // remaining % 4 bytes.
     buf_w.write(&[0u8, 0u8, 0u8, 0u8]);
-    io::mem_buffer_buf(buf)
+    flate::deflate_buf(io::mem_buffer_buf(buf))
 }
 
 // Get the encoded string for a type
diff --git a/src/rustc/metadata/loader.rs b/src/rustc/metadata/loader.rs
index 4ca9d8f9b86..b68e5cc1ce0 100644
--- a/src/rustc/metadata/loader.rs
+++ b/src/rustc/metadata/loader.rs
@@ -187,7 +187,9 @@ fn get_metadata_section(os: os,
             let csz = llvm::LLVMGetSectionSize(si.llsi) as uint;
             unsafe {
                 let cvbuf: *u8 = unsafe::reinterpret_cast(cbuf);
-                return Some(@vec::unsafe::from_buf(cvbuf, csz));
+                let v = vec::unsafe::from_buf(cvbuf, csz);
+                let inflated = flate::inflate_buf(v);
+                return Some(@inflated);
             }
         }
         llvm::LLVMMoveToNextSection(si.llsi);