mirror_zfs/module/zstd/lib/decompress
Yann Collet 776441152e zstd: Refactor prefetching for the decoding loop
Following facebook/zstd#2545, I noticed that one field in `seq_t` is
optional, and only used in combination with prefetching. (This may have
contributed to static analyzer failure to detect correct
initialization).

I then wondered if it would be possible to rewrite the code so that this
optional part is handled directly by the prefetching code rather than
delegated as an option into `ZSTD_decodeSequence()`.

This resulted into this refactoring exercise where the prefetching
responsibility is better isolated into its own function and
`ZSTD_decodeSequence()` is streamlined to contain strictly Sequence
decoding operations.  Incidently, due to better code locality, it
reduces the need to send information around, leading to simplified
interface, and smaller state structures.

Port of facebook/zstd@f5434663ea

Reported-by: Coverity (CID 1462271)
Reviewed-by: Damian Szuberski <szuberskidamian@gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Ported-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14212
2022-11-29 10:05:30 -08:00
..
huf_decompress.c Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00
zstd_ddict.c Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00
zstd_ddict.h Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00
zstd_decompress_block.c zstd: Refactor prefetching for the decoding loop 2022-11-29 10:05:30 -08:00
zstd_decompress_block.h Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00
zstd_decompress_internal.h Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00
zstd_decompress.c Explode zstd 1.4.5 into separate upstream files 2022-03-01 13:55:12 -08:00