]> git.ipfire.org Git - thirdparty/zstd.git/commit
Refactor prefetching for the decoding loop
authorYann Collet <cyan@fb.com>
Thu, 18 Mar 2021 18:28:22 +0000 (11:28 -0700)
committerYann Collet <cyan@fb.com>
Fri, 19 Mar 2021 22:48:17 +0000 (15:48 -0700)
commitf5434663ea2a79b287ab4cd299179342f64a23a7
tree2015e48b1b503ba7055d2eb54cdca4c8b78656c2
parenteace4abc2559eabb9300b9ca7e6769f620f0446e
Refactor prefetching for the decoding loop

Following #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.
lib/decompress/zstd_decompress_block.c