fn outputBytes(c: *Compress, bytes: []const u8) Writer.Error!void c: *Compressbytes: []const u8244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265fn outputBytes(c: *Compress, bytes: []const u8) Writer.Error!void {
var remaining = bytes;
while (remaining.len != 0) {
if (c.buffered_tokens.n == block_tokens) {
@branchHint(.unlikely); // LLVM 21 optimizes this branch as the more likely without
try c.writeBlock(false);
}
const n = @min(remaining.len, block_tokens - c.buffered_tokens.n, math.maxInt(u15));
assert(n != 0);
const header: TokenBufferEntryHeader = .{ .kind = .bytes, .data = n };
c.buffered_tokens.list[c.buffered_tokens.pos..][0..2].* = @bitCast(header);
@memcpy(c.buffered_tokens.list[c.buffered_tokens.pos + 2 ..][0..n], remaining[0..n]);
c.buffered_tokens.pos += @as(u32, 2) + n;
c.buffered_tokens.n += n;
for (remaining[0..n]) |b| {
c.buffered_tokens.lit_freqs[b] += 1;
}
remaining = remaining[n..];
}
}