]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
kSlotNew
authorinikep <inikep@gmail.com>
Thu, 17 Mar 2016 16:24:17 +0000 (17:24 +0100)
committerinikep <inikep@gmail.com>
Thu, 17 Mar 2016 16:24:17 +0000 (17:24 +0100)
lib/zstd_compress.c
lib/zstd_decompress.c
lib/zstd_internal.h
programs/bench.c

index f9022cc86786570b2bcaa5894be7129da38198c7..d8294575024d3d9cc629f21253b1e7d2fef2b85e 100644 (file)
@@ -1662,10 +1662,20 @@ _storeSequence:
         {
 #if ZSTD_REP_NUM == 4
             if (offset >= ZSTD_REP_NUM) {
+#if 0
                 rep[3] = rep[2];
                 rep[2] = rep[1];
                 rep[1] = rep[0];
                 rep[0] = offset - (ZSTD_REP_NUM - 1);
+#else
+                if (kSlotNew < 3)
+                    rep[3] = rep[2];
+                if (kSlotNew < 2)
+                    rep[2] = rep[1];
+                if (kSlotNew < 1)
+                    rep[1] = rep[0];               
+                rep[kSlotNew] = offset - (ZSTD_REP_NUM - 1);
+#endif
             } else {
                 if (offset != 0) {
                     size_t temp = rep[offset];
@@ -2463,6 +2473,3 @@ ZSTD_parameters ZSTD_getParams(int compressionLevel, U64 srcSizeHint)
     result.srcSize = srcSizeHint;
     return result;
 }
-
-
-void ZSTD_setAdditionalParam(ZSTD_CCtx* ctx, int additionalParam) { ctx->additionalParam = additionalParam; };
index 305f9b90fa50adc7d0ed5f560153c35f7574337e..a8d0375e149a7b1543839a55db1f7f9b6db4aabe 100644 (file)
@@ -620,8 +620,6 @@ typedef struct {
     const BYTE* dumpsEnd;
 } seqState_t;
 
-
-
 static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
 {
     size_t litLength;
@@ -632,9 +630,6 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
 
     /* Literal length */
     litLength = FSE_peakSymbol(&(seqState->stateLL));
-#if 0 //ZSTD_REP_NUM == 1
-    size_t prevOffset = litLength ? seq->offset : seqState->prevOffset[0];
-#endif
     if (litLength == MaxLL) {
         U32 add = *dumps++;
         if (add < 255) litLength += add;
@@ -661,9 +656,10 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
         if (offsetCode==0) {
             if (!litLength) {
                 offset = seqState->prevOffset[1];
-                seqState->prevOffset[1] = seq->offset;   /* cmove */
+                seqState->prevOffset[1] = seqState->prevOffset[0];
+                seqState->prevOffset[0] = offset;
             } else
-                offset = seq->offset;
+                offset = seqState->prevOffset[0];
         } else {
             if (offset < ZSTD_REP_NUM) { /* offset = 1,2,3 */
                 size_t temp = seqState->prevOffset[offset];
@@ -671,23 +667,30 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
                     if (offset == 3) seqState->prevOffset[3] = seqState->prevOffset[2];
                     seqState->prevOffset[2] = seqState->prevOffset[1];
                 }
-                seqState->prevOffset[1] = seq->offset;
                 offset = temp;
+                seqState->prevOffset[1] = seqState->prevOffset[0];
+                seqState->prevOffset[0] = offset;
             } else {
                 offset -= ZSTD_REP_NUM - 1;
+#if 0
                 seqState->prevOffset[3] = seqState->prevOffset[2];
                 seqState->prevOffset[2] = seqState->prevOffset[1];
-                seqState->prevOffset[1] = seq->offset;   /* cmove */
+                seqState->prevOffset[1] = seqState->prevOffset[0];
+                seqState->prevOffset[0] = offset;
+#else
+                if (kSlotNew < 3)
+                    seqState->prevOffset[3] = seqState->prevOffset[2];
+                if (kSlotNew < 2)
+                    seqState->prevOffset[2] = seqState->prevOffset[1];
+                if (kSlotNew < 1)
+                    seqState->prevOffset[1] = seqState->prevOffset[0];               
+                seqState->prevOffset[kSlotNew] = offset;
+#endif
             }
         }
-#else
-#if 0
-        if (offsetCode==0) offset = prevOffset;   /* repcode, cmove */
-        if (offsetCode | !litLength) seqState->prevOffset[0] = seq->offset;   /* cmove */
 #else
         if (offsetCode==0) offset = litLength ? seq->offset : seqState->prevOffset[0];   /* repcode, cmove */
         if (offsetCode | !litLength) seqState->prevOffset[0] = seq->offset;   /* cmove */
-#endif
 #endif
         FSE_decodeSymbol(&(seqState->stateOffb), &(seqState->DStream));    /* update */
 //    printf("offsetCode=%d nbBits=%d offset=%d\n", offsetCode, nbBits, (int)offset); fflush(stdout);
index cccd801f5886c4e2d248393b06dfd21bdf767379..208bf5048b4bc92ceb64b535b4ed4564ae549253 100644 (file)
@@ -51,9 +51,7 @@
 *  Common constants
 ***************************************/
 #define ZSTD_OPT_DEBUG 0     // 1 = tableID=0;  3 = price func tests;  5 = check encoded sequences;  9 = full logs
-#if defined(ZSTD_OPT_DEBUG) && ZSTD_OPT_DEBUG>0
-    #include <stdio.h>
-#endif
+#include <stdio.h>
 #if defined(ZSTD_OPT_DEBUG) && ZSTD_OPT_DEBUG>=9
     #define ZSTD_LOG_PARSER(...) printf(__VA_ARGS__)
     #define ZSTD_LOG_ENCODE(...) printf(__VA_ARGS__)
@@ -227,7 +225,6 @@ typedef struct {
 
 seqStore_t ZSTD_copySeqStore(const ZSTD_CCtx* ctx);
 
-void ZSTD_setAdditionalParam(ZSTD_CCtx* ctx, int additionalParam);
-
+extern int kSlotNew;
 
 #endif   /* ZSTD_CCOMMON_H_MODULE */
index 0499cc3c923d462079edb4c10a2cf9b1dbbd29e6..40146c10b3c0758db48606fdf216e27d305d46dc 100644 (file)
@@ -228,6 +228,8 @@ typedef struct
 #define MIN(a,b) ((a)<(b) ? (a) : (b))
 #define MAX(a,b) ((a)>(b) ? (a) : (b))
 
+int kSlotNew = 0;
+
 static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
                         const char* displayName, int cLevel, int additionalParam,
                         const size_t* fileSizes, U32 nbFiles,
@@ -280,8 +282,9 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
     }   }   }
 
     /* warmimg up memory */
-    int timeloop = additionalParam ? additionalParam : 2500;
-    ZSTD_setAdditionalParam(refCtx, additionalParam);
+//    int timeloop = additionalParam ? additionalParam : 2500;
+    int timeloop = 2500;
+    kSlotNew = additionalParam;
     RDG_genBuffer(compressedBuffer, maxCompressedSize, 0.10, 0.50, 1);
 
     /* Bench */