Update LZ4 in ext/

This commit is contained in:
Adam Ierymenko 2015-04-16 12:18:47 -07:00
parent 12b4646ce8
commit 377367175c
2 changed files with 42 additions and 41 deletions

View File

@ -1,6 +1,7 @@
/* /*
LZ4 - Fast LZ compression algorithm LZ4 - Fast LZ compression algorithm
Copyright (C) 2011-2015, Yann Collet. Copyright (C) 2011-2015, Yann Collet.
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
@ -27,8 +28,7 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You can contact the author at : You can contact the author at :
- LZ4 source repository : http://code.google.com/p/lz4 - LZ4 source repository : https://github.com/Cyan4973/lz4
- LZ4 source mirror : https://github.com/Cyan4973/lz4
- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
*/ */
@ -64,7 +64,7 @@
* Program will crash. * Program will crash.
* If uncommenting results in better performance (case 1) * If uncommenting results in better performance (case 1)
* please report your configuration to upstream (https://groups.google.com/forum/#!forum/lz4c) * please report your configuration to upstream (https://groups.google.com/forum/#!forum/lz4c)
* An automatic detection macro will be added to match your case within future versions of the library. * This way, an automatic detection macro can be added to match your case within later versions of the library.
*/ */
/* #define CPU_HAS_EFFICIENT_UNALIGNED_MEMORY_ACCESS 1 */ /* #define CPU_HAS_EFFICIENT_UNALIGNED_MEMORY_ACCESS 1 */
@ -98,7 +98,7 @@
/************************************** /**************************************
Compiler Options * Compiler Options
**************************************/ **************************************/
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
/* "restrict" is a known keyword */ /* "restrict" is a known keyword */
@ -190,7 +190,7 @@ static U16 LZ4_readLE16(const void* memPtr)
return *(U16*)memPtr; return *(U16*)memPtr;
else else
{ {
const BYTE* p = memPtr; const BYTE* p = (const BYTE*)memPtr;
return (U16)((U16)p[0] + (p[1]<<8)); return (U16)((U16)p[0] + (p[1]<<8));
} }
} }
@ -204,7 +204,7 @@ static void LZ4_writeLE16(void* memPtr, U16 value)
} }
else else
{ {
BYTE* p = memPtr; BYTE* p = (BYTE*)memPtr;
p[0] = (BYTE) value; p[0] = (BYTE) value;
p[1] = (BYTE)(value>>8); p[1] = (BYTE)(value>>8);
} }
@ -285,9 +285,9 @@ static void LZ4_copy8(void* dstPtr, const void* srcPtr)
/* customized version of memcpy, which may overwrite up to 7 bytes beyond dstEnd */ /* customized version of memcpy, which may overwrite up to 7 bytes beyond dstEnd */
static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd) static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd)
{ {
BYTE* d = dstPtr; BYTE* d = (BYTE*)dstPtr;
const BYTE* s = srcPtr; const BYTE* s = (const BYTE*)srcPtr;
BYTE* e = dstEnd; BYTE* e = (BYTE*)dstEnd;
do { LZ4_copy8(d,s); d+=8; s+=8; } while (d<e); do { LZ4_copy8(d,s); d+=8; s+=8; } while (d<e);
} }
@ -316,14 +316,14 @@ static const int LZ4_minLength = (MFLIMIT+1);
/************************************** /**************************************
Common Utils * Common Utils
**************************************/ **************************************/
#define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */ #define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
/******************************** /**************************************
Common functions * Common functions
********************************/ **************************************/
static unsigned LZ4_NbCommonBytes (register size_t val) static unsigned LZ4_NbCommonBytes (register size_t val)
{ {
if (LZ4_isLittleEndian()) if (LZ4_isLittleEndian())
@ -412,7 +412,7 @@ static unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLi
#ifndef LZ4_COMMONDEFS_ONLY #ifndef LZ4_COMMONDEFS_ONLY
/************************************** /**************************************
Local Constants * Local Constants
**************************************/ **************************************/
#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) #define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2)
#define HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) #define HASHTABLESIZE (1 << LZ4_MEMORY_USAGE)
@ -423,14 +423,14 @@ static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression ru
/************************************** /**************************************
Local Utils * Local Utils
**************************************/ **************************************/
int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; }
int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); }
/************************************** /**************************************
Local Structures and types * Local Structures and types
**************************************/ **************************************/
typedef struct { typedef struct {
U32 hashTable[HASH_SIZE_U32]; U32 hashTable[HASH_SIZE_U32];
@ -453,10 +453,10 @@ typedef enum { full = 0, partial = 1 } earlyEnd_directive;
/******************************** /********************************
Compression functions * Compression functions
********************************/ ********************************/
static U32 LZ4_hashSequence(U32 sequence, tableType_t tableType) static U32 LZ4_hashSequence(U32 sequence, tableType_t const tableType)
{ {
if (tableType == byU16) if (tableType == byU16)
return (((sequence) * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); return (((sequence) * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1)));
@ -466,7 +466,7 @@ static U32 LZ4_hashSequence(U32 sequence, tableType_t tableType)
static U32 LZ4_hashPosition(const BYTE* p, tableType_t tableType) { return LZ4_hashSequence(LZ4_read32(p), tableType); } static U32 LZ4_hashPosition(const BYTE* p, tableType_t tableType) { return LZ4_hashSequence(LZ4_read32(p), tableType); }
static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase) static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase)
{ {
switch (tableType) switch (tableType)
{ {
@ -502,7 +502,7 @@ static int LZ4_compress_generic(
int inputSize, int inputSize,
int maxOutputSize, int maxOutputSize,
limitedOutput_directive outputLimited, limitedOutput_directive outputLimited,
tableType_t tableType, tableType_t const tableType,
dict_directive dict, dict_directive dict,
dictIssue_directive dictIssue) dictIssue_directive dictIssue)
{ {
@ -749,7 +749,7 @@ int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, in
/***************************************** /*****************************************
Experimental : Streaming functions * Experimental : Streaming functions
*****************************************/ *****************************************/
/* /*
@ -930,9 +930,9 @@ int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize)
/**************************** /*******************************
Decompression functions * Decompression functions
****************************/ *******************************/
/* /*
* This generic decompression function cover all use cases. * This generic decompression function cover all use cases.
* It shall be instantiated several times, using different sets of directives * It shall be instantiated several times, using different sets of directives
@ -1151,7 +1151,7 @@ typedef struct
*/ */
LZ4_streamDecode_t* LZ4_createStreamDecode(void) LZ4_streamDecode_t* LZ4_createStreamDecode(void)
{ {
LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOCATOR(sizeof(U64), LZ4_STREAMDECODESIZE_U64); LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOCATOR(1, sizeof(LZ4_streamDecode_t));
return lz4s; return lz4s;
} }
@ -1282,7 +1282,7 @@ int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compres
/*************************************************** /***************************************************
Obsolete Functions * Obsolete Functions
***************************************************/ ***************************************************/
/* /*
These function names are deprecated and should no longer be used. These function names are deprecated and should no longer be used.
@ -1321,7 +1321,7 @@ void* LZ4_create (const char* inputBuffer)
char* LZ4_slideInputBuffer (void* LZ4_Data) char* LZ4_slideInputBuffer (void* LZ4_Data)
{ {
LZ4_stream_t_internal* ctx = (LZ4_stream_t_internal*)LZ4_Data; LZ4_stream_t_internal* ctx = (LZ4_stream_t_internal*)LZ4_Data;
int dictSize = LZ4_saveDict((LZ4_stream_t*)ctx, (char*)ctx->bufferStart, 64 KB); int dictSize = LZ4_saveDict((LZ4_stream_t*)LZ4_Data, (char*)ctx->bufferStart, 64 KB);
return (char*)(ctx->bufferStart + dictSize); return (char*)(ctx->bufferStart + dictSize);
} }

View File

@ -1,7 +1,8 @@
/* /*
LZ4 - Fast LZ compression algorithm LZ4 - Fast LZ compression algorithm
Header File Header File
Copyright (C) 2011-2014, Yann Collet. Copyright (C) 2011-2015, Yann Collet.
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
@ -28,7 +29,7 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You can contact the author at : You can contact the author at :
- LZ4 source repository : http://code.google.com/p/lz4/ - LZ4 source repository : https://github.com/Cyan4973/lz4
- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
*/ */
#pragma once #pragma once
@ -38,22 +39,22 @@ extern "C" {
#endif #endif
/* /*
* lz4.h provides raw compression format functions, for optimal performance and integration into programs. * lz4.h provides block compression functions, for optimal performance.
* If you need to generate data using an inter-operable format (respecting the framing specification), * If you need to generate inter-operable compressed data (respecting LZ4 frame specification),
* please use lz4frame.h instead. * please use lz4frame.h instead.
*/ */
/************************************** /**************************************
Version * Version
**************************************/ **************************************/
#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ #define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */
#define LZ4_VERSION_MINOR 5 /* for new (non-breaking) interface capabilities */ #define LZ4_VERSION_MINOR 6 /* for new (non-breaking) interface capabilities */
#define LZ4_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */ #define LZ4_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */
#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) #define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE)
int LZ4_versionNumber (void); int LZ4_versionNumber (void);
/************************************** /**************************************
Tuning parameter * Tuning parameter
**************************************/ **************************************/
/* /*
* LZ4_MEMORY_USAGE : * LZ4_MEMORY_USAGE :
@ -66,7 +67,7 @@ int LZ4_versionNumber (void);
/************************************** /**************************************
Simple Functions * Simple Functions
**************************************/ **************************************/
int LZ4_compress (const char* source, char* dest, int sourceSize); int LZ4_compress (const char* source, char* dest, int sourceSize);
@ -95,7 +96,7 @@ LZ4_decompress_safe() :
/************************************** /**************************************
Advanced Functions * Advanced Functions
**************************************/ **************************************/
#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ #define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */
#define LZ4_COMPRESSBOUND(isize) ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) #define LZ4_COMPRESSBOUND(isize) ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
@ -169,7 +170,7 @@ int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedS
/*********************************************** /***********************************************
Streaming Compression Functions * Streaming Compression Functions
***********************************************/ ***********************************************/
#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4) #define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4)
@ -211,6 +212,7 @@ int LZ4_loadDict (LZ4_stream_t* LZ4_streamPtr, const char* dictionary, int dictS
* LZ4_compress_continue * LZ4_compress_continue
* Compress data block 'source', using blocks compressed before as dictionary to improve compression ratio * Compress data block 'source', using blocks compressed before as dictionary to improve compression ratio
* Previous data blocks are assumed to still be present at their previous location. * Previous data blocks are assumed to still be present at their previous location.
* dest buffer must be already allocated, and sized to at least LZ4_compressBound(inputSize)
*/ */
int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize);
@ -227,14 +229,13 @@ int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char
* save it into a safer place (char* safeBuffer) * save it into a safer place (char* safeBuffer)
* Note : you don't need to call LZ4_loadDict() afterwards, * Note : you don't need to call LZ4_loadDict() afterwards,
* dictionary is immediately usable, you can therefore call again LZ4_compress_continue() * dictionary is immediately usable, you can therefore call again LZ4_compress_continue()
* Return : dictionary size in bytes, or 0 if error * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error
* Note : any dictSize > 64 KB will be interpreted as 64KB.
*/ */
int LZ4_saveDict (LZ4_stream_t* LZ4_streamPtr, char* safeBuffer, int dictSize); int LZ4_saveDict (LZ4_stream_t* LZ4_streamPtr, char* safeBuffer, int dictSize);
/************************************************ /************************************************
Streaming Decompression Functions * Streaming Decompression Functions
************************************************/ ************************************************/
#define LZ4_STREAMDECODESIZE_U64 4 #define LZ4_STREAMDECODESIZE_U64 4
@ -285,7 +286,7 @@ int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalS
/************************************** /**************************************
Obsolete Functions * Obsolete Functions
**************************************/ **************************************/
/* /*
Obsolete decompression functions Obsolete decompression functions