diff options
| author | Weihang Lo <me@weihanglo.tw> | 2022-11-24 00:58:58 +0000 |
|---|---|---|
| committer | Weihang Lo <me@weihanglo.tw> | 2022-11-24 00:59:04 +0000 |
| commit | 433d471a1a06b5852c7f6b5d276725933d8ddce6 (patch) | |
| tree | 9907b66ff95cf86897e9ba48a3718c289003db79 | |
| parent | 70f8737b2f5d3bf7d6b784fad00b663b7ff9feda (diff) | |
| download | rust-433d471a1a06b5852c7f6b5d276725933d8ddce6.tar.gz rust-433d471a1a06b5852c7f6b5d276725933d8ddce6.zip | |
rustc_codegen_ssa: write `.dwp` in a streaming fashion
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 2091730af22..762430c6187 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -676,8 +676,7 @@ fn link_dwarf_object<'a>( thorin::MissingReferencedObjectBehaviour::Skip, )?; - let output = package.finish()?.write()?; - let mut output_stream = BufWriter::new( + let output_stream = BufWriter::new( OpenOptions::new() .read(true) .write(true) @@ -685,8 +684,10 @@ fn link_dwarf_object<'a>( .truncate(true) .open(dwp_out_filename)?, ); - output_stream.write_all(&output)?; - output_stream.flush()?; + let mut output_stream = object::write::StreamingBuffer::new(output_stream); + package.finish()?.emit(&mut output_stream)?; + output_stream.result()?; + output_stream.into_inner().flush()?; Ok(()) }) { |
