Skip to content

Commit 735a61b

Browse files
committed
Add the other patches
1 parent f4e5207 commit 735a61b

File tree

2 files changed

+210
-0
lines changed

2 files changed

+210
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
From e2106cd3e5771690867d826e525e4ad80619d76b Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?=
3+
4+
Date: Wed, 24 Jul 2024 18:43:38 -0700
5+
Subject: [PATCH 1/2] Add aserts and casts to slide_hash*
6+
7+
---
8+
src/native/external/zlib-ng/arch/arm/slide_hash_armv6.c | 4 +++-
9+
src/native/external/zlib-ng/arch/arm/slide_hash_neon.c | 4 +++-
10+
src/native/external/zlib-ng/arch/power/slide_ppc_tpl.h | 4 +++-
11+
src/native/external/zlib-ng/arch/riscv/slide_hash_rvv.c | 2 ++
12+
src/native/external/zlib-ng/arch/x86/slide_hash_avx2.c | 2 ++
13+
src/native/external/zlib-ng/arch/x86/slide_hash_sse2.c | 1 +
14+
6 files changed, 14 insertions(+), 3 deletions(-)
15+
16+
diff --git a/src/native/external/zlib-ng/arch/arm/slide_hash_armv6.c b/src/native/external/zlib-ng/arch/arm/slide_hash_armv6.c
17+
index 0a2eeccf926..ef226fad5d4 100644
18+
--- a/src/native/external/zlib-ng/arch/arm/slide_hash_armv6.c
19+
+++ b/src/native/external/zlib-ng/arch/arm/slide_hash_armv6.c
20+
@@ -7,6 +7,7 @@
21+
#include "acle_intrins.h"
22+
#include "../../zbuild.h"
23+
#include "../../deflate.h"
24+
+#include <assert.h>
25+
26+
/* SIMD version of hash_chain rebase */
27+
static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize) {
28+
@@ -39,7 +40,8 @@ static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize
29+
}
30+
31+
Z_INTERNAL void slide_hash_armv6(deflate_state *s) {
32+
- unsigned int wsize = s->w_size;
33+
+ assert(s->w_size <= _UI16_MAX);
34+
+ uint16_t wsize = (uint16_t)s->w_size;
35+
36+
slide_hash_chain(s->head, HASH_SIZE, wsize);
37+
slide_hash_chain(s->prev, wsize, wsize);
38+
diff --git a/src/native/external/zlib-ng/arch/arm/slide_hash_neon.c b/src/native/external/zlib-ng/arch/arm/slide_hash_neon.c
39+
index a96ca11799b..b9574a308e0 100644
40+
--- a/src/native/external/zlib-ng/arch/arm/slide_hash_neon.c
41+
+++ b/src/native/external/zlib-ng/arch/arm/slide_hash_neon.c
42+
@@ -12,6 +12,7 @@
43+
#include "neon_intrins.h"
44+
#include "../../zbuild.h"
45+
#include "../../deflate.h"
46+
+#include <assert.h>
47+
48+
/* SIMD version of hash_chain rebase */
49+
static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize) {
50+
@@ -38,7 +39,8 @@ static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize
51+
}
52+
53+
Z_INTERNAL void slide_hash_neon(deflate_state *s) {
54+
- unsigned int wsize = s->w_size;
55+
+ assert(s->w_size <= _UI16_MAX);
56+
+ uint16_t wsize = (uint16_t)s->w_size;
57+
58+
slide_hash_chain(s->head, HASH_SIZE, wsize);
59+
slide_hash_chain(s->prev, wsize, wsize);
60+
diff --git a/src/native/external/zlib-ng/arch/power/slide_ppc_tpl.h b/src/native/external/zlib-ng/arch/power/slide_ppc_tpl.h
61+
index 5c17e38fb31..44c61c27da1 100644
62+
--- a/src/native/external/zlib-ng/arch/power/slide_ppc_tpl.h
63+
+++ b/src/native/external/zlib-ng/arch/power/slide_ppc_tpl.h
64+
@@ -6,6 +6,7 @@
65+
#include <altivec.h>
66+
#include "zbuild.h"
67+
#include "deflate.h"
68+
+#include <assert.h>
69+
70+
static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize) {
71+
const vector unsigned short vmx_wsize = vec_splats(wsize);
72+
@@ -24,7 +25,8 @@ static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize
73+
}
74+
75+
void Z_INTERNAL SLIDE_PPC(deflate_state *s) {
76+
- uint16_t wsize = s->w_size;
77+
+ assert(s->w_size <= _UI16_MAX);
78+
+ uint16_t wsize = (uint16_t)s->w_size;
79+
80+
slide_hash_chain(s->head, HASH_SIZE, wsize);
81+
slide_hash_chain(s->prev, wsize, wsize);
82+
diff --git a/src/native/external/zlib-ng/arch/riscv/slide_hash_rvv.c b/src/native/external/zlib-ng/arch/riscv/slide_hash_rvv.c
83+
index 1164e89ba25..2e758742373 100644
84+
--- a/src/native/external/zlib-ng/arch/riscv/slide_hash_rvv.c
85+
+++ b/src/native/external/zlib-ng/arch/riscv/slide_hash_rvv.c
86+
@@ -10,6 +10,7 @@
87+
88+
#include "../../zbuild.h"
89+
#include "../../deflate.h"
90+
+#include <assert.h>
91+
92+
static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize) {
93+
size_t vl;
94+
@@ -25,6 +26,7 @@ static inline void slide_hash_chain(Pos *table, uint32_t entries, uint16_t wsize
95+
}
96+
97+
Z_INTERNAL void slide_hash_rvv(deflate_state *s) {
98+
+ assert(s->w_size <= _UI16_MAX);
99+
uint16_t wsize = (uint16_t)s->w_size;
100+
101+
slide_hash_chain(s->head, HASH_SIZE, wsize);
102+
diff --git a/src/native/external/zlib-ng/arch/x86/slide_hash_avx2.c b/src/native/external/zlib-ng/arch/x86/slide_hash_avx2.c
103+
index 94fe10c7bf4..144b5672940 100644
104+
--- a/src/native/external/zlib-ng/arch/x86/slide_hash_avx2.c
105+
+++ b/src/native/external/zlib-ng/arch/x86/slide_hash_avx2.c
106+
@@ -13,6 +13,7 @@
107+
#include "../../deflate.h"
108+
109+
#include <immintrin.h>
110+
+#include <assert.h>
111+
112+
static inline void slide_hash_chain(Pos *table, uint32_t entries, const __m256i wsize) {
113+
table += entries;
114+
@@ -31,6 +32,7 @@ static inline void slide_hash_chain(Pos *table, uint32_t entries, const __m256i
115+
}
116+
117+
Z_INTERNAL void slide_hash_avx2(deflate_state *s) {
118+
+ assert(s->w_size <= _UI16_MAX);
119+
uint16_t wsize = (uint16_t)s->w_size;
120+
const __m256i ymm_wsize = _mm256_set1_epi16((short)wsize);
121+
122+
diff --git a/src/native/external/zlib-ng/arch/x86/slide_hash_sse2.c b/src/native/external/zlib-ng/arch/x86/slide_hash_sse2.c
123+
index 5daac4a7398..04db335e3de 100644
124+
--- a/src/native/external/zlib-ng/arch/x86/slide_hash_sse2.c
125+
+++ b/src/native/external/zlib-ng/arch/x86/slide_hash_sse2.c
126+
@@ -52,6 +52,7 @@ next_chain:
127+
}
128+
129+
Z_INTERNAL void slide_hash_sse2(deflate_state *s) {
130+
+ assert(s->w_size <= _UI16_MAX);
131+
uint16_t wsize = (uint16_t)s->w_size;
132+
const __m128i xmm_wsize = _mm_set1_epi16((short)wsize);
133+
134+
--
135+
2.45.2.windows.1
136+
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
From 51c39e062b7df96a789da1818c3e2446e9f60d64 Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?=
3+
4+
Date: Wed, 24 Jul 2024 18:44:08 -0700
5+
Subject: [PATCH 2/2] Add asserts and casts to check_match
6+
7+
---
8+
src/native/external/zlib-ng/deflate_fast.c | 4 +++-
9+
src/native/external/zlib-ng/deflate_quick.c | 3 ++-
10+
src/native/external/zlib-ng/deflate_rle.c | 4 +++-
11+
src/native/external/zlib-ng/deflate_slow.c | 3 ++-
12+
4 files changed, 10 insertions(+), 4 deletions(-)
13+
14+
diff --git a/src/native/external/zlib-ng/deflate_fast.c b/src/native/external/zlib-ng/deflate_fast.c
15+
index 3184aa718c7..6c6e227136b 100644
16+
--- a/src/native/external/zlib-ng/deflate_fast.c
17+
+++ b/src/native/external/zlib-ng/deflate_fast.c
18+
@@ -58,7 +58,9 @@ Z_INTERNAL block_state deflate_fast(deflate_state *s, int flush) {
19+
}
20+
21+
if (match_len >= WANT_MIN_MATCH) {
22+
- check_match(s, s->strstart, s->match_start, match_len);
23+
+ Assert(s->strstart <= _UI16_MAX,"strstart should fit in uint16_t");
24+
+ Assert(s->match_start <= _UI16_MAX,"match_start should fit in uint16_t");
25+
+ check_match(s, (Pos)s->strstart, (Pos)s->match_start, match_len);
26+
27+
bflush = zng_tr_tally_dist(s, s->strstart - s->match_start, match_len - STD_MIN_MATCH);
28+
29+
diff --git a/src/native/external/zlib-ng/deflate_quick.c b/src/native/external/zlib-ng/deflate_quick.c
30+
index df5a17b9e66..8dd32ae32a9 100644
31+
--- a/src/native/external/zlib-ng/deflate_quick.c
32+
+++ b/src/native/external/zlib-ng/deflate_quick.c
33+
@@ -102,7 +102,8 @@ Z_INTERNAL block_state deflate_quick(deflate_state *s, int flush) {
34+
if (UNLIKELY(match_len > STD_MAX_MATCH))
35+
match_len = STD_MAX_MATCH;
36+
37+
- check_match(s, s->strstart, hash_head, match_len);
38+
+ Assert(s->strstart <= _UI16_MAX,"strstart should fit in uint16_t");
39+
+ check_match(s, (Pos)s->strstart, hash_head, match_len);
40+
41+
zng_tr_emit_dist(s, static_ltree, static_dtree, match_len - STD_MIN_MATCH, (uint32_t)dist);
42+
s->lookahead -= match_len;
43+
diff --git a/src/native/external/zlib-ng/deflate_rle.c b/src/native/external/zlib-ng/deflate_rle.c
44+
index cd085099460..cf1f3bf4bba 100644
45+
--- a/src/native/external/zlib-ng/deflate_rle.c
46+
+++ b/src/native/external/zlib-ng/deflate_rle.c
47+
@@ -58,7 +58,9 @@ Z_INTERNAL block_state deflate_rle(deflate_state *s, int flush) {
48+
49+
/* Emit match if have run of STD_MIN_MATCH or longer, else emit literal */
50+
if (match_len >= STD_MIN_MATCH) {
51+
- check_match(s, s->strstart, s->strstart - 1, match_len);
52+
+ Assert(s->strstart <= _UI16_MAX,"strstart should fit in uint16_t");
53+
+ Assert(s->match_start <= _UI16_MAX,"match_start should fit in uint16_t");
54+
+ check_match(s, (Pos)s->strstart, (Pos)s->strstart - 1, match_len);
55+
56+
bflush = zng_tr_tally_dist(s, 1, match_len - STD_MIN_MATCH);
57+
58+
diff --git a/src/native/external/zlib-ng/deflate_slow.c b/src/native/external/zlib-ng/deflate_slow.c
59+
index 9f1c913467b..b71c0e5a331 100644
60+
--- a/src/native/external/zlib-ng/deflate_slow.c
61+
+++ b/src/native/external/zlib-ng/deflate_slow.c
62+
@@ -78,7 +78,8 @@ Z_INTERNAL block_state deflate_slow(deflate_state *s, int flush) {
63+
unsigned int max_insert = s->strstart + s->lookahead - STD_MIN_MATCH;
64+
/* Do not insert strings in hash table beyond this. */
65+
66+
- check_match(s, s->strstart-1, s->prev_match, s->prev_length);
67+
+ Assert((s->strstart-1) <= _UI16_MAX,"strstart-1 should fit in uint16_t");
68+
+ check_match(s, (Pos)(s->strstart-1), s->prev_match, s->prev_length);
69+
70+
bflush = zng_tr_tally_dist(s, s->strstart -1 - s->prev_match, s->prev_length - STD_MIN_MATCH);
71+
72+
--
73+
2.45.2.windows.1
74+

0 commit comments

Comments
 (0)