Lines Matching +full:src +full:- +full:2

1 // SPDX-License-Identifier: CDDL-1.0
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or https://opensource.org/licenses/CDDL-1.0.
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
31 * 2. Our version of lzjb does not have a number of checks that the
45 #define MATCH_MAX ((1 << MATCH_BITS) + (MATCH_MIN - 1))
46 #define OFFSET_MASK ((1 << (16 - MATCH_BITS)) - 1)
54 uchar_t *src = s_start; in zfs_lzjb_compress_buf() local
58 int copymask = 1 << (NBBY - 1); in zfs_lzjb_compress_buf()
64 while (src < (uchar_t *)s_start + s_len) { in zfs_lzjb_compress_buf()
66 if (dst >= (uchar_t *)d_start + d_len - 1 - 2 * NBBY) { in zfs_lzjb_compress_buf()
75 if (src > (uchar_t *)s_start + s_len - MATCH_MAX) { in zfs_lzjb_compress_buf()
76 *dst++ = *src++; in zfs_lzjb_compress_buf()
79 hash = (src[0] << 16) + (src[1] << 8) + src[2]; in zfs_lzjb_compress_buf()
82 hp = &lempel[hash & (LEMPEL_SIZE - 1)]; in zfs_lzjb_compress_buf()
83 offset = (intptr_t)(src - *hp) & OFFSET_MASK; in zfs_lzjb_compress_buf()
84 *hp = (uint16_t)(uintptr_t)src; in zfs_lzjb_compress_buf()
85 cpy = src - offset; in zfs_lzjb_compress_buf()
86 if (cpy >= (uchar_t *)s_start && cpy != src && in zfs_lzjb_compress_buf()
87 src[0] == cpy[0] && src[1] == cpy[1] && src[2] == cpy[2]) { in zfs_lzjb_compress_buf()
90 if (src[mlen] != cpy[mlen]) in zfs_lzjb_compress_buf()
92 *dst++ = ((mlen - MATCH_MIN) << (NBBY - MATCH_BITS)) | in zfs_lzjb_compress_buf()
95 src += mlen; in zfs_lzjb_compress_buf()
97 *dst++ = *src++; in zfs_lzjb_compress_buf()
102 return (dst - (uchar_t *)d_start); in zfs_lzjb_compress_buf()
110 uchar_t *src = s_start; in zfs_lzjb_decompress_buf() local
115 int copymask = 1 << (NBBY - 1); in zfs_lzjb_decompress_buf()
120 copymap = *src++; in zfs_lzjb_decompress_buf()
123 int mlen = (src[0] >> (NBBY - MATCH_BITS)) + MATCH_MIN; in zfs_lzjb_decompress_buf()
124 int offset = ((src[0] << NBBY) | src[1]) & OFFSET_MASK; in zfs_lzjb_decompress_buf()
125 src += 2; in zfs_lzjb_decompress_buf()
126 if ((cpy = dst - offset) < (uchar_t *)d_start) in zfs_lzjb_decompress_buf()
127 return (-1); in zfs_lzjb_decompress_buf()
128 while (--mlen >= 0 && dst < d_end) in zfs_lzjb_decompress_buf()
131 *dst++ = *src++; in zfs_lzjb_decompress_buf()