From: Yann Collet Date: Fri, 3 Jun 2016 13:41:51 +0000 (+0200) Subject: minor decoder code refactoring X-Git-Tag: v0.7.0^2~49^2~21^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe48775868cfdababaa64fea642a93823e65f727;p=thirdparty%2Fzstd.git minor decoder code refactoring --- diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index 6d79e678a..b3cdf9883 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -652,9 +652,10 @@ typedef struct { -static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState) +static seq_t ZSTD_decodeSequence(seqState_t* seqState) { - /* Literal length */ + seq_t seq; + U32 const llCode = FSE_peekSymbol(&(seqState->stateLL)); U32 const mlCode = FSE_peekSymbol(&(seqState->stateML)); U32 const ofCode = FSE_peekSymbol(&(seqState->stateOffb)); /* <= maxOff, by table construction */ @@ -710,13 +711,13 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState) seqState->prevOffset[1] = seqState->prevOffset[0]; seqState->prevOffset[0] = offset; } - seq->offset = offset; + seq.offset = offset; } - seq->matchLength = ML_base[mlCode] + MINMATCH + ((mlCode>31) ? BIT_readBits(&(seqState->DStream), mlBits) : 0); /* <= 16 bits */ + seq.matchLength = ML_base[mlCode] + MINMATCH + ((mlCode>31) ? BIT_readBits(&(seqState->DStream), mlBits) : 0); /* <= 16 bits */ if (MEM_32bits() && (mlBits+llBits>24)) BIT_reloadDStream(&(seqState->DStream)); - seq->litLength = LL_base[llCode] + ((llCode>15) ? BIT_readBits(&(seqState->DStream), llBits) : 0); /* <= 16 bits */ + seq.litLength = LL_base[llCode] + ((llCode>15) ? BIT_readBits(&(seqState->DStream), llBits) : 0); /* <= 16 bits */ if (MEM_32bits() || (totalBits > 64 - 7 - (LLFSELog+MLFSELog+OffFSELog)) ) BIT_reloadDStream(&(seqState->DStream)); @@ -725,6 +726,8 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState) FSE_updateState(&(seqState->stateML), &(seqState->DStream)); /* <= 9 bits */ if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); /* <= 18 bits */ FSE_updateState(&(seqState->stateOffb), &(seqState->DStream)); /* <= 8 bits */ + + return seq; } @@ -830,11 +833,7 @@ static size_t ZSTD_decompressSequences( /* Regen sequences */ if (nbSeq) { - seq_t sequence; seqState_t seqState; - - memset(&sequence, 0, sizeof(sequence)); - sequence.offset = REPCODE_STARTVALUE; { U32 i; for (i=0; i