From: senhuang42 Date: Tue, 27 Oct 2020 14:43:37 +0000 (-0400) Subject: Improve documentation of seqStore_t X-Git-Tag: v1.4.7~39^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9171f920cd790cc3f7b3ecc817efe88af7b063c7;p=thirdparty%2Fzstd.git Improve documentation of seqStore_t --- diff --git a/lib/common/zstd_internal.h b/lib/common/zstd_internal.h index bfa98efaa..f9972766d 100644 --- a/lib/common/zstd_internal.h +++ b/lib/common/zstd_internal.h @@ -341,23 +341,28 @@ MEM_STATIC size_t ZSTD_limitCopy(void* dst, size_t dstCapacity, const void* src, * Private declarations *********************************************/ typedef struct seqDef_s { - U32 offset; + U32 offset; /* Offset code of the sequence */ U16 litLength; U16 matchLength; } seqDef; typedef struct { seqDef* sequencesStart; - seqDef* sequences; + seqDef* sequences; /* ptr to end of sequences */ BYTE* litStart; - BYTE* lit; + BYTE* lit; /* ptr to end of literals */ BYTE* llCode; BYTE* mlCode; BYTE* ofCode; size_t maxNbSeq; size_t maxNbLit; - U32 longLengthID; /* 0 == no longLength; 1 == Lit.longLength; 2 == Match.longLength; */ - U32 longLengthPos; + + /* longLengthPos and longLengthID to allow us to represent either a single litLength or matchLength + * in the seqStore that has a value larger than U16 (if it exists). To do so, we increment + * the existing value of the literal or match by 0x10000. + */ + U32 longLengthID; /* 0 == no longLength; 1 == Represent the long literal; 2 == Represent the long match; */ + U32 longLengthPos; /* Index of the sequence to apply long length modification to */ } seqStore_t; typedef struct { diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index b3ada04f4..9d5f20a61 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -2455,10 +2455,6 @@ static void ZSTD_copyBlockSequences(ZSTD_CCtx* zc) outSeqs[i].litLength = seqStoreSeqs[i].litLength; outSeqs[i].matchLength = seqStoreSeqs[i].matchLength + MINMATCH; - /* matchLength and litLength are stored with U16. longLengthPos - * and longLengthID to allow us to represent a single litLength or matchLength - * in the seqStore that has a value larger than U16 (if it exists). - */ if (i == seqStore->longLengthPos) { if (seqStore->longLengthID == 1) { outSeqs[i].litLength += 0x10000; diff --git a/lib/zstd.h b/lib/zstd.h index 7668729a1..1c61bd001 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1115,24 +1115,24 @@ typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params; typedef struct { unsigned int offset; /* The offset of the match. - * If == 0, then represents a block of literals, determined by litLength - */ + * If == 0, then represents a block of literals, determined by litLength + */ unsigned int litLength; /* Literal length */ unsigned int matchLength; /* Match length. */ unsigned int rep; /* Represents which repeat offset is used. Ranges from [0, 3]. - * If rep == 0, then this sequence does not contain a repeat offset. - * Otherwise: - * If litLength != 0: - * rep == 1 --> offset == repeat offset 1 - * rep == 2 --> offset == repeat offset 2 - * rep == 3 --> offset == repeat offset 3 - * If litLength == 0: - * rep == 1 --> offset == repeat offset 2 - * rep == 2 --> offset == repeat offset 3 - * rep == 3 --> offset == repeat offset 1 - 1 - */ + * If rep == 0, then this sequence does not contain a repeat offset. + * Otherwise: + * If litLength != 0: + * rep == 1 --> offset == repeat offset 1 + * rep == 2 --> offset == repeat offset 2 + * rep == 3 --> offset == repeat offset 3 + * If litLength == 0: + * rep == 1 --> offset == repeat offset 2 + * rep == 2 --> offset == repeat offset 3 + * rep == 3 --> offset == repeat offset 1 - 1 + */ } ZSTD_Sequence; typedef struct {