| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
deprecated in newer C++ versions,
and dubious utility
|
|\
| |
| | |
Improve Optimal parser
|
| |
| |
| |
| |
| | |
even gained 2 bytes on calgary.tar...
added conditional traces `g_debuglog_enable`
|
| |\ |
|
| | | |
|
| | |
| | |
| | |
| | | |
as recommended by @terrelln
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
separate first branch from the rest of the compare loop
to get dedicated prediction.
measured a 3-4% compression speed improvement.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
warning
For example, with clang:
lz4.c:XXX:36: error: 'register' storage class specifier is deprecated and incompatible with C++17 [-Werror,-Wdeprecated-register]
static unsigned LZ4_NbCommonBytes (register reg_t val)
^~~~~~~~~
|
| | |
| | |
| | |
| | | |
in a marginal case (offset==4)
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/
|/| |
|
|/
|
|
| |
with gcc, to avoid harmful unrolling and SIMDization with O3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
static analyzer `cppcheck` complains about a shift-by-32 on a 32 bits value,
which is an undefined behavior.
However, the flagged code path is never triggered in 32-bits mode,
(actually, it's not even generated if DCE kicks in),
the shift-by-32 is necessarily performed on a 64-bits value.
While it doesn't change anything regarding lz4 code generation, for both 32 and 64 bits mode,
(can be checked by md5sum on the generated binary),
the shift has been rewritten in a way which should please this static analyzer,
since it now pretends to shift by 16 on 32-bits cpu (note : it doesn't matter since the code will not even be generated in this case).
Note : this is a blind fix, the new code has not been tested with cppcheck, because cppcheck only works on Windows.
Other static analyzer, such as scan-build, do not trigger this false positive.
|
|
|
|
| |
reported by @rvandermeulen (#398)
|
|
|
|
|
|
|
|
| |
memory address
Reported and fixed by @jscheid
Note : we are missing a test case to include it in the CI
|
|
|
|
| |
minor : slightly modified an example do avoid disabling a gcc warning through #pragma
|
|
|
|
| |
compilation when used with other libraries that define FORCE_INLINE
|
|\
| |
| | |
Frame Dictionary API
|
| |
| |
| |
| |
| | |
note : only compression API is implemented and tested
still to do : decompression API
|
|/
|
|
|
|
|
|
|
|
|
| |
FORCE_INLINE macro is defined based on the compiler used. When using
gcc, it will include "__attribute__((always_inline))" forcing gcc to
always inline all the functions marked as FORCE_INLINE. However, this
can cause a performance degradation of about 15%.
This patch allows to set the FORCE_INLINE macro from the compiler
command line to either "static" or "static inline" giving allowing it
to inline functions as needed when performing optimizations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The bug would make the bt search read one byte in an invalid memory region,
and make a branch decision based on its value.
Impact was small (missed compression opportunity).
It only happens in -BD mode, with extDict-prefix overlapping matches.
The bt match search is supposed to work also in extDict mode.
In which case, the match ptr can point into Dict.
When the match was overlapping Dict<->Prefix,
match[matchLength] would end up outside of Dict, in an invalid memory area.
The correction ensures that in such a case,
match[matchLength] ends up at intended location, inside prefix.
|
|
|
|
|
|
|
| |
This macro is susceptible to be triggered from user side
typically through compiler flag (-DLZ4_HEAPMODE=1).
In which case, it makes sense to prefix the macro
since we want to reduce potential side-effect on namespace.
|
|
|
|
|
|
|
| |
It's always as good or better then memcpy()
but depends on gcc-specific extension.
solves https://github.com/facebook/zstd/issues/620
|
|
|
|
|
| |
Limits compression level to 10,
to remain compatible with Hash Chain.
|
| |
|
|
|
|
| |
Now -mx32 is fastest mode on x64 CPU
|
| |
|
|
|
|
|
|
| |
Large File support for Mac OS-X in 32-bits mode
Fixed potential undefined behavior
Changed makefile for 32-bits mode
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| | |
It specified the external dictionary location incorrectly.
Add tests that expose this bug with both normal compilation and ASAN.
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|