]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
NULL Out Block Compressor Table Entries When Excluded
authorW. Felix Handte <w@felixhandte.com>
Wed, 19 Apr 2023 16:19:56 +0000 (12:19 -0400)
committerW. Felix Handte <w@felixhandte.com>
Thu, 4 May 2023 16:18:58 +0000 (12:18 -0400)
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.

lib/compress/zstd_compress.c

index c28b434562db6e225c7543d6a364f00d6d6c8949..08bfd54c3226cbeb01da2d13ff7d922d2ae4fa2c 100644 (file)
@@ -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);