authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-25 18:53:31-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-26 21:00:58-07:00
log3cb9baaf65abe6c658a5b8b4bd5c0a424ec923c1
tree54ce59ab0741506a2902d91ba0cff697e01f02eb
parent8523cbef0e0145a1f4de84f49044b8c9a8657108

std.compress.lzma: delete dead parameter

update is always passed as true

1 files changed, 55 insertions(+), 91 deletions(-)

lib/std/compress/lzma.zig+55-91
......@@ -50,19 +50,17 @@ pub const RangeDecoder = struct {
5050 return result;
5151 }
5252
53 pub fn decodeBit(self: *RangeDecoder, reader: *Reader, prob: *u16, update: bool) !bool {
53 pub fn decodeBit(self: *RangeDecoder, reader: *Reader, prob: *u16) !bool {
5454 const bound = (self.range >> 11) * prob.*;
5555
5656 if (self.code < bound) {
57 if (update)
58 prob.* += (0x800 - prob.*) >> 5;
57 prob.* += (0x800 - prob.*) >> 5;
5958 self.range = bound;
6059
6160 try self.normalize(reader);
6261 return false;
6362 } else {
64 if (update)
65 prob.* -= prob.* >> 5;
63 prob.* -= prob.* >> 5;
6664 self.code -= bound;
6765 self.range -= bound;
6866
......@@ -76,12 +74,11 @@ pub const RangeDecoder = struct {
7674 reader: *Reader,
7775 num_bits: u5,
7876 probs: []u16,
79 update: bool,
8077 ) !u32 {
8178 var tmp: u32 = 1;
8279 var i: @TypeOf(num_bits) = 0;
8380 while (i < num_bits) : (i += 1) {
84 const bit = try self.decodeBit(reader, &probs[tmp], update);
81 const bit = try self.decodeBit(reader, &probs[tmp]);
8582 tmp = (tmp << 1) ^ @intFromBool(bit);
8683 }
8784 return tmp - (@as(u32, 1) << num_bits);
......@@ -93,13 +90,12 @@ pub const RangeDecoder = struct {
9390 num_bits: u5,
9491 probs: []u16,
9592 offset: usize,
96 update: bool,
9793 ) !u32 {
9894 var result: u32 = 0;
9995 var tmp: usize = 1;
10096 var i: @TypeOf(num_bits) = 0;
10197 while (i < num_bits) : (i += 1) {
102 const bit = @intFromBool(try self.decodeBit(reader, &probs[offset + tmp], update));
98 const bit = @intFromBool(try self.decodeBit(reader, &probs[offset + tmp]));
10399 tmp = (tmp << 1) ^ bit;
104100 result ^= @as(u32, bit) << i;
105101 }
......@@ -186,97 +182,76 @@ pub const Decode = struct {
186182 allocating: *Writer.Allocating,
187183 buffer: *CircularBuffer,
188184 decoder: *RangeDecoder,
189 update: bool,
190185 ) !ProcessingStatus {
191186 const gpa = allocating.allocator;
192187 const writer = &allocating.writer;
193188 const pos_state = buffer.len & ((@as(usize, 1) << self.properties.pb) - 1);
194189
195 if (!try decoder.decodeBit(reader, &self.is_match[(self.state << 4) + pos_state], update)) {
196 const byte: u8 = try self.decodeLiteral(reader, buffer, decoder, update);
190 if (!try decoder.decodeBit(reader, &self.is_match[(self.state << 4) + pos_state])) {
191 const byte: u8 = try self.decodeLiteral(reader, buffer, decoder);
197192
198 if (update) {
199 try buffer.appendLiteral(gpa, byte, writer);
193 try buffer.appendLiteral(gpa, byte, writer);
200194
201 self.state = if (self.state < 4)
202 0
203 else if (self.state < 10)
204 self.state - 3
205 else
206 self.state - 6;
207 }
195 self.state = if (self.state < 4)
196 0
197 else if (self.state < 10)
198 self.state - 3
199 else
200 self.state - 6;
208201 return .more;
209202 }
210203
211204 var len: usize = undefined;
212 if (try decoder.decodeBit(reader, &self.is_rep[self.state], update)) {
213 if (!try decoder.decodeBit(reader, &self.is_rep_g0[self.state], update)) {
214 if (!try decoder.decodeBit(
215 reader,
216 &self.is_rep_0long[(self.state << 4) + pos_state],
217 update,
218 )) {
219 if (update) {
220 self.state = if (self.state < 7) 9 else 11;
221 const dist = self.rep[0] + 1;
222 try buffer.appendLz(gpa, 1, dist, writer);
223 }
205 if (try decoder.decodeBit(reader, &self.is_rep[self.state])) {
206 if (!try decoder.decodeBit(reader, &self.is_rep_g0[self.state])) {
207 if (!try decoder.decodeBit(reader, &self.is_rep_0long[(self.state << 4) + pos_state])) {
208 self.state = if (self.state < 7) 9 else 11;
209 const dist = self.rep[0] + 1;
210 try buffer.appendLz(gpa, 1, dist, writer);
224211 return .more;
225212 }
226213 } else {
227 const idx: usize = if (!try decoder.decodeBit(reader, &self.is_rep_g1[self.state], update))
214 const idx: usize = if (!try decoder.decodeBit(reader, &self.is_rep_g1[self.state]))
228215 1
229 else if (!try decoder.decodeBit(reader, &self.is_rep_g2[self.state], update))
216 else if (!try decoder.decodeBit(reader, &self.is_rep_g2[self.state]))
230217 2
231218 else
232219 3;
233 if (update) {
234 const dist = self.rep[idx];
235 var i = idx;
236 while (i > 0) : (i -= 1) {
237 self.rep[i] = self.rep[i - 1];
238 }
239 self.rep[0] = dist;
220 const dist = self.rep[idx];
221 var i = idx;
222 while (i > 0) : (i -= 1) {
223 self.rep[i] = self.rep[i - 1];
240224 }
225 self.rep[0] = dist;
241226 }
242227
243 len = try self.rep_len_decoder.decode(reader, decoder, pos_state, update);
228 len = try self.rep_len_decoder.decode(reader, decoder, pos_state);
244229
245 if (update) {
246 self.state = if (self.state < 7) 8 else 11;
247 }
230 self.state = if (self.state < 7) 8 else 11;
248231 } else {
249 if (update) {
250 self.rep[3] = self.rep[2];
251 self.rep[2] = self.rep[1];
252 self.rep[1] = self.rep[0];
253 }
232 self.rep[3] = self.rep[2];
233 self.rep[2] = self.rep[1];
234 self.rep[1] = self.rep[0];
254235
255 len = try self.len_decoder.decode(reader, decoder, pos_state, update);
236 len = try self.len_decoder.decode(reader, decoder, pos_state);
256237
257 if (update) {
258 self.state = if (self.state < 7) 7 else 10;
259 }
238 self.state = if (self.state < 7) 7 else 10;
260239
261 const rep_0 = try self.decodeDistance(reader, decoder, len, update);
240 const rep_0 = try self.decodeDistance(reader, decoder, len);
262241
263 if (update) {
264 self.rep[0] = rep_0;
265 if (self.rep[0] == 0xFFFF_FFFF) {
266 if (decoder.isFinished()) {
267 return .finished;
268 }
269 return error.CorruptInput;
242 self.rep[0] = rep_0;
243 if (self.rep[0] == 0xFFFF_FFFF) {
244 if (decoder.isFinished()) {
245 return .finished;
270246 }
247 return error.CorruptInput;
271248 }
272249 }
273250
274 if (update) {
275 len += 2;
251 len += 2;
276252
277 const dist = self.rep[0] + 1;
278 try buffer.appendLz(gpa, len, dist, writer);
279 }
253 const dist = self.rep[0] + 1;
254 try buffer.appendLz(gpa, len, dist, writer);
280255
281256 return .more;
282257 }
......@@ -296,7 +271,7 @@ pub const Decode = struct {
296271 } else if (decoder.isFinished()) {
297272 break :process_next;
298273 }
299 switch (try self.processNext(reader, allocating, buffer, decoder, true)) {
274 switch (try self.processNext(reader, allocating, buffer, decoder)) {
300275 .more => return,
301276 .finished => {},
302277 }
......@@ -315,7 +290,6 @@ pub const Decode = struct {
315290 reader: *Reader,
316291 buffer: *CircularBuffer,
317292 decoder: *RangeDecoder,
318 update: bool,
319293 ) !u8 {
320294 const def_prev_byte = 0;
321295 const prev_byte = @as(usize, buffer.lastOr(def_prev_byte));
......@@ -334,7 +308,6 @@ pub const Decode = struct {
334308 const bit = @intFromBool(try decoder.decodeBit(
335309 reader,
336310 &probs[((@as(usize, 1) + match_bit) << 8) + result],
337 update,
338311 ));
339312 result = (result << 1) ^ bit;
340313 if (match_bit != bit) {
......@@ -344,7 +317,7 @@ pub const Decode = struct {
344317 }
345318
346319 while (result < 0x100) {
347 result = (result << 1) ^ @intFromBool(try decoder.decodeBit(reader, &probs[result], update));
320 result = (result << 1) ^ @intFromBool(try decoder.decodeBit(reader, &probs[result]));
348321 }
349322
350323 return @as(u8, @truncate(result - 0x100));
......@@ -355,11 +328,10 @@ pub const Decode = struct {
355328 reader: *Reader,
356329 decoder: *RangeDecoder,
357330 length: usize,
358 update: bool,
359331 ) !usize {
360332 const len_state = if (length > 3) 3 else length;
361333
362 const pos_slot = @as(usize, try self.pos_slot_decoder[len_state].parse(reader, decoder, update));
334 const pos_slot = @as(usize, try self.pos_slot_decoder[len_state].parse(reader, decoder));
363335 if (pos_slot < 4)
364336 return pos_slot;
365337
......@@ -372,11 +344,10 @@ pub const Decode = struct {
372344 num_direct_bits,
373345 &self.pos_decoders,
374346 result - pos_slot,
375 update,
376347 );
377348 } else {
378349 result += @as(usize, try decoder.get(reader, num_direct_bits - 4)) << 4;
379 result += try self.align_decoder.parseReverse(reader, decoder, update);
350 result += try self.align_decoder.parseReverse(reader, decoder);
380351 }
381352
382353 return result;
......@@ -500,22 +471,16 @@ pub const Decode = struct {
500471 return struct {
501472 probs: [1 << num_bits]u16 = @splat(0x400),
502473
503 pub fn parse(
504 self: *@This(),
505 reader: *Reader,
506 decoder: *RangeDecoder,
507 update: bool,
508 ) !u32 {
509 return decoder.parseBitTree(reader, num_bits, &self.probs, update);
474 pub fn parse(self: *@This(), reader: *Reader, decoder: *RangeDecoder) !u32 {
475 return decoder.parseBitTree(reader, num_bits, &self.probs);
510476 }
511477
512478 pub fn parseReverse(
513479 self: *@This(),
514480 reader: *Reader,
515481 decoder: *RangeDecoder,
516 update: bool,
517482 ) !u32 {
518 return decoder.parseReverseBitTree(reader, num_bits, &self.probs, 0, update);
483 return decoder.parseReverseBitTree(reader, num_bits, &self.probs, 0);
519484 }
520485
521486 pub fn reset(self: *@This()) void {
......@@ -536,14 +501,13 @@ pub const Decode = struct {
536501 reader: *Reader,
537502 decoder: *RangeDecoder,
538503 pos_state: usize,
539 update: bool,
540504 ) !usize {
541 if (!try decoder.decodeBit(reader, &self.choice, update)) {
542 return @as(usize, try self.low_coder[pos_state].parse(reader, decoder, update));
543 } else if (!try decoder.decodeBit(reader, &self.choice2, update)) {
544 return @as(usize, try self.mid_coder[pos_state].parse(reader, decoder, update)) + 8;
505 if (!try decoder.decodeBit(reader, &self.choice)) {
506 return @as(usize, try self.low_coder[pos_state].parse(reader, decoder));
507 } else if (!try decoder.decodeBit(reader, &self.choice2)) {
508 return @as(usize, try self.mid_coder[pos_state].parse(reader, decoder)) + 8;
545509 } else {
546 return @as(usize, try self.high_coder.parse(reader, decoder, update)) + 16;
510 return @as(usize, try self.high_coder.parse(reader, decoder)) + 16;
547511 }
548512 }
549513