U32 dummy32; /* to be nullified at the end */
size_t mnum = 0;
+#if 1
bestLength = 0;
+#else
+ bestLength--;
+#endif
hashTable[h] = current; /* Update Hash Table */
while (nbCompares-- && (matchIndex > windowLow)) {
match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
}
+#if 1
if (matchLength > bestLength) {
if (matchLength > matchEndIdx - matchIndex)
matchEndIdx = matchIndex + (U32)matchLength;
-#if 0
- if (mnum == 0 || (4*(int)(matchLength-bestLength)) > (int)(ZSTD_highbit(current-matchIndex+1) - ZSTD_highbit((U32)matches[mnum-1].off+1)) )
-#endif
{
- if (matchLength >= MINMATCH)
- {
+ if (matchLength >= MINMATCH) {
bestLength = matchLength;
matches[mnum].off = current - matchIndex;
matches[mnum].len = matchLength;
if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
break; /* drop, to guarantee consistency (miss a little bit of compression) */
}
+#else
+ if (matchLength > matchEndIdx - matchIndex)
+ matchEndIdx = matchIndex + (U32)matchLength;
+
+ if (matchLength > bestLength) {
+ bestLength = matchLength;
+ matches[mnum].off = current - matchIndex;
+ matches[mnum].len = matchLength;
+ matches[mnum].back = 0;
+ mnum++;
+
+ if (matchLength > LZ5_OPT_NUM) break;
+ }
+
+ if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
+ break; /* drop, to guarantee consistency (miss a little bit of compression) */
+#endif
+
if (match[matchLength] < ip[matchLength]) {
/* match is smaller than current */
LZ5_LOG_PARSER("%d: Found2 pred=%d mlen=%d best_mlen=%d off=%d price=%d litlen=%d price[%d]=%d\n", (int)(inr-base), matches[i].back, mlen, best_mlen, matches[i].off, price, litlen, cur - litlen, opt[cur - litlen].price);
LZ5_LOG_TRY_PRICE("%d: TRY8 price=%d opt[%d].price=%d\n", (int)(inr-base), price, cur2 + mlen, opt[cur2 + mlen].price);
- if (cur2 + mlen > last_pos || ((matches[i].off != opt[cur2 + mlen].off) && (price < opt[cur2 + mlen].price)))
- // if (cur2 + mlen > last_pos || (price < opt[cur2 + mlen].price))
+
+ if (cur2 + mlen > last_pos || (price < opt[cur2 + mlen].price))
{
SET_PRICE(cur2 + mlen, mlen, matches[i].off, litlen, price);