Skip to content

Commit c5d1657

Browse files
committed
compress: Improve RingBuffer usage
1 parent 9504829 commit c5d1657

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

lib/std/compress/zstandard.zig

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub fn DecompressStream(
3434
checksum: if (options.verify_checksum) ?u32 else void,
3535
current_frame_decompressed_size: usize,
3636

37-
pub const Error = ReaderType.Error || error{
37+
pub const Error = ReaderType.Error || RingBuffer.Error || error{
3838
ChecksumFailure,
3939
DictionaryIdFlagUnsupported,
4040
MalformedBlock,
@@ -219,9 +219,7 @@ pub fn DecompressStream(
219219
}
220220

221221
const size = @min(self.buffer.len(), buffer.len);
222-
for (0..size) |i| {
223-
buffer[i] = self.buffer.read().?;
224-
}
222+
try self.buffer.readFirst(buffer, size);
225223
if (self.state == .LastBlock and self.buffer.len() == 0) {
226224
self.state = .NewFrame;
227225
self.allocator.free(self.literal_fse_buffer);

lib/std/compress/zstandard/decode/block.zig

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,8 @@ pub const DecodeState = struct {
311311
try self.decodeLiteralsRingBuffer(dest, sequence.literal_length);
312312
const copy_start = dest.write_index + dest.data.len - sequence.offset;
313313
const copy_slice = dest.sliceAt(copy_start, sequence.match_length);
314-
for (copy_slice.first) |b| dest.writeAssumeCapacity(b);
315-
for (copy_slice.second) |b| dest.writeAssumeCapacity(b);
314+
dest.writeSliceAssumeCapacity(copy_slice.first);
315+
dest.writeSliceAssumeCapacity(copy_slice.second);
316316
self.written_count += sequence.match_length;
317317
}
318318

@@ -723,9 +723,7 @@ pub fn decodeBlockRingBuffer(
723723
},
724724
.rle => {
725725
if (src.len < 1) return error.MalformedRleBlock;
726-
for (0..block_size) |_| {
727-
dest.writeAssumeCapacity(src[0]);
728-
}
726+
dest.writeSliceAssumeCapacity(src[0..block_size]);
729727
consumed_count.* += 1;
730728
decode_state.written_count += block_size;
731729
return block_size;

0 commit comments

Comments
 (0)