diff options
author | Brotli <no-reply@google.com> | 2024-05-31 09:10:52 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-05-31 09:11:23 -0700 |
commit | a528bce9f65be7515a47cec2cbdcd8023822b99b (patch) | |
tree | cac86faefa8a58c4b14211d527032ca5fc98c166 /c/enc/hash_longest_match_inc.h | |
parent | fe754f3459f4fd60d41aae7e87b5053b2ab3a7a3 (diff) | |
download | brotli-a528bce9f65be7515a47cec2cbdcd8023822b99b.zip brotli-a528bce9f65be7515a47cec2cbdcd8023822b99b.tar.gz brotli-a528bce9f65be7515a47cec2cbdcd8023822b99b.tar.bz2 |
Hoist the static bounds check out of the combined if check.
PiperOrigin-RevId: 639054702
Diffstat (limited to 'c/enc/hash_longest_match_inc.h')
-rw-r--r-- | c/enc/hash_longest_match_inc.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/c/enc/hash_longest_match_inc.h b/c/enc/hash_longest_match_inc.h index b744f4d..58e88b3 100644 --- a/c/enc/hash_longest_match_inc.h +++ b/c/enc/hash_longest_match_inc.h @@ -192,8 +192,10 @@ static BROTLI_INLINE void FN(FindLongestMatch)( } prev_ix &= ring_buffer_mask; - if (cur_ix_masked + best_len > ring_buffer_mask || - prev_ix + best_len > ring_buffer_mask || + if (cur_ix_masked + best_len > ring_buffer_mask) { + break; + } + if (prev_ix + best_len > ring_buffer_mask || data[cur_ix_masked + best_len] != data[prev_ix + best_len]) { continue; } @@ -234,8 +236,10 @@ static BROTLI_INLINE void FN(FindLongestMatch)( break; } prev_ix &= ring_buffer_mask; - if (cur_ix_masked + best_len > ring_buffer_mask || - prev_ix + best_len > ring_buffer_mask || + if (cur_ix_masked + best_len > ring_buffer_mask) { + break; + } + if (prev_ix + best_len > ring_buffer_mask || /* compare 4 bytes ending at best_len + 1 */ BrotliUnalignedRead32(&data[cur_ix_masked + best_len - 3]) != BrotliUnalignedRead32(&data[prev_ix + best_len - 3])) { |