]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Inline the CHUNKSIZE function
authorCameron Cawley <ccawley2011@gmail.com>
Thu, 2 Oct 2025 16:14:09 +0000 (17:14 +0100)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 7 Oct 2025 10:45:01 +0000 (12:45 +0200)
13 files changed:
arch/arm/arm_functions.h
arch/generic/generic_functions.h
arch/loongarch/loongarch_functions.h
arch/power/power_functions.h
arch/riscv/riscv_functions.h
arch/x86/x86_functions.h
chunkset_tpl.h
functable.c
functable.h
infback.c
inffast_tpl.h
inflate.c
inflate.h

index 8a89c7c4fc5886379eab46e3d5d0eae969f3d511..f313655e79d9db361e06ce6118402df144d749c0 100644 (file)
@@ -8,7 +8,6 @@
 #ifdef ARM_NEON
 uint32_t adler32_neon(uint32_t adler, const uint8_t *buf, size_t len);
 uint32_t adler32_fold_copy_neon(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
-uint32_t chunksize_neon(void);
 uint8_t* chunkmemset_safe_neon(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 
 #  ifdef HAVE_BUILTIN_CTZLL
@@ -45,8 +44,6 @@ void slide_hash_armv6(deflate_state *s);
 #    define native_adler32_fold_copy adler32_fold_copy_neon
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_neon
-#    undef native_chunksize
-#    define native_chunksize chunksize_neon
 #    undef native_inflate_fast
 #    define native_inflate_fast inflate_fast_neon
 #    undef native_slide_hash
index e2073b8f1022371f9e9303c25dcc28aa8f26195f..21358f06919d0f387b57421e9cfc164ecdabb953 100644 (file)
@@ -19,7 +19,6 @@ uint32_t adler32_c(uint32_t adler, const uint8_t *buf, size_t len);
 uint32_t adler32_fold_copy_c(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
 
 uint8_t* chunkmemset_safe_c(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
-uint32_t chunksize_c(void);
 
 uint32_t compare256_c(const uint8_t *src0, const uint8_t *src1);
 
@@ -51,7 +50,6 @@ void     slide_hash_c(deflate_state *s);
 #  define native_adler32 adler32_c
 #  define native_adler32_fold_copy adler32_fold_copy_c
 #  define native_chunkmemset_safe chunkmemset_safe_c
-#  define native_chunksize chunksize_c
 #  define native_crc32 crc32_c
 #  define native_crc32_fold crc32_fold_c
 #  define native_crc32_fold_copy crc32_fold_copy_c
index 3bc8344da6d90e74f54c98c48206b6abdbd0fc27..798c1484c2f320da96fb0e17fbf62aeabcdcffc6 100644 (file)
@@ -23,7 +23,6 @@ void slide_hash_lsx(deflate_state *s);
     uint32_t longest_match_lsx(deflate_state *const s, Pos cur_match);
     uint32_t longest_match_slow_lsx(deflate_state *const s, Pos cur_match);
 #  endif
-uint32_t chunksize_lsx(void);
 uint8_t* chunkmemset_safe_lsx(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 void inflate_fast_lsx(PREFIX3(stream) *strm, uint32_t start);
 #endif
@@ -37,7 +36,6 @@ void slide_hash_lasx(deflate_state *s);
     uint32_t longest_match_lasx(deflate_state *const s, Pos cur_match);
     uint32_t longest_match_slow_lasx(deflate_state *const s, Pos cur_match);
 #  endif
-uint32_t chunksize_lasx(void);
 uint8_t* chunkmemset_safe_lasx(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 void inflate_fast_lasx(PREFIX3(stream) *strm, uint32_t start);
 #endif
@@ -59,8 +57,6 @@ void inflate_fast_lasx(PREFIX3(stream) *strm, uint32_t start);
 #    define native_adler32_fold_copy adler32_fold_copy_lsx
 #    undef native_slide_hash
 #    define native_slide_hash slide_hash_lsx
-#    undef native_chunksize
-#    define native_chunksize chunksize_lsx
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_lsx
 #    undef native_inflate_fast
@@ -81,8 +77,6 @@ void inflate_fast_lasx(PREFIX3(stream) *strm, uint32_t start);
 #    define native_adler32_fold_copy adler32_fold_copy_lasx
 #    undef native_slide_hash
 #    define native_slide_hash slide_hash_lasx
-#    undef native_chunksize
-#    define native_chunksize chunksize_lasx
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_lasx
 #    undef native_inflate_fast
index 44d36af83423bca4320b6fc47adfffe98bdf836e..6508b979d4f6f739a1ecf4a6c78649d44bcb1ae4 100644 (file)
@@ -14,7 +14,6 @@ void slide_hash_vmx(deflate_state *s);
 
 #ifdef POWER8_VSX
 uint32_t adler32_power8(uint32_t adler, const uint8_t *buf, size_t len);
-uint32_t chunksize_power8(void);
 uint8_t* chunkmemset_safe_power8(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 uint32_t crc32_power8(uint32_t crc, const uint8_t *buf, size_t len);
 void slide_hash_power8(deflate_state *s);
@@ -42,8 +41,6 @@ uint32_t longest_match_slow_power9(deflate_state *const s, Pos cur_match);
 #    define native_adler32 adler32_power8
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_power8
-#    undef native_chunksize
-#    define native_chunksize chunksize_power8
 #    undef native_inflate_fast
 #    define native_inflate_fast inflate_fast_power8
 #    undef native_slide_hash
index 86b68a6df5743c9ee976a4a22f9f7ea304e9bbe6..d68dded92caddd2f0b6b04274100236b427d4a8a 100644 (file)
@@ -12,7 +12,6 @@
 #ifdef RISCV_RVV
 uint32_t adler32_rvv(uint32_t adler, const uint8_t *buf, size_t len);
 uint32_t adler32_fold_copy_rvv(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
-uint32_t chunksize_rvv(void);
 uint8_t* chunkmemset_safe_rvv(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 uint32_t compare256_rvv(const uint8_t *src0, const uint8_t *src1);
 
@@ -35,8 +34,6 @@ uint32_t crc32_riscv64_zbc(uint32_t crc, const uint8_t *buf, size_t len);
 #    define native_adler32_fold_copy adler32_fold_copy_rvv
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_rvv
-#    undef native_chunksize
-#    define native_chunksize chunksize_rvv
 #    undef native_compare256
 #    define native_compare256 compare256_rvv
 #    undef native_inflate_fast
index 9cf4b4313334af6734c182a9791abfdfa9275983..ddb61b74e73c15733f4bd99cfe9c78e9894671e6 100644 (file)
@@ -15,7 +15,6 @@
 #endif
 
 #ifdef X86_SSE2
-uint32_t chunksize_sse2(void);
 uint8_t* chunkmemset_safe_sse2(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 
 #  ifdef HAVE_BUILTIN_CTZ
@@ -49,7 +48,6 @@ uint32_t adler32_fold_copy_sse42(uint32_t adler, uint8_t *dst, const uint8_t *sr
 #ifdef X86_AVX2
 uint32_t adler32_avx2(uint32_t adler, const uint8_t *buf, size_t len);
 uint32_t adler32_fold_copy_avx2(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
-uint32_t chunksize_avx2(void);
 uint8_t* chunkmemset_safe_avx2(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 
 #  ifdef HAVE_BUILTIN_CTZ
@@ -63,7 +61,6 @@ uint8_t* chunkmemset_safe_avx2(uint8_t *out, uint8_t *from, unsigned len, unsign
 #ifdef X86_AVX512
 uint32_t adler32_avx512(uint32_t adler, const uint8_t *buf, size_t len);
 uint32_t adler32_fold_copy_avx512(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
-uint32_t chunksize_avx512(void);
 uint8_t* chunkmemset_safe_avx512(uint8_t *out, uint8_t *from, unsigned len, unsigned left);
 void inflate_fast_avx512(PREFIX3(stream)* strm, uint32_t start);
 #  ifdef HAVE_BUILTIN_CTZLL
@@ -97,8 +94,6 @@ uint32_t crc32_vpclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len);
 #  if (defined(X86_SSE2) && defined(__SSE2__)) || defined(__x86_64__) || defined(_M_X64) || defined(X86_NOCHECK_SSE2)
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_sse2
-#    undef native_chunksize
-#    define native_chunksize chunksize_sse2
 #    undef native_inflate_fast
 #    define native_inflate_fast inflate_fast_sse2
 #    undef native_slide_hash
@@ -156,8 +151,6 @@ uint32_t crc32_vpclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len);
 #    define native_adler32_fold_copy adler32_fold_copy_avx2
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_avx2
-#    undef native_chunksize
-#    define native_chunksize chunksize_avx2
 #    undef native_inflate_fast
 #    define native_inflate_fast inflate_fast_avx2
 #    undef native_slide_hash
@@ -179,8 +172,6 @@ uint32_t crc32_vpclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len);
 #    define native_adler32_fold_copy adler32_fold_copy_avx512
 #    undef native_chunkmemset_safe
 #    define native_chunkmemset_safe chunkmemset_safe_avx512
-#    undef native_chunksize
-#    define native_chunksize chunksize_avx512
 #    undef native_inflate_fast
 #    define native_inflate_fast inflate_fast_avx512
 #    ifdef HAVE_BUILTIN_CTZLL
index 383b4d8f84b1120c1affbe1738cca5a8ca95594b..2087e66f5e362990e323aa1659167b915aa1dedf 100644 (file)
@@ -6,7 +6,7 @@
 #include <stdlib.h>
 
 /* Returns the chunk size */
-Z_INTERNAL uint32_t CHUNKSIZE(void) {
+static inline size_t CHUNKSIZE(void) {
     return sizeof(chunk_t);
 }
 
index f09544d1267f63c68a18742fd61e9153999f39ee..831a8a27bda9ea343883719e6364bb458d08fb5f 100644 (file)
@@ -53,7 +53,6 @@ static void init_functable(void) {
     ft.adler32 = &adler32_c;
     ft.adler32_fold_copy = &adler32_fold_copy_c;
     ft.chunkmemset_safe = &chunkmemset_safe_c;
-    ft.chunksize = &chunksize_c;
     ft.crc32 = &crc32_c;
     ft.crc32_fold = &crc32_fold_c;
     ft.crc32_fold_copy = &crc32_fold_copy_c;
@@ -74,7 +73,6 @@ static void init_functable(void) {
 #  endif
     {
         ft.chunkmemset_safe = &chunkmemset_safe_sse2;
-        ft.chunksize = &chunksize_sse2;
 #if !defined(WITHOUT_CHORBA) && !defined(NO_CHORBA_SSE)
         ft.crc32 = &crc32_chorba_sse2;
 #endif
@@ -131,7 +129,6 @@ static void init_functable(void) {
         ft.adler32 = &adler32_avx2;
         ft.adler32_fold_copy = &adler32_fold_copy_avx2;
         ft.chunkmemset_safe = &chunkmemset_safe_avx2;
-        ft.chunksize = &chunksize_avx2;
         ft.inflate_fast = &inflate_fast_avx2;
         ft.slide_hash = &slide_hash_avx2;
 #  ifdef HAVE_BUILTIN_CTZ
@@ -147,7 +144,6 @@ static void init_functable(void) {
         ft.adler32 = &adler32_avx512;
         ft.adler32_fold_copy = &adler32_fold_copy_avx512;
         ft.chunkmemset_safe = &chunkmemset_safe_avx512;
-        ft.chunksize = &chunksize_avx512;
         ft.inflate_fast = &inflate_fast_avx512;
 #  ifdef HAVE_BUILTIN_CTZLL
         ft.compare256 = &compare256_avx512;
@@ -192,7 +188,6 @@ static void init_functable(void) {
         ft.adler32 = &adler32_neon;
         ft.adler32_fold_copy = &adler32_fold_copy_neon;
         ft.chunkmemset_safe = &chunkmemset_safe_neon;
-        ft.chunksize = &chunksize_neon;
         ft.inflate_fast = &inflate_fast_neon;
         ft.slide_hash = &slide_hash_neon;
 #  ifdef HAVE_BUILTIN_CTZLL
@@ -224,7 +219,6 @@ static void init_functable(void) {
     if (cf.power.has_arch_2_07) {
         ft.adler32 = &adler32_power8;
         ft.chunkmemset_safe = &chunkmemset_safe_power8;
-        ft.chunksize = &chunksize_power8;
         ft.inflate_fast = &inflate_fast_power8;
         ft.slide_hash = &slide_hash_power8;
     }
@@ -249,7 +243,6 @@ static void init_functable(void) {
         ft.adler32 = &adler32_rvv;
         ft.adler32_fold_copy = &adler32_fold_copy_rvv;
         ft.chunkmemset_safe = &chunkmemset_safe_rvv;
-        ft.chunksize = &chunksize_rvv;
         ft.compare256 = &compare256_rvv;
         ft.inflate_fast = &inflate_fast_rvv;
         ft.longest_match = &longest_match_rvv;
@@ -289,7 +282,6 @@ static void init_functable(void) {
         ft.longest_match = &longest_match_lsx;
         ft.longest_match_slow = &longest_match_slow_lsx;
 #  endif
-        ft.chunksize = &chunksize_lsx;
         ft.chunkmemset_safe = &chunkmemset_safe_lsx;
         ft.inflate_fast = &inflate_fast_lsx;
     }
@@ -304,7 +296,6 @@ static void init_functable(void) {
         ft.longest_match = &longest_match_lasx;
         ft.longest_match_slow = &longest_match_slow_lasx;
 #  endif
-        ft.chunksize = &chunksize_lasx;
         ft.chunkmemset_safe = &chunkmemset_safe_lasx;
         ft.inflate_fast = &inflate_fast_lasx;
     }
@@ -315,7 +306,6 @@ static void init_functable(void) {
     FUNCTABLE_ASSIGN(ft, adler32);
     FUNCTABLE_ASSIGN(ft, adler32_fold_copy);
     FUNCTABLE_ASSIGN(ft, chunkmemset_safe);
-    FUNCTABLE_ASSIGN(ft, chunksize);
     FUNCTABLE_ASSIGN(ft, compare256);
     FUNCTABLE_ASSIGN(ft, crc32);
     FUNCTABLE_ASSIGN(ft, crc32_fold);
@@ -351,11 +341,6 @@ static uint8_t* chunkmemset_safe_stub(uint8_t* out, uint8_t *from, unsigned len,
     return functable.chunkmemset_safe(out, from, len, left);
 }
 
-static uint32_t chunksize_stub(void) {
-    init_functable();
-    return functable.chunksize();
-}
-
 static uint32_t compare256_stub(const uint8_t* src0, const uint8_t* src1) {
     init_functable();
     return functable.compare256(src0, src1);
@@ -412,7 +397,6 @@ Z_INTERNAL struct functable_s functable = {
     adler32_stub,
     adler32_fold_copy_stub,
     chunkmemset_safe_stub,
-    chunksize_stub,
     compare256_stub,
     crc32_stub,
     crc32_fold_stub,
index 83dda8808865295f7c10399c8a4c6660d03ca7b2..7e3b603686a3b1c18c11ad9311439730b42399c9 100644 (file)
@@ -28,7 +28,6 @@ struct functable_s {
     uint32_t (* adler32)            (uint32_t adler, const uint8_t *buf, size_t len);
     uint32_t (* adler32_fold_copy)  (uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len);
     uint8_t* (* chunkmemset_safe)   (uint8_t *out, uint8_t *from, unsigned len, unsigned left);
-    uint32_t (* chunksize)          (void);
     uint32_t (* compare256)         (const uint8_t *src0, const uint8_t *src1);
     uint32_t (* crc32)              (uint32_t crc, const uint8_t *buf, size_t len);
     void     (* crc32_fold)         (struct crc32_fold_s *crc, const uint8_t *src, size_t len, uint32_t init_crc);
index b6d98d4a3faba97a02a1d61caa44f45f4a2ca154..b3494e26a218d0aaf0714539aa21243c13a5e4ed 100644 (file)
--- a/infback.c
+++ b/infback.c
@@ -59,7 +59,6 @@ int32_t ZNG_CONDEXPORT PREFIX(inflateBackInit)(PREFIX3(stream) *strm, int32_t wi
     state->window = window;
     state->wnext = 0;
     state->whave = 0;
-    state->chunksize = FUNCTABLE_CALL(chunksize)();
 #ifdef INFLATE_STRICT
     state->dmax = 32768U;
 #endif
index 2ec865dbff6c1f38090ff30d0dce159b6f1d60f1..4f0ca982733a00ab61df0de3b0c85e13fc882fa9 100644 (file)
@@ -272,7 +272,7 @@ void Z_INTERNAL INFLATE_FAST(PREFIX3(stream) *strm, uint32_t start) {
                        so unroll and roundoff operations can write beyond `out+len` so long
                        as they stay within 258 bytes of `out`.
                     */
-                    if (dist >= len || dist >= state->chunksize)
+                    if (dist >= len || dist >= CHUNKSIZE())
                         out = CHUNKCOPY(out, out - dist, len);
                     else
                         out = CHUNKMEMSET(out, out - dist, len);
index 8c373da69d42f18a8c63fa7d79fe3dd8d594d07e..8baa725c0e473ece01d465bc722d2816c3b3dca1 100644 (file)
--- a/inflate.c
+++ b/inflate.c
@@ -246,7 +246,6 @@ int32_t ZNG_CONDEXPORT PREFIX(inflateInit2)(PREFIX3(stream) *strm, int32_t windo
     strm->state = (struct internal_state *)state;
     state->strm = strm;
     state->mode = HEAD;     /* to pass state test in inflateReset2() */
-    state->chunksize = FUNCTABLE_CALL(chunksize)();
     ret = PREFIX(inflateReset2)(strm, windowBits);
     if (ret != Z_OK) {
         free_inflate(strm);
index 9d5c482707eff230df1903580c5f2dc5e5980301..1427e90857f429e18334f363a92207bc30f4cf8d 100644 (file)
--- a/inflate.h
+++ b/inflate.h
@@ -118,7 +118,6 @@ struct ALIGNED_(64) inflate_state {
     uint32_t whave;             /* valid bytes in the window */
     uint32_t wnext;             /* window write index */
     unsigned char *window;      /* allocated sliding window, if needed */
-    uint32_t chunksize;         /* size of memory copying chunk */
 
         /* bit accumulator */
     uint64_t hold;              /* input bit accumulator */