zstd-ruby 1.3.8.0 → 1.4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +6 -5
- data/README.md +1 -1
- data/ext/zstdruby/libzstd/Makefile +133 -61
- data/ext/zstdruby/libzstd/README.md +51 -18
- data/ext/zstdruby/libzstd/common/bitstream.h +38 -39
- data/ext/zstdruby/libzstd/common/compiler.h +41 -6
- data/ext/zstdruby/libzstd/common/cpu.h +1 -1
- data/ext/zstdruby/libzstd/common/debug.c +11 -31
- data/ext/zstdruby/libzstd/common/debug.h +11 -31
- data/ext/zstdruby/libzstd/common/entropy_common.c +13 -33
- data/ext/zstdruby/libzstd/common/error_private.c +2 -1
- data/ext/zstdruby/libzstd/common/error_private.h +6 -2
- data/ext/zstdruby/libzstd/common/fse.h +13 -33
- data/ext/zstdruby/libzstd/common/fse_decompress.c +12 -35
- data/ext/zstdruby/libzstd/common/huf.h +15 -33
- data/ext/zstdruby/libzstd/common/mem.h +75 -2
- data/ext/zstdruby/libzstd/common/pool.c +8 -4
- data/ext/zstdruby/libzstd/common/pool.h +2 -2
- data/ext/zstdruby/libzstd/common/threading.c +52 -6
- data/ext/zstdruby/libzstd/common/threading.h +36 -4
- data/ext/zstdruby/libzstd/common/xxhash.c +25 -37
- data/ext/zstdruby/libzstd/common/xxhash.h +11 -31
- data/ext/zstdruby/libzstd/common/zstd_common.c +1 -1
- data/ext/zstdruby/libzstd/common/zstd_errors.h +2 -1
- data/ext/zstdruby/libzstd/common/zstd_internal.h +203 -22
- data/ext/zstdruby/libzstd/compress/fse_compress.c +19 -42
- data/ext/zstdruby/libzstd/compress/hist.c +15 -35
- data/ext/zstdruby/libzstd/compress/hist.h +12 -32
- data/ext/zstdruby/libzstd/compress/huf_compress.c +92 -92
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +1460 -1472
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +330 -65
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +158 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +29 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +419 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +54 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +845 -0
- data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +32 -0
- data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +525 -0
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +65 -43
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +2 -2
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +264 -159
- data/ext/zstdruby/libzstd/compress/zstd_fast.h +2 -2
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +74 -42
- data/ext/zstdruby/libzstd/compress/zstd_lazy.h +2 -2
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +33 -11
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +7 -2
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +108 -125
- data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +129 -93
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +46 -28
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +76 -60
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +14 -10
- data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +2 -2
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +471 -258
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +471 -346
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +3 -3
- data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +25 -4
- data/ext/zstdruby/libzstd/deprecated/zbuff.h +9 -8
- data/ext/zstdruby/libzstd/deprecated/zbuff_common.c +2 -2
- data/ext/zstdruby/libzstd/deprecated/zbuff_compress.c +1 -1
- data/ext/zstdruby/libzstd/deprecated/zbuff_decompress.c +1 -1
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +220 -65
- data/ext/zstdruby/libzstd/dictBuilder/cover.h +81 -7
- data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +85 -56
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +43 -19
- data/ext/zstdruby/libzstd/dictBuilder/zdict.h +73 -35
- data/ext/zstdruby/libzstd/dll/example/Makefile +2 -1
- data/ext/zstdruby/libzstd/dll/example/build_package.bat +3 -2
- data/ext/zstdruby/libzstd/legacy/zstd_legacy.h +49 -15
- data/ext/zstdruby/libzstd/legacy/zstd_v01.c +142 -117
- data/ext/zstdruby/libzstd/legacy/zstd_v01.h +13 -8
- data/ext/zstdruby/libzstd/legacy/zstd_v02.c +54 -25
- data/ext/zstdruby/libzstd/legacy/zstd_v02.h +13 -8
- data/ext/zstdruby/libzstd/legacy/zstd_v03.c +55 -25
- data/ext/zstdruby/libzstd/legacy/zstd_v03.h +13 -8
- data/ext/zstdruby/libzstd/legacy/zstd_v04.c +62 -29
- data/ext/zstdruby/libzstd/legacy/zstd_v04.h +13 -8
- data/ext/zstdruby/libzstd/legacy/zstd_v05.c +145 -109
- data/ext/zstdruby/libzstd/legacy/zstd_v05.h +14 -9
- data/ext/zstdruby/libzstd/legacy/zstd_v06.c +56 -26
- data/ext/zstdruby/libzstd/legacy/zstd_v06.h +11 -6
- data/ext/zstdruby/libzstd/legacy/zstd_v07.c +65 -28
- data/ext/zstdruby/libzstd/legacy/zstd_v07.h +11 -6
- data/ext/zstdruby/libzstd/libzstd.pc.in +3 -2
- data/ext/zstdruby/libzstd/zstd.h +921 -597
- data/lib/zstd-ruby/version.rb +1 -1
- data/zstd-ruby.gemspec +2 -2
- metadata +19 -14
- data/ext/zstdruby/libzstd/dll/libzstd.def +0 -87
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
/* ******************************************************************
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
notice, this list of conditions and the following disclaimer.
|
|
14
|
-
* Redistributions in binary form must reproduce the above
|
|
15
|
-
copyright notice, this list of conditions and the following disclaimer
|
|
16
|
-
in the documentation and/or other materials provided with the
|
|
17
|
-
distribution.
|
|
18
|
-
|
|
19
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
-
|
|
31
|
-
You can contact the author at :
|
|
32
|
-
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
2
|
+
* bitstream
|
|
3
|
+
* Part of FSE library
|
|
4
|
+
* Copyright (c) 2013-2020, Yann Collet, Facebook, Inc.
|
|
5
|
+
*
|
|
6
|
+
* You can contact the author at :
|
|
7
|
+
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
11
|
+
* in the COPYING file in the root directory of this source tree).
|
|
12
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
33
13
|
****************************************************************** */
|
|
34
14
|
#ifndef BITSTREAM_H_MODULE
|
|
35
15
|
#define BITSTREAM_H_MODULE
|
|
@@ -48,6 +28,7 @@ extern "C" {
|
|
|
48
28
|
* Dependencies
|
|
49
29
|
******************************************/
|
|
50
30
|
#include "mem.h" /* unaligned access routines */
|
|
31
|
+
#include "compiler.h" /* UNLIKELY() */
|
|
51
32
|
#include "debug.h" /* assert(), DEBUGLOG(), RAWLOG() */
|
|
52
33
|
#include "error_private.h" /* error codes and messages */
|
|
53
34
|
|
|
@@ -57,6 +38,8 @@ extern "C" {
|
|
|
57
38
|
=========================================*/
|
|
58
39
|
#if defined(__BMI__) && defined(__GNUC__)
|
|
59
40
|
# include <immintrin.h> /* support for bextr (experimental) */
|
|
41
|
+
#elif defined(__ICCARM__)
|
|
42
|
+
# include <intrinsics.h>
|
|
60
43
|
#endif
|
|
61
44
|
|
|
62
45
|
#define STREAM_ACCUMULATOR_MIN_32 25
|
|
@@ -159,10 +142,11 @@ MEM_STATIC unsigned BIT_highbit32 (U32 val)
|
|
|
159
142
|
{
|
|
160
143
|
# if defined(_MSC_VER) /* Visual */
|
|
161
144
|
unsigned long r=0;
|
|
162
|
-
_BitScanReverse ( &r, val );
|
|
163
|
-
return (unsigned) r;
|
|
145
|
+
return _BitScanReverse ( &r, val ) ? (unsigned)r : 0;
|
|
164
146
|
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
|
|
165
|
-
return
|
|
147
|
+
return __builtin_clz (val) ^ 31;
|
|
148
|
+
# elif defined(__ICCARM__) /* IAR Intrinsic */
|
|
149
|
+
return 31 - __CLZ(val);
|
|
166
150
|
# else /* Software version */
|
|
167
151
|
static const unsigned DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29,
|
|
168
152
|
11, 14, 16, 18, 22, 25, 3, 30,
|
|
@@ -240,9 +224,9 @@ MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC)
|
|
|
240
224
|
{
|
|
241
225
|
size_t const nbBytes = bitC->bitPos >> 3;
|
|
242
226
|
assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
|
227
|
+
assert(bitC->ptr <= bitC->endPtr);
|
|
243
228
|
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
|
|
244
229
|
bitC->ptr += nbBytes;
|
|
245
|
-
assert(bitC->ptr <= bitC->endPtr);
|
|
246
230
|
bitC->bitPos &= 7;
|
|
247
231
|
bitC->bitContainer >>= nbBytes*8;
|
|
248
232
|
}
|
|
@@ -256,6 +240,7 @@ MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
|
|
|
256
240
|
{
|
|
257
241
|
size_t const nbBytes = bitC->bitPos >> 3;
|
|
258
242
|
assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
|
243
|
+
assert(bitC->ptr <= bitC->endPtr);
|
|
259
244
|
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
|
|
260
245
|
bitC->ptr += nbBytes;
|
|
261
246
|
if (bitC->ptr > bitC->endPtr) bitC->ptr = bitC->endPtr;
|
|
@@ -406,6 +391,23 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits)
|
|
|
406
391
|
return value;
|
|
407
392
|
}
|
|
408
393
|
|
|
394
|
+
/*! BIT_reloadDStreamFast() :
|
|
395
|
+
* Similar to BIT_reloadDStream(), but with two differences:
|
|
396
|
+
* 1. bitsConsumed <= sizeof(bitD->bitContainer)*8 must hold!
|
|
397
|
+
* 2. Returns BIT_DStream_overflow when bitD->ptr < bitD->limitPtr, at this
|
|
398
|
+
* point you must use BIT_reloadDStream() to reload.
|
|
399
|
+
*/
|
|
400
|
+
MEM_STATIC BIT_DStream_status BIT_reloadDStreamFast(BIT_DStream_t* bitD)
|
|
401
|
+
{
|
|
402
|
+
if (UNLIKELY(bitD->ptr < bitD->limitPtr))
|
|
403
|
+
return BIT_DStream_overflow;
|
|
404
|
+
assert(bitD->bitsConsumed <= sizeof(bitD->bitContainer)*8);
|
|
405
|
+
bitD->ptr -= bitD->bitsConsumed >> 3;
|
|
406
|
+
bitD->bitsConsumed &= 7;
|
|
407
|
+
bitD->bitContainer = MEM_readLEST(bitD->ptr);
|
|
408
|
+
return BIT_DStream_unfinished;
|
|
409
|
+
}
|
|
410
|
+
|
|
409
411
|
/*! BIT_reloadDStream() :
|
|
410
412
|
* Refill `bitD` from buffer previously set in BIT_initDStream() .
|
|
411
413
|
* This function is safe, it guarantees it will not read beyond src buffer.
|
|
@@ -417,10 +419,7 @@ MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
|
|
|
417
419
|
return BIT_DStream_overflow;
|
|
418
420
|
|
|
419
421
|
if (bitD->ptr >= bitD->limitPtr) {
|
|
420
|
-
|
|
421
|
-
bitD->bitsConsumed &= 7;
|
|
422
|
-
bitD->bitContainer = MEM_readLEST(bitD->ptr);
|
|
423
|
-
return BIT_DStream_unfinished;
|
|
422
|
+
return BIT_reloadDStreamFast(bitD);
|
|
424
423
|
}
|
|
425
424
|
if (bitD->ptr == bitD->start) {
|
|
426
425
|
if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2016-
|
|
2
|
+
* Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
/* force inlining */
|
|
18
18
|
|
|
19
19
|
#if !defined(ZSTD_NO_INLINE)
|
|
20
|
-
#if defined
|
|
20
|
+
#if (defined(__GNUC__) && !defined(__STRICT_ANSI__)) || defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
|
|
21
21
|
# define INLINE_KEYWORD inline
|
|
22
22
|
#else
|
|
23
23
|
# define INLINE_KEYWORD
|
|
24
24
|
#endif
|
|
25
25
|
|
|
26
|
-
#if defined(__GNUC__)
|
|
26
|
+
#if defined(__GNUC__) || defined(__ICCARM__)
|
|
27
27
|
# define FORCE_INLINE_ATTR __attribute__((always_inline))
|
|
28
28
|
#elif defined(_MSC_VER)
|
|
29
29
|
# define FORCE_INLINE_ATTR __forceinline
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* FORCE_INLINE_TEMPLATE is used to define C "templates", which take constant
|
|
43
|
-
* parameters. They must be inlined for the compiler to
|
|
43
|
+
* parameters. They must be inlined for the compiler to eliminate the constant
|
|
44
44
|
* branches.
|
|
45
45
|
*/
|
|
46
46
|
#define FORCE_INLINE_TEMPLATE static INLINE_KEYWORD FORCE_INLINE_ATTR
|
|
@@ -61,11 +61,18 @@
|
|
|
61
61
|
# define HINT_INLINE static INLINE_KEYWORD FORCE_INLINE_ATTR
|
|
62
62
|
#endif
|
|
63
63
|
|
|
64
|
+
/* UNUSED_ATTR tells the compiler it is okay if the function is unused. */
|
|
65
|
+
#if defined(__GNUC__)
|
|
66
|
+
# define UNUSED_ATTR __attribute__((unused))
|
|
67
|
+
#else
|
|
68
|
+
# define UNUSED_ATTR
|
|
69
|
+
#endif
|
|
70
|
+
|
|
64
71
|
/* force no inlining */
|
|
65
72
|
#ifdef _MSC_VER
|
|
66
73
|
# define FORCE_NOINLINE static __declspec(noinline)
|
|
67
74
|
#else
|
|
68
|
-
#
|
|
75
|
+
# if defined(__GNUC__) || defined(__ICCARM__)
|
|
69
76
|
# define FORCE_NOINLINE static __attribute__((__noinline__))
|
|
70
77
|
# else
|
|
71
78
|
# define FORCE_NOINLINE static
|
|
@@ -76,7 +83,7 @@
|
|
|
76
83
|
#ifndef __has_attribute
|
|
77
84
|
#define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */
|
|
78
85
|
#endif
|
|
79
|
-
#if defined(__GNUC__)
|
|
86
|
+
#if defined(__GNUC__) || defined(__ICCARM__)
|
|
80
87
|
# define TARGET_ATTRIBUTE(target) __attribute__((__target__(target)))
|
|
81
88
|
#else
|
|
82
89
|
# define TARGET_ATTRIBUTE(target)
|
|
@@ -107,6 +114,9 @@
|
|
|
107
114
|
# include <mmintrin.h> /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */
|
|
108
115
|
# define PREFETCH_L1(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0)
|
|
109
116
|
# define PREFETCH_L2(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T1)
|
|
117
|
+
# elif defined(__aarch64__)
|
|
118
|
+
# define PREFETCH_L1(ptr) __asm__ __volatile__("prfm pldl1keep, %0" ::"Q"(*(ptr)))
|
|
119
|
+
# define PREFETCH_L2(ptr) __asm__ __volatile__("prfm pldl2keep, %0" ::"Q"(*(ptr)))
|
|
110
120
|
# elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) )
|
|
111
121
|
# define PREFETCH_L1(ptr) __builtin_prefetch((ptr), 0 /* rw==read */, 3 /* locality */)
|
|
112
122
|
# define PREFETCH_L2(ptr) __builtin_prefetch((ptr), 0 /* rw==read */, 2 /* locality */)
|
|
@@ -127,6 +137,31 @@
|
|
|
127
137
|
} \
|
|
128
138
|
}
|
|
129
139
|
|
|
140
|
+
/* vectorization
|
|
141
|
+
* older GCC (pre gcc-4.3 picked as the cutoff) uses a different syntax */
|
|
142
|
+
#if !defined(__INTEL_COMPILER) && !defined(__clang__) && defined(__GNUC__)
|
|
143
|
+
# if (__GNUC__ == 4 && __GNUC_MINOR__ > 3) || (__GNUC__ >= 5)
|
|
144
|
+
# define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
|
|
145
|
+
# else
|
|
146
|
+
# define DONT_VECTORIZE _Pragma("GCC optimize(\"no-tree-vectorize\")")
|
|
147
|
+
# endif
|
|
148
|
+
#else
|
|
149
|
+
# define DONT_VECTORIZE
|
|
150
|
+
#endif
|
|
151
|
+
|
|
152
|
+
/* Tell the compiler that a branch is likely or unlikely.
|
|
153
|
+
* Only use these macros if it causes the compiler to generate better code.
|
|
154
|
+
* If you can remove a LIKELY/UNLIKELY annotation without speed changes in gcc
|
|
155
|
+
* and clang, please do.
|
|
156
|
+
*/
|
|
157
|
+
#if defined(__GNUC__)
|
|
158
|
+
#define LIKELY(x) (__builtin_expect((x), 1))
|
|
159
|
+
#define UNLIKELY(x) (__builtin_expect((x), 0))
|
|
160
|
+
#else
|
|
161
|
+
#define LIKELY(x) (x)
|
|
162
|
+
#define UNLIKELY(x) (x)
|
|
163
|
+
#endif
|
|
164
|
+
|
|
130
165
|
/* disable warnings */
|
|
131
166
|
#ifdef _MSC_VER /* Visual Studio */
|
|
132
167
|
# include <intrin.h> /* For Visual 2005 */
|
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
/* ******************************************************************
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
notice, this list of conditions and the following disclaimer.
|
|
14
|
-
* Redistributions in binary form must reproduce the above
|
|
15
|
-
copyright notice, this list of conditions and the following disclaimer
|
|
16
|
-
in the documentation and/or other materials provided with the
|
|
17
|
-
distribution.
|
|
18
|
-
|
|
19
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
-
|
|
31
|
-
You can contact the author at :
|
|
32
|
-
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
2
|
+
* debug
|
|
3
|
+
* Part of FSE library
|
|
4
|
+
* Copyright (c) 2013-2020, Yann Collet, Facebook, Inc.
|
|
5
|
+
*
|
|
6
|
+
* You can contact the author at :
|
|
7
|
+
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
11
|
+
* in the COPYING file in the root directory of this source tree).
|
|
12
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
33
13
|
****************************************************************** */
|
|
34
14
|
|
|
35
15
|
|
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
/* ******************************************************************
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
notice, this list of conditions and the following disclaimer.
|
|
14
|
-
* Redistributions in binary form must reproduce the above
|
|
15
|
-
copyright notice, this list of conditions and the following disclaimer
|
|
16
|
-
in the documentation and/or other materials provided with the
|
|
17
|
-
distribution.
|
|
18
|
-
|
|
19
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
-
|
|
31
|
-
You can contact the author at :
|
|
32
|
-
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
2
|
+
* debug
|
|
3
|
+
* Part of FSE library
|
|
4
|
+
* Copyright (c) 2013-2020, Yann Collet, Facebook, Inc.
|
|
5
|
+
*
|
|
6
|
+
* You can contact the author at :
|
|
7
|
+
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
11
|
+
* in the COPYING file in the root directory of this source tree).
|
|
12
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
33
13
|
****************************************************************** */
|
|
34
14
|
|
|
35
15
|
|
|
@@ -1,36 +1,16 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
copyright notice, this list of conditions and the following disclaimer
|
|
15
|
-
in the documentation and/or other materials provided with the
|
|
16
|
-
distribution.
|
|
17
|
-
|
|
18
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
19
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
20
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
21
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
22
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
23
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
24
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
25
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
26
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
27
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
-
|
|
30
|
-
You can contact the author at :
|
|
31
|
-
- FSE+HUF source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
32
|
-
- Public forum : https://groups.google.com/forum/#!forum/lz4c
|
|
33
|
-
*************************************************************************** */
|
|
1
|
+
/* ******************************************************************
|
|
2
|
+
* Common functions of New Generation Entropy library
|
|
3
|
+
* Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
|
|
4
|
+
*
|
|
5
|
+
* You can contact the author at :
|
|
6
|
+
* - FSE+HUF source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
7
|
+
* - Public forum : https://groups.google.com/forum/#!forum/lz4c
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
11
|
+
* in the COPYING file in the root directory of this source tree).
|
|
12
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
13
|
+
****************************************************************** */
|
|
34
14
|
|
|
35
15
|
/* *************************************
|
|
36
16
|
* Dependencies
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2016-
|
|
2
|
+
* Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -47,6 +47,7 @@ const char* ERR_getErrorString(ERR_enum code)
|
|
|
47
47
|
/* following error codes are not stable and may be removed or changed in a future version */
|
|
48
48
|
case PREFIX(frameIndex_tooLarge): return "Frame index is too large";
|
|
49
49
|
case PREFIX(seekableIO): return "An I/O error occurred when reading/seeking";
|
|
50
|
+
case PREFIX(dstBuffer_wrong): return "Destination buffer is wrong";
|
|
50
51
|
case PREFIX(maxCode):
|
|
51
52
|
default: return notErrorCode;
|
|
52
53
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2016-
|
|
2
|
+
* Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -49,7 +49,7 @@ typedef ZSTD_ErrorCode ERR_enum;
|
|
|
49
49
|
/*-****************************************
|
|
50
50
|
* Error codes handling
|
|
51
51
|
******************************************/
|
|
52
|
-
#undef ERROR /*
|
|
52
|
+
#undef ERROR /* already defined on Visual Studio */
|
|
53
53
|
#define ERROR(name) ZSTD_ERROR(name)
|
|
54
54
|
#define ZSTD_ERROR(name) ((size_t)-PREFIX(name))
|
|
55
55
|
|
|
@@ -57,6 +57,10 @@ ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
|
|
|
57
57
|
|
|
58
58
|
ERR_STATIC ERR_enum ERR_getErrorCode(size_t code) { if (!ERR_isError(code)) return (ERR_enum)0; return (ERR_enum) (0-code); }
|
|
59
59
|
|
|
60
|
+
/* check and forward error code */
|
|
61
|
+
#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return e
|
|
62
|
+
#define CHECK_F(f) { CHECK_V_F(_var_err__, f); }
|
|
63
|
+
|
|
60
64
|
|
|
61
65
|
/*-****************************************
|
|
62
66
|
* Error Strings
|
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
/* ******************************************************************
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
notice, this list of conditions and the following disclaimer.
|
|
14
|
-
* Redistributions in binary form must reproduce the above
|
|
15
|
-
copyright notice, this list of conditions and the following disclaimer
|
|
16
|
-
in the documentation and/or other materials provided with the
|
|
17
|
-
distribution.
|
|
18
|
-
|
|
19
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
-
|
|
31
|
-
You can contact the author at :
|
|
32
|
-
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
2
|
+
* FSE : Finite State Entropy codec
|
|
3
|
+
* Public Prototypes declaration
|
|
4
|
+
* Copyright (c) 2013-2020, Yann Collet, Facebook, Inc.
|
|
5
|
+
*
|
|
6
|
+
* You can contact the author at :
|
|
7
|
+
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
11
|
+
* in the COPYING file in the root directory of this source tree).
|
|
12
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
33
13
|
****************************************************************** */
|
|
34
14
|
|
|
35
15
|
#if defined (__cplusplus)
|
|
@@ -308,7 +288,7 @@ If there is an error, the function will return an error code, which can be teste
|
|
|
308
288
|
*******************************************/
|
|
309
289
|
/* FSE buffer bounds */
|
|
310
290
|
#define FSE_NCOUNTBOUND 512
|
|
311
|
-
#define FSE_BLOCKBOUND(size) (size + (size>>7))
|
|
291
|
+
#define FSE_BLOCKBOUND(size) (size + (size>>7) + 4 /* fse states */ + sizeof(size_t) /* bitContainer */)
|
|
312
292
|
#define FSE_COMPRESSBOUND(size) (FSE_NCOUNTBOUND + FSE_BLOCKBOUND(size)) /* Macro version, useful for static allocation */
|
|
313
293
|
|
|
314
294
|
/* It is possible to statically allocate FSE CTable/DTable as a table of FSE_CTable/FSE_DTable using below macros */
|
|
@@ -358,7 +338,7 @@ size_t FSE_decompress_wksp(void* dst, size_t dstCapacity, const void* cSrc, size
|
|
|
358
338
|
typedef enum {
|
|
359
339
|
FSE_repeat_none, /**< Cannot use the previous table */
|
|
360
340
|
FSE_repeat_check, /**< Can use the previous table but it must be checked */
|
|
361
|
-
FSE_repeat_valid /**< Can use the previous table and it is
|
|
341
|
+
FSE_repeat_valid /**< Can use the previous table and it is assumed to be valid */
|
|
362
342
|
} FSE_repeat;
|
|
363
343
|
|
|
364
344
|
/* *****************************************
|