/* CTable for Offset codes */
{ /* create Offset codes */
size_t i; for (i=0; i<nbSeq; i++) {
- offCodeTable[i] = (BYTE)ZSTD_highbit(offsetTable[i]) + 1;
- if (offsetTable[i]==0) offCodeTable[i]=0;
+ if (offsetTable[i] < ZSTD_REP_NUM)
+ offCodeTable[i] = 0;
+ else
+ offCodeTable[i] = (BYTE)ZSTD_highbit(offsetTable[i]) + 1;
}
}
max = MaxOff;
else *(seqStorePtr->litLength++) = (BYTE)litLength;
/* match offset */
- *(seqStorePtr->offset++) = (U32)offsetCode;
+ *(seqStorePtr->offset++) = (U32)offsetCode + ZSTD_REP_NUM - 1;
/* match Length */
if (matchCode >= MaxML) {
offset = offsetPrefix[offsetCode] + BIT_readBits(&(seqState->DStream), nbBits);
if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream));
if (offsetCode==0) offset = prevOffset; /* repcode, cmove */
+ else offset -= ZSTD_REP_NUM - 1;
if (offsetCode | !litLength) seqState->prevOffset = seq->offset; /* cmove */
FSE_decodeSymbol(&(seqState->stateOffb), &(seqState->DStream)); /* update */
+// printf("offsetCode=%d nbBits=%d offset=%d\n", offsetCode, nbBits, (int)offset); fflush(stdout);
}
/* Literal length update */
#endif
#define NBLOOPS 3
-#define TIMELOOP 2500
#define KB *(1 <<10)
#define MB *(1 <<20)
} } }
/* warmimg up memory */
+ int timeloop = additionalParam; //2500;
ZSTD_setAdditionalParam(refCtx, additionalParam);
RDG_genBuffer(compressedBuffer, maxCompressedSize, 0.10, 0.50, 1);
milliTime = BMK_GetMilliStart();
while (BMK_GetMilliStart() == milliTime);
milliTime = BMK_GetMilliStart();
- while (BMK_GetMilliSpan(milliTime) < TIMELOOP) {
+ while (BMK_GetMilliSpan(milliTime) < timeloop) {
ZSTD_compressBegin_advanced(refCtx, dictBuffer, dictBufferSize, ZSTD_getParams(cLevel, MAX(dictBufferSize, largestBlockSize)));
for (blockNb=0; blockNb<nbBlocks; blockNb++) {
size_t rSize = ZSTD_compress_usingPreparedCCtx(ctx, refCtx,
while (BMK_GetMilliStart() == milliTime);
milliTime = BMK_GetMilliStart();
- for ( ; BMK_GetMilliSpan(milliTime) < TIMELOOP; nbLoops++) {
+ for ( ; BMK_GetMilliSpan(milliTime) < timeloop; nbLoops++) {
ZSTD_decompressBegin_usingDict(refDCtx, dictBuffer, dictBufferSize);
for (blockNb=0; blockNb<nbBlocks; blockNb++) {
size_t regenSize = ZSTD_decompress_usingPreparedDCtx(dctx, refDCtx,