* offset.
*/
static inline unsigned
-lzx_get_matches(struct lzx_compressor *c,
- const struct lz_match **matches_ret)
+lzx_get_matches(struct lzx_compressor *c, const struct lz_match **matches_ret)
{
return (*c->get_matches_func)(c, matches_ret);
}
unsigned main_symbol;
if (len - LZX_MIN_MATCH_LEN < LZX_NUM_PRIMARY_LENS) {
- len_header = len - LZX_MIN_MATCH_LEN ;
+ len_header = len - LZX_MIN_MATCH_LEN;
cost = 0;
} else {
len_header = LZX_NUM_PRIMARY_LENS;
* length 3 match. Output the previous match if there
* is one; otherwise output a literal. */
+ no_match_found:
+
if (prev_len) {
skip_len = prev_len - 2;
goto output_prev_match;
if (unlikely(cur_len > block_end - (window_ptr - 1))) {
/* Nearing end of block. */
cur_len = block_end - (window_ptr - 1);
- if (cur_len < 3) {
- lzx_declare_literal(c, *(window_ptr - 1), &next_chosen_item);
- prev_len = 0;
- continue;
- }
+ if (cur_len < 3)
+ goto no_match_found;
}
if (prev_len == 0 || cur_score > prev_score) {
lzx_choose_verbatim_or_aligned(const struct lzx_freqs * freqs,
const struct lzx_codes * codes)
{
- unsigned aligned_cost = 0;
- unsigned verbatim_cost = 0;
+ u32 aligned_cost = 0;
+ u32 verbatim_cost = 0;
- /* A verbatim block require 3 bits in each place that an aligned symbol
- * was used. */
+ /* A verbatim block requires 3 bits in each place that an aligned symbol
+ * would be used in an aligned offset block. */
for (unsigned i = 0; i < LZX_ALIGNEDCODE_NUM_SYMBOLS; i++) {
verbatim_cost += 3 * freqs->aligned[i];
aligned_cost += codes->lens.aligned[i] * freqs->aligned[i];