X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Fbt_matchfinder.h;h=4fe754c95c3e7f181460ad01bd3b41646bd7a384;hp=1d30e36216a05876e8074956b3b7dfe4de2e012c;hb=de58d5f57732df8129fbfd71d46ae5968ac59646;hpb=3e8aa757aaa63297f0d54007adf46411778fb6a8 diff --git a/include/wimlib/bt_matchfinder.h b/include/wimlib/bt_matchfinder.h index 1d30e362..4fe754c9 100644 --- a/include/wimlib/bt_matchfinder.h +++ b/include/wimlib/bt_matchfinder.h @@ -127,8 +127,9 @@ bt_right_child(struct bt_matchfinder *mf, pos_t node) * The maximum permissible match length at this position. * @nice_len * Stop searching if a match of at least this length is found. + * Must be <= @max_len. * @max_search_depth - * Limit on the number of potential matches to consider. + * Limit on the number of potential matches to consider. Must be >= 1. * @next_hash * Pointer to the hash code for the current sequence, which was computed * one position in advance so that the binary tree root could be @@ -168,7 +169,7 @@ bt_matchfinder_get_matches(struct bt_matchfinder * const restrict mf, unsigned len; unsigned best_len = min_len - 1; - if (unlikely(max_len < LZ_HASH_REQUIRED_NBYTES + 1)) { + if (unlikely(max_len < LZ_HASH3_REQUIRED_NBYTES + 1)) { *best_len_ret = best_len; return lz_matchptr; } @@ -177,7 +178,7 @@ bt_matchfinder_get_matches(struct bt_matchfinder * const restrict mf, *next_hash = bt_matchfinder_hash_3_bytes(in_next + 1); cur_node = mf->hash_tab[hash]; mf->hash_tab[hash] = in_next - in_begin; - prefetch(&mf->hash_tab[*next_hash]); + prefetchw(&mf->hash_tab[*next_hash]); pending_lt_ptr = bt_left_child(mf, in_next - in_begin); pending_gt_ptr = bt_right_child(mf, in_next - in_begin); @@ -277,14 +278,14 @@ bt_matchfinder_skip_position(struct bt_matchfinder * const restrict mf, unsigned best_lt_len, best_gt_len; unsigned len; - if (unlikely(in_end - in_next < LZ_HASH_REQUIRED_NBYTES + 1)) + if (unlikely(in_end - in_next < LZ_HASH3_REQUIRED_NBYTES + 1)) return; hash = *next_hash; *next_hash = bt_matchfinder_hash_3_bytes(in_next + 1); cur_node = mf->hash_tab[hash]; mf->hash_tab[hash] = in_next - in_begin; - prefetch(&mf->hash_tab[*next_hash]); + prefetchw(&mf->hash_tab[*next_hash]); depth_remaining = max_search_depth; pending_lt_ptr = bt_left_child(mf, in_next - in_begin);