144#if HAVE_LABELS_AS_VALUES
146 static const void *opc_tbl[256] = {
147 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&eos, &&lrg_d,
148 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&nop, &&lrg_d,
149 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&nop, &&lrg_d,
150 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&udef, &&lrg_d,
151 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&udef, &&lrg_d,
152 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&udef, &&lrg_d,
153 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&udef, &&lrg_d,
154 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&udef, &&lrg_d,
155 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
156 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
157 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
158 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
159 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
160 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
161 &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef,
162 &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef,
163 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
164 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
165 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
166 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
167 &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d,
168 &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d,
169 &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d,
170 &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d, &&med_d,
171 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
172 &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&sml_d, &&pre_d, &&lrg_d,
173 &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef,
174 &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef, &&udef,
175 &&lrg_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l,
176 &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l, &&sml_l,
177 &&lrg_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m,
178 &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m, &&sml_m};
182 if (src_len == 0 || dst_len == 0)
185 const unsigned char *src_ptr = state->
src;
186 unsigned char *dst_ptr = state->
dst;
193 if (state->
L != 0 || state->
M != 0) {
198 state->
L = state->
M = state->
D = 0;
203 goto copy_literal_and_match;
206 unsigned char opc = src_ptr[0];
208#if HAVE_LABELS_AS_VALUES
225#if HAVE_LABELS_AS_VALUES
364 if (src_len <= opc_len + L)
367 goto copy_literal_and_match;
369#if HAVE_LABELS_AS_VALUES
413 if (src_len <= opc_len + L)
418 goto copy_literal_and_match;
420#if HAVE_LABELS_AS_VALUES
452 if (src_len <= opc_len + L)
454 D =
load2(&src_ptr[1]);
455 goto copy_literal_and_match;
457#if HAVE_LABELS_AS_VALUES
483 if (src_len <= opc_len + L)
485 goto copy_literal_and_match;
487copy_literal_and_match:
494 if (__builtin_expect(dst_len >= 4 && src_len >= 4, 1)) {
499 }
else if (L <= dst_len) {
508 for (
size_t i = 0; i < L; ++i)
509 dst_ptr[i] = src_ptr[i];
514 for (
size_t i = 0; i < dst_len; ++i)
515 dst_ptr[i] = src_ptr[i];
517 state->
src = src_ptr + dst_len;
518 state->
dst = dst_ptr + dst_len;
519 state->
L = L - dst_len;
531 if (D > (
size_t)(dst_ptr - state->
dst_begin) || D == 0)
532 goto invalid_match_distance;
545 if (__builtin_expect(dst_len >= M + 7 && D >= 8, 1)) {
551 for (
size_t i = 0; i < M; i += 8)
553 }
else if (M <= dst_len) {
557 for (
size_t i = 0; i < M; ++i)
558 dst_ptr[i] = *(dst_ptr + i - D);
563 for (
size_t i = 0; i < dst_len; ++i)
564 dst_ptr[i] = *(dst_ptr + i - D);
566 state->
src = src_ptr;
567 state->
dst = dst_ptr + dst_len;
569 state->
M = M - dst_len;
578#if HAVE_LABELS_AS_VALUES
591#if HAVE_LABELS_AS_VALUES
615 if (src_len <= opc_len)
621#if HAVE_LABELS_AS_VALUES
633 if (src_len <= opc_len)
644#if HAVE_LABELS_AS_VALUES
670#if HAVE_LABELS_AS_VALUES
692 if (src_len <= opc_len + L)
696 if (dst_len >= L + 7 && src_len >= L + 7) {
700 for (
size_t i = 0; i < L; i += 8)
702 }
else if (L <= dst_len) {
706 for (
size_t i = 0; i < L; ++i)
707 dst_ptr[i] = src_ptr[i];
712 for (
size_t i = 0; i < dst_len; ++i)
713 dst_ptr[i] = src_ptr[i];
715 state->
src = src_ptr + dst_len;
716 state->
dst = dst_ptr + dst_len;
717 state->
L = L - dst_len;
728#if HAVE_LABELS_AS_VALUES
736#if HAVE_LABELS_AS_VALUES
744 if (src_len <= opc_len)
748#if HAVE_LABELS_AS_VALUES
754#if HAVE_LABELS_AS_VALUES
760 if (src_len < opc_len)
770#if HAVE_LABELS_AS_VALUES
811invalid_match_distance:
814#if !HAVE_LABELS_AS_VALUES