| author | |
| committer | |
| log | a74f800dd79fec48a50152394c9fb3c2d6f080d0 |
| tree | 4fce01612f7b41b29d22e817ffe9dac9bb70a7f4 |
| parent | 2766b704c1805f7b3dce25331c209441cdb774fc |
4 files changed, 22 insertions(+), 37 deletions(-)
lib/std/compress/zstandard.zig+3-4| ... | @@ -214,9 +214,8 @@ pub fn ZstandardStream( | ... | @@ -214,9 +214,8 @@ pub fn ZstandardStream( |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | const size = @min(self.buffer.len(), buffer.len); | 216 | const size = @min(self.buffer.len(), buffer.len); |
| 217 | var count: usize = 0; | 217 | for (0..size) |i| { |
| 218 | while (count < size) : (count += 1) { | 218 | buffer[i] = self.buffer.read().?; |
| 219 | buffer[count] = self.buffer.read().?; | ||
| 220 | } | 219 | } |
| 221 | if (self.state == .LastBlock and self.buffer.len() == 0) { | 220 | if (self.state == .LastBlock and self.buffer.len() == 0) { |
| 222 | self.state = .NewFrame; | 221 | self.state = .NewFrame; |
| ... | @@ -227,7 +226,7 @@ pub fn ZstandardStream( | ... | @@ -227,7 +226,7 @@ pub fn ZstandardStream( |
| 227 | self.allocator.free(self.sequence_buffer); | 226 | self.allocator.free(self.sequence_buffer); |
| 228 | self.buffer.deinit(self.allocator); | 227 | self.buffer.deinit(self.allocator); |
| 229 | } | 228 | } |
| 230 | return count; | 229 | return size; |
| 231 | } | 230 | } |
| 232 | }; | 231 | }; |
| 233 | } | 232 | } |
lib/std/compress/zstandard/decode/block.zig+10-20| ... | @@ -453,8 +453,7 @@ pub const DecodeState = struct { | ... | @@ -453,8 +453,7 @@ pub const DecodeState = struct { |
| 453 | self.written_count += len; | 453 | self.written_count += len; |
| 454 | }, | 454 | }, |
| 455 | .rle => { | 455 | .rle => { |
| 456 | var i: usize = 0; | 456 | for (0..len) |i| { |
| 457 | while (i < len) : (i += 1) { | ||
| 458 | dest[i] = self.literal_streams.one[0]; | 457 | dest[i] = self.literal_streams.one[0]; |
| 459 | } | 458 | } |
| 460 | self.literal_written_count += len; | 459 | self.literal_written_count += len; |
| ... | @@ -471,8 +470,7 @@ pub const DecodeState = struct { | ... | @@ -471,8 +470,7 @@ pub const DecodeState = struct { |
| 471 | var bits_read: u4 = 0; | 470 | var bits_read: u4 = 0; |
| 472 | var huffman_tree_index: usize = huffman_tree.symbol_count_minus_one; | 471 | var huffman_tree_index: usize = huffman_tree.symbol_count_minus_one; |
| 473 | var bit_count_to_read: u4 = starting_bit_count; | 472 | var bit_count_to_read: u4 = starting_bit_count; |
| 474 | var i: usize = 0; | 473 | for (0..len) |i| { |
| 475 | while (i < len) : (i += 1) { | ||
| 476 | var prefix: u16 = 0; | 474 | var prefix: u16 = 0; |
| 477 | while (true) { | 475 | while (true) { |
| 478 | const new_bits = self.readLiteralsBits(bit_count_to_read) catch |err| { | 476 | const new_bits = self.readLiteralsBits(bit_count_to_read) catch |err| { |
| ... | @@ -528,8 +526,7 @@ pub const DecodeState = struct { | ... | @@ -528,8 +526,7 @@ pub const DecodeState = struct { |
| 528 | self.written_count += len; | 526 | self.written_count += len; |
| 529 | }, | 527 | }, |
| 530 | .rle => { | 528 | .rle => { |
| 531 | var i: usize = 0; | 529 | for (0..len) |_| { |
| 532 | while (i < len) : (i += 1) { | ||
| 533 | dest.writeAssumeCapacity(self.literal_streams.one[0]); | 530 | dest.writeAssumeCapacity(self.literal_streams.one[0]); |
| 534 | } | 531 | } |
| 535 | self.literal_written_count += len; | 532 | self.literal_written_count += len; |
| ... | @@ -546,8 +543,7 @@ pub const DecodeState = struct { | ... | @@ -546,8 +543,7 @@ pub const DecodeState = struct { |
| 546 | var bits_read: u4 = 0; | 543 | var bits_read: u4 = 0; |
| 547 | var huffman_tree_index: usize = huffman_tree.symbol_count_minus_one; | 544 | var huffman_tree_index: usize = huffman_tree.symbol_count_minus_one; |
| 548 | var bit_count_to_read: u4 = starting_bit_count; | 545 | var bit_count_to_read: u4 = starting_bit_count; |
| 549 | var i: usize = 0; | 546 | for (0..len) |_| { |
| 550 | while (i < len) : (i += 1) { | ||
| 551 | var prefix: u16 = 0; | 547 | var prefix: u16 = 0; |
| 552 | while (true) { | 548 | while (true) { |
| 553 | const new_bits = try self.readLiteralsBits(bit_count_to_read); | 549 | const new_bits = try self.readLiteralsBits(bit_count_to_read); |
| ... | @@ -630,8 +626,7 @@ pub fn decodeBlock( | ... | @@ -630,8 +626,7 @@ pub fn decodeBlock( |
| 630 | .rle => { | 626 | .rle => { |
| 631 | if (src.len < 1) return error.MalformedRleBlock; | 627 | if (src.len < 1) return error.MalformedRleBlock; |
| 632 | if (dest[written_count..].len < block_size) return error.DestTooSmall; | 628 | if (dest[written_count..].len < block_size) return error.DestTooSmall; |
| 633 | var write_pos: usize = written_count; | 629 | for (written_count..block_size + written_count) |write_pos| { |
| 634 | while (write_pos < block_size + written_count) : (write_pos += 1) { | ||
| 635 | dest[write_pos] = src[0]; | 630 | dest[write_pos] = src[0]; |
| 636 | } | 631 | } |
| 637 | consumed_count.* += 1; | 632 | consumed_count.* += 1; |
| ... | @@ -664,8 +659,7 @@ pub fn decodeBlock( | ... | @@ -664,8 +659,7 @@ pub fn decodeBlock( |
| 664 | return error.MalformedCompressedBlock; | 659 | return error.MalformedCompressedBlock; |
| 665 | 660 | ||
| 666 | var sequence_size_limit = block_size_max; | 661 | var sequence_size_limit = block_size_max; |
| 667 | var i: usize = 0; | 662 | for (0..sequences_header.sequence_count) |i| { |
| 668 | while (i < sequences_header.sequence_count) : (i += 1) { | ||
| 669 | const write_pos = written_count + bytes_written; | 663 | const write_pos = written_count + bytes_written; |
| 670 | const decompressed_size = decode_state.decodeSequenceSlice( | 664 | const decompressed_size = decode_state.decodeSequenceSlice( |
| 671 | dest, | 665 | dest, |
| ... | @@ -734,8 +728,7 @@ pub fn decodeBlockRingBuffer( | ... | @@ -734,8 +728,7 @@ pub fn decodeBlockRingBuffer( |
| 734 | }, | 728 | }, |
| 735 | .rle => { | 729 | .rle => { |
| 736 | if (src.len < 1) return error.MalformedRleBlock; | 730 | if (src.len < 1) return error.MalformedRleBlock; |
| 737 | var write_pos: usize = 0; | 731 | for (0..block_size) |_| { |
| 738 | while (write_pos < block_size) : (write_pos += 1) { | ||
| 739 | dest.writeAssumeCapacity(src[0]); | 732 | dest.writeAssumeCapacity(src[0]); |
| 740 | } | 733 | } |
| 741 | consumed_count.* += 1; | 734 | consumed_count.* += 1; |
| ... | @@ -768,8 +761,7 @@ pub fn decodeBlockRingBuffer( | ... | @@ -768,8 +761,7 @@ pub fn decodeBlockRingBuffer( |
| 768 | return error.MalformedCompressedBlock; | 761 | return error.MalformedCompressedBlock; |
| 769 | 762 | ||
| 770 | var sequence_size_limit = block_size_max; | 763 | var sequence_size_limit = block_size_max; |
| 771 | var i: usize = 0; | 764 | for (0..sequences_header.sequence_count) |i| { |
| 772 | while (i < sequences_header.sequence_count) : (i += 1) { | ||
| 773 | const decompressed_size = decode_state.decodeSequenceRingBuffer( | 765 | const decompressed_size = decode_state.decodeSequenceRingBuffer( |
| 774 | dest, | 766 | dest, |
| 775 | &bit_stream, | 767 | &bit_stream, |
| ... | @@ -840,8 +832,7 @@ pub fn decodeBlockReader( | ... | @@ -840,8 +832,7 @@ pub fn decodeBlockReader( |
| 840 | }, | 832 | }, |
| 841 | .rle => { | 833 | .rle => { |
| 842 | const byte = try source.readByte(); | 834 | const byte = try source.readByte(); |
| 843 | var i: usize = 0; | 835 | for (0..block_size) |_| { |
| 844 | while (i < block_size) : (i += 1) { | ||
| 845 | dest.writeAssumeCapacity(byte); | 836 | dest.writeAssumeCapacity(byte); |
| 846 | } | 837 | } |
| 847 | decode_state.written_count += block_size; | 838 | decode_state.written_count += block_size; |
| ... | @@ -866,8 +857,7 @@ pub fn decodeBlockReader( | ... | @@ -866,8 +857,7 @@ pub fn decodeBlockReader( |
| 866 | return error.MalformedCompressedBlock; | 857 | return error.MalformedCompressedBlock; |
| 867 | 858 | ||
| 868 | var sequence_size_limit = block_size_max; | 859 | var sequence_size_limit = block_size_max; |
| 869 | var i: usize = 0; | 860 | for (0..sequences_header.sequence_count) |i| { |
| 870 | while (i < sequences_header.sequence_count) : (i += 1) { | ||
| 871 | const decompressed_size = decode_state.decodeSequenceRingBuffer( | 861 | const decompressed_size = decode_state.decodeSequenceRingBuffer( |
| 872 | dest, | 862 | dest, |
| 873 | &bit_stream, | 863 | &bit_stream, |
lib/std/compress/zstandard/decode/fse.zig+7-10| ... | @@ -47,8 +47,7 @@ pub fn decodeFseTable( | ... | @@ -47,8 +47,7 @@ pub fn decodeFseTable( |
| 47 | while (true) { | 47 | while (true) { |
| 48 | const repeat_flag = try bit_reader.readBitsNoEof(u2, 2); | 48 | const repeat_flag = try bit_reader.readBitsNoEof(u2, 2); |
| 49 | if (repeat_flag + value_count > 256) return error.MalformedFseTable; | 49 | if (repeat_flag + value_count > 256) return error.MalformedFseTable; |
| 50 | var i: usize = 0; | 50 | for (0..repeat_flag) |_| { |
| 51 | while (i < repeat_flag) : (i += 1) { | ||
| 52 | values[value_count] = 1; | 51 | values[value_count] = 1; |
| 53 | value_count += 1; | 52 | value_count += 1; |
| 54 | } | 53 | } |
| ... | @@ -75,7 +74,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { | ... | @@ -75,7 +74,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { |
| 75 | assert(total_probability <= 1 << 9); | 74 | assert(total_probability <= 1 << 9); |
| 76 | 75 | ||
| 77 | var less_than_one_count: usize = 0; | 76 | var less_than_one_count: usize = 0; |
| 78 | for (values) |value, i| { | 77 | for (values, 0..) |value, i| { |
| 79 | if (value == 0) { | 78 | if (value == 0) { |
| 80 | entries[entries.len - 1 - less_than_one_count] = Table.Fse{ | 79 | entries[entries.len - 1 - less_than_one_count] = Table.Fse{ |
| 81 | .symbol = @intCast(u8, i), | 80 | .symbol = @intCast(u8, i), |
| ... | @@ -88,7 +87,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { | ... | @@ -88,7 +87,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { |
| 88 | 87 | ||
| 89 | var position: usize = 0; | 88 | var position: usize = 0; |
| 90 | var temp_states: [1 << 9]u16 = undefined; | 89 | var temp_states: [1 << 9]u16 = undefined; |
| 91 | for (values) |value, symbol| { | 90 | for (values, 0..) |value, symbol| { |
| 92 | if (value == 0 or value == 1) continue; | 91 | if (value == 0 or value == 1) continue; |
| 93 | const probability = value - 1; | 92 | const probability = value - 1; |
| 94 | 93 | ||
| ... | @@ -99,8 +98,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { | ... | @@ -99,8 +98,7 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { |
| 99 | const single_state_count = probability - double_state_count; | 98 | const single_state_count = probability - double_state_count; |
| 100 | const share_size_log = std.math.log2_int(u16, share_size); | 99 | const share_size_log = std.math.log2_int(u16, share_size); |
| 101 | 100 | ||
| 102 | var i: u16 = 0; | 101 | for (0..probability) |i| { |
| 103 | while (i < probability) : (i += 1) { | ||
| 104 | temp_states[i] = @intCast(u16, position); | 102 | temp_states[i] = @intCast(u16, position); |
| 105 | position += (entries.len >> 1) + (entries.len >> 3) + 3; | 103 | position += (entries.len >> 1) + (entries.len >> 3) + 3; |
| 106 | position &= entries.len - 1; | 104 | position &= entries.len - 1; |
| ... | @@ -110,16 +108,15 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { | ... | @@ -110,16 +108,15 @@ fn buildFseTable(values: []const u16, entries: []Table.Fse) !void { |
| 110 | } | 108 | } |
| 111 | } | 109 | } |
| 112 | std.sort.sort(u16, temp_states[0..probability], {}, std.sort.asc(u16)); | 110 | std.sort.sort(u16, temp_states[0..probability], {}, std.sort.asc(u16)); |
| 113 | i = 0; | 111 | for (0..probability) |i| { |
| 114 | while (i < probability) : (i += 1) { | ||
| 115 | entries[temp_states[i]] = if (i < double_state_count) Table.Fse{ | 112 | entries[temp_states[i]] = if (i < double_state_count) Table.Fse{ |
| 116 | .symbol = @intCast(u8, symbol), | 113 | .symbol = @intCast(u8, symbol), |
| 117 | .bits = share_size_log + 1, | 114 | .bits = share_size_log + 1, |
| 118 | .baseline = single_state_count * share_size + i * 2 * share_size, | 115 | .baseline = single_state_count * share_size + @intCast(u16, i) * 2 * share_size, |
| 119 | } else Table.Fse{ | 116 | } else Table.Fse{ |
| 120 | .symbol = @intCast(u8, symbol), | 117 | .symbol = @intCast(u8, symbol), |
| 121 | .bits = share_size_log, | 118 | .bits = share_size_log, |
| 122 | .baseline = (i - double_state_count) * share_size, | 119 | .baseline = (@intCast(u16, i) - double_state_count) * share_size, |
| 123 | }; | 120 | }; |
| 124 | } | 121 | } |
| 125 | } | 122 | } |
lib/std/compress/zstandard/decode/huffman.zig+2-3| ... | @@ -95,8 +95,7 @@ fn assignWeights(huff_bits: *readers.ReverseBitReader, accuracy_log: usize, entr | ... | @@ -95,8 +95,7 @@ fn assignWeights(huff_bits: *readers.ReverseBitReader, accuracy_log: usize, entr |
| 95 | 95 | ||
| 96 | fn decodeDirectHuffmanTree(source: anytype, encoded_symbol_count: usize, weights: *[256]u4) !usize { | 96 | fn decodeDirectHuffmanTree(source: anytype, encoded_symbol_count: usize, weights: *[256]u4) !usize { |
| 97 | const weights_byte_count = (encoded_symbol_count + 1) / 2; | 97 | const weights_byte_count = (encoded_symbol_count + 1) / 2; |
| 98 | var i: usize = 0; | 98 | for (0..weights_byte_count) |i| { |
| 99 | while (i < weights_byte_count) : (i += 1) { | ||
| 100 | const byte = try source.readByte(); | 99 | const byte = try source.readByte(); |
| 101 | weights[2 * i] = @intCast(u4, byte >> 4); | 100 | weights[2 * i] = @intCast(u4, byte >> 4); |
| 102 | weights[2 * i + 1] = @intCast(u4, byte & 0xF); | 101 | weights[2 * i + 1] = @intCast(u4, byte & 0xF); |
| ... | @@ -105,7 +104,7 @@ fn decodeDirectHuffmanTree(source: anytype, encoded_symbol_count: usize, weights | ... | @@ -105,7 +104,7 @@ fn decodeDirectHuffmanTree(source: anytype, encoded_symbol_count: usize, weights |
| 105 | } | 104 | } |
| 106 | 105 | ||
| 107 | fn assignSymbols(weight_sorted_prefixed_symbols: []LiteralsSection.HuffmanTree.PrefixedSymbol, weights: [256]u4) usize { | 106 | fn assignSymbols(weight_sorted_prefixed_symbols: []LiteralsSection.HuffmanTree.PrefixedSymbol, weights: [256]u4) usize { |
| 108 | for (weight_sorted_prefixed_symbols) |_, i| { | 107 | for (0..weight_sorted_prefixed_symbols.len) |i| { |
| 109 | weight_sorted_prefixed_symbols[i] = .{ | 108 | weight_sorted_prefixed_symbols[i] = .{ |
| 110 | .symbol = @intCast(u8, i), | 109 | .symbol = @intCast(u8, i), |
| 111 | .weight = undefined, | 110 | .weight = undefined, |