Add Fast Reset Paths
This commit is contained in:
parent
8db291bc1d
commit
3591fe8ab8
21
lib/lz4hc.c
21
lib/lz4hc.c
@ -716,11 +716,11 @@ static int LZ4HC_compress_generic (
|
|||||||
|
|
||||||
int LZ4_sizeofStateHC(void) { return sizeof(LZ4_streamHC_t); }
|
int LZ4_sizeofStateHC(void) { return sizeof(LZ4_streamHC_t); }
|
||||||
|
|
||||||
int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
||||||
{
|
{
|
||||||
LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse;
|
LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse;
|
||||||
if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */
|
if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */
|
||||||
LZ4_resetStreamHC((LZ4_streamHC_t*)state, compressionLevel);
|
LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel);
|
||||||
LZ4HC_init (ctx, (const BYTE*)src);
|
LZ4HC_init (ctx, (const BYTE*)src);
|
||||||
if (dstCapacity < LZ4_compressBound(srcSize))
|
if (dstCapacity < LZ4_compressBound(srcSize))
|
||||||
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput);
|
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput);
|
||||||
@ -728,6 +728,13 @@ int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int src
|
|||||||
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, noLimit);
|
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, noLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
||||||
|
{
|
||||||
|
if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */
|
||||||
|
LZ4_resetStreamHC ((LZ4_streamHC_t*)state, compressionLevel);
|
||||||
|
return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel);
|
||||||
|
}
|
||||||
|
|
||||||
int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
||||||
{
|
{
|
||||||
#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1
|
#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1
|
||||||
@ -787,6 +794,16 @@ void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel)
|
|||||||
LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel);
|
LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel)
|
||||||
|
{
|
||||||
|
LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= sizeof(size_t) * LZ4_STREAMHCSIZE_SIZET); /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */
|
||||||
|
DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel);
|
||||||
|
LZ4_streamHCPtr->internal_donotuse.end -= (uptrval)LZ4_streamHCPtr->internal_donotuse.base;
|
||||||
|
LZ4_streamHCPtr->internal_donotuse.base = NULL;
|
||||||
|
LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL;
|
||||||
|
LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel);
|
||||||
|
}
|
||||||
|
|
||||||
void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel)
|
void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel)
|
||||||
{
|
{
|
||||||
if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT;
|
if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT;
|
||||||
|
@ -270,7 +270,9 @@ int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr,
|
|||||||
*/
|
*/
|
||||||
void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel);
|
void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel);
|
||||||
|
|
||||||
|
void LZ4_resetStreamHC_fast(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel);
|
||||||
|
|
||||||
|
int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel);
|
||||||
|
|
||||||
#endif /* LZ4_HC_SLO_098092834 */
|
#endif /* LZ4_HC_SLO_098092834 */
|
||||||
#endif /* LZ4_HC_STATIC_LINKING_ONLY */
|
#endif /* LZ4_HC_STATIC_LINKING_ONLY */
|
||||||
|
Loading…
Reference in New Issue
Block a user