From: W. Felix Handte Date: Wed, 19 Apr 2023 16:19:56 +0000 (-0400) Subject: NULL Out Block Compressor Table Entries When Excluded X-Git-Tag: v1.5.6^2~162^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81b86a2024c80c1fc69bb6a76407628e063917ed;p=thirdparty%2Fzstd.git NULL Out Block Compressor Table Entries When Excluded Don't check about excluding `ZSTD_fast`. It's always included so that we know we can resolve downwards and hit a strategy that's present. --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index c28b43456..08bfd54c3 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -2992,40 +2992,145 @@ ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, ZSTD_paramS static const ZSTD_blockCompressor blockCompressor[4][ZSTD_STRATEGY_MAX+1] = { { ZSTD_compressBlock_fast /* default for 0 */, ZSTD_compressBlock_fast, +#ifdef ZSTD_EXCLUDE_DFAST_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_doubleFast, +#endif +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_greedy, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy2, +#endif +#ifdef ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btlazy2, +#endif +#ifdef ZSTD_EXCLUDE_BTOPT_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btopt, +#endif +#ifdef ZSTD_EXCLUDE_BTULTRA_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btultra, - ZSTD_compressBlock_btultra2 }, +#endif +#ifdef ZSTD_EXCLUDE_BTULTRA2_BLOCK_COMPRESSOR + NULL +#else + ZSTD_compressBlock_btultra2 +#endif + }, { ZSTD_compressBlock_fast_extDict /* default for 0 */, ZSTD_compressBlock_fast_extDict, +#ifdef ZSTD_EXCLUDE_DFAST_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_doubleFast_extDict, +#endif +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_greedy_extDict, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy_extDict, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy2_extDict, +#endif +#ifdef ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btlazy2_extDict, +#endif +#ifdef ZSTD_EXCLUDE_BTOPT_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btopt_extDict, +#endif +#ifdef ZSTD_EXCLUDE_BTULTRA_BLOCK_COMPRESSOR + NULL, + NULL +#else ZSTD_compressBlock_btultra_extDict, - ZSTD_compressBlock_btultra_extDict }, + ZSTD_compressBlock_btultra_extDict +#endif + }, { ZSTD_compressBlock_fast_dictMatchState /* default for 0 */, ZSTD_compressBlock_fast_dictMatchState, +#ifdef ZSTD_EXCLUDE_DFAST_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_doubleFast_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_greedy_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy2_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btlazy2_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_BTOPT_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_btopt_dictMatchState, +#endif +#ifdef ZSTD_EXCLUDE_BTULTRA_BLOCK_COMPRESSOR + NULL, + NULL +#else ZSTD_compressBlock_btultra_dictMatchState, - ZSTD_compressBlock_btultra_dictMatchState }, + ZSTD_compressBlock_btultra_dictMatchState +#endif + }, { NULL /* default for 0 */, NULL, NULL, +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_greedy_dedicatedDictSearch, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy_dedicatedDictSearch, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else ZSTD_compressBlock_lazy2_dedicatedDictSearch, +#endif NULL, NULL, NULL, @@ -3038,18 +3143,74 @@ ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, ZSTD_paramS DEBUGLOG(4, "Selected block compressor: dictMode=%d strat=%d rowMatchfinder=%d", (int)dictMode, (int)strat, (int)useRowMatchFinder); if (ZSTD_rowMatchFinderUsed(strat, useRowMatchFinder)) { static const ZSTD_blockCompressor rowBasedBlockCompressors[4][3] = { - { ZSTD_compressBlock_greedy_row, - ZSTD_compressBlock_lazy_row, - ZSTD_compressBlock_lazy2_row }, - { ZSTD_compressBlock_greedy_extDict_row, - ZSTD_compressBlock_lazy_extDict_row, - ZSTD_compressBlock_lazy2_extDict_row }, - { ZSTD_compressBlock_greedy_dictMatchState_row, - ZSTD_compressBlock_lazy_dictMatchState_row, - ZSTD_compressBlock_lazy2_dictMatchState_row }, - { ZSTD_compressBlock_greedy_dedicatedDictSearch_row, - ZSTD_compressBlock_lazy_dedicatedDictSearch_row, - ZSTD_compressBlock_lazy2_dedicatedDictSearch_row } + { +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_greedy_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy2_row +#endif + }, + { +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_greedy_extDict_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy_extDict_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy2_extDict_row +#endif + }, + { +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_greedy_dictMatchState_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy_dictMatchState_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy2_dictMatchState_row +#endif + }, + { +#ifdef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_greedy_dedicatedDictSearch_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy_dedicatedDictSearch_row, +#endif +#ifdef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR + NULL, +#else + ZSTD_compressBlock_lazy2_dedicatedDictSearch_row +#endif + } }; DEBUGLOG(4, "Selecting a row-based matchfinder"); assert(useRowMatchFinder != ZSTD_ps_auto);