From df28e5babdfd927901de9be5856060981daf831f Mon Sep 17 00:00:00 2001 From: "W. Felix Handte" Date: Fri, 16 Nov 2018 15:02:11 -0800 Subject: [PATCH] Add ZSTD_DECOMPRESS_MINIMAL Macro, Which Reduces Branching of Decompress Variants --- lib/decompress/zstd_decompress_block.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/decompress/zstd_decompress_block.c b/lib/decompress/zstd_decompress_block.c index 869bdd9aa..00f04208b 100644 --- a/lib/decompress/zstd_decompress_block.c +++ b/lib/decompress/zstd_decompress_block.c @@ -1201,13 +1201,17 @@ ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx, } /* Build Decoding Tables */ - { int usePrefetchDecoder = dctx->ddictIsCold; + { +#ifndef ZSTD_DECOMPRESS_MINIMAL + int usePrefetchDecoder = dctx->ddictIsCold; +#endif int nbSeq; size_t const seqHSize = ZSTD_decodeSeqHeaders(dctx, &nbSeq, ip, srcSize); if (ZSTD_isError(seqHSize)) return seqHSize; ip += seqHSize; srcSize -= seqHSize; +#ifndef ZSTD_DECOMPRESS_MINIMAL if ( !usePrefetchDecoder && (!frame || (dctx->fParams.windowSize > (1<<24))) && (nbSeq>ADVANCED_SEQS) ) { /* could probably use a larger nbSeq limit */ @@ -1215,11 +1219,14 @@ ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx, U32 const minShare = MEM_64bits() ? 7 : 20; /* heuristic values, correspond to 2.73% and 7.81% */ usePrefetchDecoder = (shareLongOffsets >= minShare); } +#endif dctx->ddictIsCold = 0; +#ifndef ZSTD_DECOMPRESS_MINIMAL if (usePrefetchDecoder) return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset); +#endif /* else */ return ZSTD_decompressSequences(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset);