Skip to content

Commit a1f180b

Browse files
committed
Auto merge of #43147 - oyvindln:deflate_fix, r=alexcrichton
Use similar compression settings as before updating to use flate2 Fixes #42879 (My first PR to rust-lang yay) This changes the compression settings back to how they were before the change to use the flate2 crate rather than the in-tree flate library. The specific changes are to use the `Fast` compression level (which should be equivialent to what was used before), and use a raw deflate stream rather than wrapping the stream in a zlib wrapper. The [zlib](https://tools.ietf.org/html/rfc1950) wrapper adds an extra 2 bytes of header data, and 4 bytes for a checksum at the end. The change to use a faster compression level did give some compile speedups in the past (see #37298). Having to calculate a checksum also added a small overhead, which didn't exist before the change to flate2. r? @alexcrichton
2 parents 1999bfa + 37f56a2 commit a1f180b

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

src/librustc_metadata/locator.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ use std::io::{self, Read};
242242
use std::path::{Path, PathBuf};
243243
use std::time::Instant;
244244

245-
use flate2::read::ZlibDecoder;
245+
use flate2::read::DeflateDecoder;
246246
use owning_ref::{ErasedBoxRef, OwningRef};
247247

248248
pub struct CrateMismatch {
@@ -862,7 +862,7 @@ fn get_metadata_section_imp(target: &Target,
862862
let compressed_bytes = &buf[header_len..];
863863
debug!("inflating {} bytes of compressed metadata", compressed_bytes.len());
864864
let mut inflated = Vec::new();
865-
match ZlibDecoder::new(compressed_bytes).read_to_end(&mut inflated) {
865+
match DeflateDecoder::new(compressed_bytes).read_to_end(&mut inflated) {
866866
Ok(_) => {
867867
let buf = unsafe { OwningRef::new_assert_stable_address(inflated) };
868868
buf.map_owner_box().erase_owner()

src/librustc_trans/back/link.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use std::path::{Path, PathBuf};
4343
use std::process::Command;
4444
use std::str;
4545
use flate2::Compression;
46-
use flate2::write::ZlibEncoder;
46+
use flate2::write::DeflateEncoder;
4747
use syntax::ast;
4848
use syntax::attr;
4949
use syntax_pos::Span;
@@ -622,7 +622,7 @@ fn link_rlib<'a>(sess: &'a Session,
622622
}
623623

624624
let mut bc_data_deflated = Vec::new();
625-
ZlibEncoder::new(&mut bc_data_deflated, Compression::Default)
625+
DeflateEncoder::new(&mut bc_data_deflated, Compression::Fast)
626626
.write_all(&bc_data).unwrap();
627627

628628
let mut bc_file_deflated = match fs::File::create(&bc_deflated_filename) {

src/librustc_trans/back/lto.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rustc::hir::def_id::LOCAL_CRATE;
2222
use back::write::{ModuleConfig, with_llvm_pmb, CodegenContext};
2323

2424
use libc;
25-
use flate2::read::ZlibDecoder;
25+
use flate2::read::DeflateDecoder;
2626

2727
use std::io::Read;
2828
use std::ffi::CString;
@@ -111,7 +111,7 @@ pub fn run(cgcx: &CodegenContext,
111111
(link::RLIB_BYTECODE_OBJECT_V1_DATA_OFFSET + data_size as usize)];
112112

113113
let mut inflated = Vec::new();
114-
let res = ZlibDecoder::new(compressed_data)
114+
let res = DeflateDecoder::new(compressed_data)
115115
.read_to_end(&mut inflated);
116116
if res.is_err() {
117117
let msg = format!("failed to decompress bc of `{}`",
@@ -131,7 +131,7 @@ pub fn run(cgcx: &CodegenContext,
131131
// simply inflate everything and let LLVM decide if it can
132132
// make sense of it
133133
let mut inflated = Vec::new();
134-
let res = ZlibDecoder::new(bc_encoded)
134+
let res = DeflateDecoder::new(bc_encoded)
135135
.read_to_end(&mut inflated);
136136
if res.is_err() {
137137
let msg = format!("failed to decompress bc of `{}`",

src/librustc_trans/base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ fn write_metadata<'a, 'gcx>(tcx: TyCtxt<'a, 'gcx, 'gcx>,
730730
-> (ContextRef, ModuleRef, EncodedMetadata) {
731731
use std::io::Write;
732732
use flate2::Compression;
733-
use flate2::write::ZlibEncoder;
733+
use flate2::write::DeflateEncoder;
734734

735735
let (metadata_llcx, metadata_llmod) = unsafe {
736736
context::create_context_and_module(tcx.sess, "metadata")
@@ -770,7 +770,7 @@ fn write_metadata<'a, 'gcx>(tcx: TyCtxt<'a, 'gcx, 'gcx>,
770770

771771
assert!(kind == MetadataKind::Compressed);
772772
let mut compressed = cstore.metadata_encoding_version().to_vec();
773-
ZlibEncoder::new(&mut compressed, Compression::Default)
773+
DeflateEncoder::new(&mut compressed, Compression::Fast)
774774
.write_all(&metadata.raw_data).unwrap();
775775

776776
let llmeta = C_bytes_in_context(metadata_llcx, &compressed);

0 commit comments

Comments
 (0)