Skip to content

Commit 21ecbc3

Browse files
committed
compress
1 parent 0a1d1f4 commit 21ecbc3

File tree

1 file changed

+18
-2
lines changed
  • turbopack/crates/turbo-tasks-fs/src

1 file changed

+18
-2
lines changed

turbopack/crates/turbo-tasks-fs/src/rope.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,28 @@ fn compress_bytes(bytes: Cow<'static, [u8]>) -> RopeElem {
162162

163163
match bytes {
164164
Cow::Borrowed(b) => Static(b),
165-
Cow::Owned(b) => Compressed(b.len() as u32, b),
165+
Cow::Owned(b) => {
166+
let mut encoder = lz4::EncoderBuilder::new()
167+
.build(Vec::new())
168+
.expect("lz4 version mismatch");
169+
170+
encoder.write_all(&b).expect("failed to compress bytes");
171+
172+
let (output, result) = encoder.finish();
173+
result.expect("failed to compress bytes");
174+
175+
Compressed(output.len() as u32, output)
176+
}
166177
}
167178
}
168179

169180
fn decompress_bytes(bytes: &[u8], len: u32) -> Cow<[u8]> {
170-
Cow::Borrowed(bytes)
181+
let mut decoder = lz4::Decoder::new(Cursor::new(bytes)).expect("lz4 version mismatch");
182+
let mut buf = Vec::with_capacity(len as usize);
183+
decoder.read_to_end(&mut buf).unwrap_or_else(|err| {
184+
unreachable!("internal error: failed to decompress bytes while we compressed them. {err:?}")
185+
});
186+
Cow::Owned(buf)
171187
}
172188

173189
impl RopeBuilder {

0 commit comments

Comments
 (0)