xz: Minor clean up for coder.c

* Moved max_block_list_size from a global to local variable.
* Reworded error message in validate_block_list_filter().
* Removed helper function filter_chain_error().
* Changed 1 << X to 1U << X in many places
This commit is contained in:
Jia Tan 2023-07-13 21:46:12 +08:00
parent 9adc9e5615
commit f907705eb1
1 changed files with 21 additions and 32 deletions

View File

@ -53,13 +53,6 @@ static uint32_t filters_used_mask = 1;
/// Track the memory usage for all filter chains (default or --filtersX). /// Track the memory usage for all filter chains (default or --filtersX).
/// The memory usage may need to be scaled down depending on the memory limit. /// The memory usage may need to be scaled down depending on the memory limit.
static uint64_t filter_memusages[ARRAY_SIZE(filters)]; static uint64_t filter_memusages[ARRAY_SIZE(filters)];
# ifdef MYTHREAD_ENABLED
/// Represents the largest Block size specified with --block-list. This
/// is needed to help reduce the Block size in the multithreaded encoder
/// so memory is not wasted.
static uint64_t max_block_list_size = 0;
# endif
#endif #endif
/// Input and output buffers /// Input and output buffers
@ -219,12 +212,12 @@ extern void
coder_add_block_filters(const char *str, size_t slot) coder_add_block_filters(const char *str, size_t slot)
{ {
// Free old filters first, if they were previously allocated. // Free old filters first, if they were previously allocated.
if (filters_used_mask & (1 << slot)) if (filters_used_mask & (1U << slot))
lzma_filters_free(filters[slot], NULL); lzma_filters_free(filters[slot], NULL);
str_to_filters(str, slot, 0); str_to_filters(str, slot, 0);
filters_used_mask |= 1 << slot; filters_used_mask |= 1U << slot;
} }
@ -245,8 +238,8 @@ memlimit_too_small(uint64_t memory_usage)
static void static void
validate_block_list_filter(const uint32_t filter_num) validate_block_list_filter(const uint32_t filter_num)
{ {
if (!(filters_used_mask & (1 << filter_num))) if (!(filters_used_mask & (1U << filter_num)))
message_fatal(_("filter chain %u used by --block-list, but " message_fatal(_("filter chain %u used by --block-list but "
"not specified with --filters%u="), "not specified with --filters%u="),
(unsigned)filter_num, (unsigned)filter_num); (unsigned)filter_num, (unsigned)filter_num);
} }
@ -270,7 +263,7 @@ filters_memusage_max(const lzma_mt *mt, bool encode)
#endif #endif
for (uint32_t i = 0; i < ARRAY_SIZE(filters); i++) { for (uint32_t i = 0; i < ARRAY_SIZE(filters); i++) {
if (!(filters_used_mask & (1 << i))) if (!(filters_used_mask & (1U << i)))
continue; continue;
uint64_t memusage = UINT64_MAX; uint64_t memusage = UINT64_MAX;
@ -301,20 +294,8 @@ filters_memusage_max(const lzma_mt *mt, bool encode)
return max_memusage; return max_memusage;
} }
# ifdef MYTHREAD_ENABLED
static void
filter_chain_error(const uint32_t index, const char *msg)
{
if (index == 0)
message_fatal(_("Error in the filter chain: %s"), msg);
else
message_fatal(_("Error in --filters%d: %s"), index, msg);
}
# endif
#endif #endif
extern void extern void
coder_set_compression_settings(void) coder_set_compression_settings(void)
{ {
@ -324,6 +305,13 @@ coder_set_compression_settings(void)
#endif #endif
#ifdef HAVE_ENCODERS #ifdef HAVE_ENCODERS
# ifdef MYTHREAD_ENABLED
// Represents the largest Block size specified with --block-list. This
// is needed to help reduce the Block size in the multithreaded encoder
// so memory is not wasted.
uint64_t max_block_list_size = 0;
# endif
if (opt_block_list != NULL) { if (opt_block_list != NULL) {
// This mask tracks the filters actually referenced in // This mask tracks the filters actually referenced in
// --block-list. It is used to help remove bits from // --block-list. It is used to help remove bits from
@ -336,7 +324,7 @@ coder_set_compression_settings(void)
opt_block_list[i].filters_index); opt_block_list[i].filters_index);
// Mark the current filter as referenced. // Mark the current filter as referenced.
filters_ref_mask |= 1 << filters_ref_mask |= 1U <<
opt_block_list[i].filters_index; opt_block_list[i].filters_index;
# ifdef MYTHREAD_ENABLED # ifdef MYTHREAD_ENABLED
@ -431,7 +419,7 @@ coder_set_compression_settings(void)
// support LZMA_SYNC_FLUSH so single-threaded mode must be used. // support LZMA_SYNC_FLUSH so single-threaded mode must be used.
if (opt_mode == MODE_COMPRESS && opt_flush_timeout != 0) { if (opt_mode == MODE_COMPRESS && opt_flush_timeout != 0) {
for (uint32_t i = 0; i < ARRAY_SIZE(filters); ++i) { for (uint32_t i = 0; i < ARRAY_SIZE(filters); ++i) {
if (!(filters_used_mask & (1 << i))) if (!(filters_used_mask & (1U << i)))
continue; continue;
const lzma_filter *fc = filters[i]; const lzma_filter *fc = filters[i];
@ -481,7 +469,7 @@ coder_set_compression_settings(void)
if (block_size == 0) { if (block_size == 0) {
for (uint32_t i = 0; i < ARRAY_SIZE(filters); for (uint32_t i = 0; i < ARRAY_SIZE(filters);
i++) { i++) {
if (!(filters_used_mask & (1 << i))) if (!(filters_used_mask & (1U << i)))
continue; continue;
uint64_t size = lzma_mt_block_size( uint64_t size = lzma_mt_block_size(
@ -492,9 +480,10 @@ coder_set_compression_settings(void)
// invalid, so there is no point in // invalid, so there is no point in
// progressing further. // progressing further.
if (size == UINT64_MAX) if (size == UINT64_MAX)
filter_chain_error(i, message_fatal(_("Unsupported "
message_strm( "options in filter "
LZMA_OPTIONS_ERROR)); "chain %u"),
(unsigned)i);
if (size > block_size) if (size > block_size)
block_size = size; block_size = size;
@ -691,7 +680,7 @@ coder_set_compression_settings(void)
r->filters = NULL; r->filters = NULL;
r->reduce_dict_size = false; r->reduce_dict_size = false;
if (!(filters_used_mask & (1 << i))) if (!(filters_used_mask & (1U << i)))
continue; continue;
for (uint32_t j = 0; filters[i][j].id != LZMA_VLI_UNKNOWN; for (uint32_t j = 0; filters[i][j].id != LZMA_VLI_UNKNOWN;
@ -1525,7 +1514,7 @@ coder_free(void)
// debug mode and will be freed when the process ends anyway, we // debug mode and will be freed when the process ends anyway, we
// don't worry about freeing it. // don't worry about freeing it.
for (uint32_t i = 1; i < ARRAY_SIZE(filters); i++) { for (uint32_t i = 1; i < ARRAY_SIZE(filters); i++) {
if (filters_used_mask & (1 << i)) if (filters_used_mask & (1U << i))
lzma_filters_free(filters[i], NULL); lzma_filters_free(filters[i], NULL);
} }