lib/uzlib/lz77: Always use separate history buffer.
Because we only use the streaming source, this is just extra code size. Saves 64 bytes on PYBV11. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
parent
c4feb806e0
commit
82db9926ed
@ -56,13 +56,6 @@ static size_t uzlib_lz77_search_max_match(struct uzlib_lz77_state *state, const
|
|||||||
|
|
||||||
// Compress the given chunk of data.
|
// Compress the given chunk of data.
|
||||||
void uzlib_lz77_compress(struct uzlib_lz77_state *state, const uint8_t *src, unsigned len) {
|
void uzlib_lz77_compress(struct uzlib_lz77_state *state, const uint8_t *src, unsigned len) {
|
||||||
bool use_src_as_history = false;
|
|
||||||
if (state->hist_buf == NULL) {
|
|
||||||
use_src_as_history = true;
|
|
||||||
state->hist_buf = (uint8_t *)src;
|
|
||||||
state->hist_len = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint8_t *top = src + len;
|
const uint8_t *top = src + len;
|
||||||
while (src < top) {
|
while (src < top) {
|
||||||
// Look for a match in the history window.
|
// Look for a match in the history window.
|
||||||
@ -77,16 +70,6 @@ void uzlib_lz77_compress(struct uzlib_lz77_state *state, const uint8_t *src, uns
|
|||||||
zlib_match(&state->outbuf, match_offset, match_len);
|
zlib_match(&state->outbuf, match_offset, match_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Advance the history window.
|
|
||||||
if (use_src_as_history) {
|
|
||||||
// Use src as the history, so advance it.
|
|
||||||
state->hist_len += match_len;
|
|
||||||
if (state->hist_len > state->hist_max) {
|
|
||||||
state->hist_buf += state->hist_len - state->hist_max;
|
|
||||||
state->hist_len = state->hist_max;
|
|
||||||
}
|
|
||||||
src += match_len;
|
|
||||||
} else {
|
|
||||||
// Push the bytes into the history buffer.
|
// Push the bytes into the history buffer.
|
||||||
size_t mask = state->hist_max - 1;
|
size_t mask = state->hist_max - 1;
|
||||||
while (match_len--) {
|
while (match_len--) {
|
||||||
@ -100,8 +83,3 @@ void uzlib_lz77_compress(struct uzlib_lz77_state *state, const uint8_t *src, uns
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_src_as_history) {
|
|
||||||
state->hist_buf = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user