mirror of
https://github.com/facebook/zstd.git
synced 2024-11-24 07:36:43 +08:00
Add ZSTD_DECOMPRESS_MINIMAL Macro, Which Reduces Branching of Decompress Variants
This commit is contained in:
parent
f45c9df42e
commit
df28e5babd
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user