mirror of
https://github.com/facebook/zstd.git
synced 2025-11-27 00:05:09 -05:00
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.
This commit is contained in:
parent
cbf3e26316
commit
81b86a2024
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user