Revert a change made in 3b34851de1eaf358cf9268922fa0eeed8278d680
authorLasse Collin <lasse.collin@tukaani.org>
Sat, 27 Dec 2008 17:32:20 +0000 (19:32 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Sat, 27 Dec 2008 17:32:20 +0000 (19:32 +0200)
that was related to LZMA_MODE_FAST. The original code is slightly
faster although it compresses slightly worse. But since it is fast
mode, it is better to select the faster version.

src/liblzma/lzma/lzma_encoder_optimum_fast.c

index 4e8e26a..a13adbe 100644 (file)
        (((big_dist) >> 7) > (small_dist))
 
 
-static inline void
-literal(const lzma_coder *restrict coder, const uint8_t *restrict buf,
-               uint32_t *restrict back_res, uint32_t *restrict len_res)
-{
-       // Try short rep0 instead of always coding it as a literal.
-       *back_res = *buf == *(buf - coder->reps[0] - 1) ? 0 : UINT32_MAX;
-       *len_res = 1;
-       return;
-}
-
-
 extern void
 lzma_lzma_optimum_fast(lzma_coder *restrict coder, lzma_mf *restrict mf,
                uint32_t *restrict back_res, uint32_t *restrict len_res)
@@ -55,7 +44,8 @@ lzma_lzma_optimum_fast(lzma_coder *restrict coder, lzma_mf *restrict mf,
 
        if (buf_avail < 2) {
                // There's not enough input left to encode a match.
-               literal(coder, buf, back_res, len_res);
+               *back_res = UINT32_MAX;
+               *len_res = 1;
                return;
        }
 
@@ -137,7 +127,8 @@ lzma_lzma_optimum_fast(lzma_coder *restrict coder, lzma_mf *restrict mf,
        }
 
        if (len_main < 2 || buf_avail <= 2) {
-               literal(coder, buf, back_res, len_res);
+               *back_res = UINT32_MAX;
+               *len_res = 1;
                return;
        }
 
@@ -158,7 +149,8 @@ lzma_lzma_optimum_fast(lzma_coder *restrict coder, lzma_mf *restrict mf,
                                || (coder->longest_match_length + 1 >= len_main
                                        && len_main >= 3
                                        && change_pair(new_dist, back_main))) {
-                       literal(coder, buf, back_res, len_res);
+                       *back_res = UINT32_MAX;
+                       *len_res = 1;
                        return;
                }
        }
@@ -181,7 +173,8 @@ lzma_lzma_optimum_fast(lzma_coder *restrict coder, lzma_mf *restrict mf,
                                && buf[len] == buf_back[len]; ++len) ;
 
                if (len >= limit) {
-                       literal(coder, buf - 1, back_res, len_res);
+                       *back_res = UINT32_MAX;
+                       *len_res = 1;
                        return;
                }
        }