@@ -1653,9 +1653,9 @@ static size_t ZSTD_estimateCCtxSize_usingCCtxParams_internal(
16531653 size_t const windowSize = (size_t ) BOUNDED (1ULL , 1ULL << cParams -> windowLog , pledgedSrcSize );
16541654 size_t const blockSize = MIN (ZSTD_resolveMaxBlockSize (maxBlockSize ), windowSize );
16551655 size_t const maxNbSeq = ZSTD_maxNbSeq (blockSize , cParams -> minMatch , useSequenceProducer );
1656- size_t const tokenSpace = ZSTD_cwksp_aligned_alloc_size (WILDCOPY_OVERLENGTH + blockSize )
1656+ size_t const tokenSpace = ZSTD_cwksp_alloc_size (WILDCOPY_OVERLENGTH + blockSize )
16571657 + ZSTD_cwksp_aligned_alloc_size (maxNbSeq * sizeof (seqDef ))
1658- + 3 * ZSTD_cwksp_aligned_alloc_size (maxNbSeq * sizeof (BYTE ));
1658+ + 3 * ZSTD_cwksp_alloc_size (maxNbSeq * sizeof (BYTE ));
16591659 size_t const entropySpace = ZSTD_cwksp_alloc_size (ENTROPY_WORKSPACE_SIZE );
16601660 size_t const blockStateSpace = 2 * ZSTD_cwksp_alloc_size (sizeof (ZSTD_compressedBlockState_t ));
16611661 size_t const matchStateSize = ZSTD_sizeof_matchState (cParams , useRowMatchFinder , /* enableDedicatedDictSearch */ 0 , /* forCCtx */ 1 );
@@ -1666,21 +1666,28 @@ static size_t ZSTD_estimateCCtxSize_usingCCtxParams_internal(
16661666 ZSTD_cwksp_aligned_alloc_size (maxNbLdmSeq * sizeof (rawSeq )) : 0 ;
16671667
16681668
1669- size_t const bufferSpace = ZSTD_cwksp_aligned_alloc_size (buffInSize )
1670- + ZSTD_cwksp_aligned_alloc_size (buffOutSize );
1669+ size_t const bufferSpace = ZSTD_cwksp_alloc_size (buffInSize )
1670+ + ZSTD_cwksp_alloc_size (buffOutSize );
16711671
1672- size_t const cctxSpace = isStatic ? ZSTD_cwksp_aligned_alloc_size (sizeof (ZSTD_CCtx )) : 0 ;
1672+ size_t const cctxSpace = isStatic ? ZSTD_cwksp_alloc_size (sizeof (ZSTD_CCtx )) : 0 ;
16731673
16741674 size_t const maxNbExternalSeq = ZSTD_sequenceBound (blockSize );
16751675 size_t const externalSeqSpace = useSequenceProducer
16761676 ? ZSTD_cwksp_aligned_alloc_size (maxNbExternalSeq * sizeof (ZSTD_Sequence ))
16771677 : 0 ;
16781678
1679- size_t const objectsSpace = cctxSpace + entropySpace + blockStateSpace ;
1680- size_t const tableSpace = ldmSpace + matchStateSize ;
1681- size_t const alignedSpace = tokenSpace + bufferSpace + externalSeqSpace + ldmSeqSpace ;
1682-
1683- size_t const neededSpace = objectsSpace + tableSpace + alignedSpace ;
1679+ size_t const neededSpace =
1680+ cctxSpace +
1681+ entropySpace +
1682+ blockStateSpace +
1683+ ldmSpace +
1684+ ldmSeqSpace +
1685+ matchStateSize +
1686+ tokenSpace +
1687+ bufferSpace +
1688+ externalSeqSpace ;
1689+
1690+ DEBUGLOG (5 , "estimate workspace : %u" , (U32 )neededSpace );
16841691 return neededSpace ;
16851692}
16861693
@@ -2125,38 +2132,8 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
21252132 needsIndexReset ,
21262133 ZSTD_resetTarget_CCtx ), "" );
21272134
2128- /* ZSTD_wildcopy() is used to copy into the literals buffer,
2129- * so we have to oversize the buffer by WILDCOPY_OVERLENGTH bytes.
2130- */
2131- zc -> seqStore .litStart = (BYTE * )ZSTD_cwksp_reserve_aligned (ws , blockSize + WILDCOPY_OVERLENGTH );
2132- zc -> seqStore .maxNbLit = blockSize ;
2133-
2134- /* buffers */
2135- zc -> bufferedPolicy = zbuff ;
2136- zc -> inBuffSize = buffInSize ;
2137- zc -> inBuff = (char * )ZSTD_cwksp_reserve_aligned (ws , buffInSize );
2138- zc -> outBuffSize = buffOutSize ;
2139- zc -> outBuff = (char * )ZSTD_cwksp_reserve_aligned (ws , buffOutSize );
2140-
2141- /* ldm bucketOffsets table */
2142- if (params -> ldmParams .enableLdm == ZSTD_ps_enable ) {
2143- /* TODO: avoid memset? */
2144- size_t const numBuckets =
2145- ((size_t )1 ) << (params -> ldmParams .hashLog -
2146- params -> ldmParams .bucketSizeLog );
2147- zc -> ldmState .bucketOffsets = (BYTE * )ZSTD_cwksp_reserve_aligned (ws , numBuckets );
2148- ZSTD_memset (zc -> ldmState .bucketOffsets , 0 , numBuckets );
2149- }
2150-
2151- /* sequences storage */
2152- ZSTD_referenceExternalSequences (zc , NULL , 0 );
2153- zc -> seqStore .maxNbSeq = maxNbSeq ;
2154- zc -> seqStore .llCode = (BYTE * )ZSTD_cwksp_reserve_aligned (ws , maxNbSeq * sizeof (BYTE ));
2155- zc -> seqStore .mlCode = (BYTE * )ZSTD_cwksp_reserve_aligned (ws , maxNbSeq * sizeof (BYTE ));
2156- zc -> seqStore .ofCode = (BYTE * )ZSTD_cwksp_reserve_aligned (ws , maxNbSeq * sizeof (BYTE ));
21572135 zc -> seqStore .sequencesStart = (seqDef * )ZSTD_cwksp_reserve_aligned (ws , maxNbSeq * sizeof (seqDef ));
21582136
2159-
21602137 /* ldm hash table */
21612138 if (params -> ldmParams .enableLdm == ZSTD_ps_enable ) {
21622139 /* TODO: avoid memset? */
@@ -2178,8 +2155,39 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
21782155 (ZSTD_Sequence * )ZSTD_cwksp_reserve_aligned (ws , maxNbExternalSeq * sizeof (ZSTD_Sequence ));
21792156 }
21802157
2158+ /* buffers */
2159+
2160+ /* ZSTD_wildcopy() is used to copy into the literals buffer,
2161+ * so we have to oversize the buffer by WILDCOPY_OVERLENGTH bytes.
2162+ */
2163+ zc -> seqStore .litStart = ZSTD_cwksp_reserve_buffer (ws , blockSize + WILDCOPY_OVERLENGTH );
2164+ zc -> seqStore .maxNbLit = blockSize ;
2165+
2166+ zc -> bufferedPolicy = zbuff ;
2167+ zc -> inBuffSize = buffInSize ;
2168+ zc -> inBuff = (char * )ZSTD_cwksp_reserve_buffer (ws , buffInSize );
2169+ zc -> outBuffSize = buffOutSize ;
2170+ zc -> outBuff = (char * )ZSTD_cwksp_reserve_buffer (ws , buffOutSize );
2171+
2172+ /* ldm bucketOffsets table */
2173+ if (params -> ldmParams .enableLdm == ZSTD_ps_enable ) {
2174+ /* TODO: avoid memset? */
2175+ size_t const numBuckets =
2176+ ((size_t )1 ) << (params -> ldmParams .hashLog -
2177+ params -> ldmParams .bucketSizeLog );
2178+ zc -> ldmState .bucketOffsets = ZSTD_cwksp_reserve_buffer (ws , numBuckets );
2179+ ZSTD_memset (zc -> ldmState .bucketOffsets , 0 , numBuckets );
2180+ }
2181+
2182+ /* sequences storage */
2183+ ZSTD_referenceExternalSequences (zc , NULL , 0 );
2184+ zc -> seqStore .maxNbSeq = maxNbSeq ;
2185+ zc -> seqStore .llCode = ZSTD_cwksp_reserve_buffer (ws , maxNbSeq * sizeof (BYTE ));
2186+ zc -> seqStore .mlCode = ZSTD_cwksp_reserve_buffer (ws , maxNbSeq * sizeof (BYTE ));
2187+ zc -> seqStore .ofCode = ZSTD_cwksp_reserve_buffer (ws , maxNbSeq * sizeof (BYTE ));
2188+
21812189 DEBUGLOG (3 , "wksp: finished allocating, %zd bytes remain available" , ZSTD_cwksp_available_space (ws ));
2182- assert (ZSTD_cwksp_estimated_space_within_bounds (ws , neededSpace , resizeWorkspace ));
2190+ assert (ZSTD_cwksp_estimated_space_within_bounds (ws , neededSpace ));
21832191
21842192 zc -> initialized = 1 ;
21852193
@@ -5210,7 +5218,7 @@ size_t ZSTD_estimateCDictSize_advanced(
52105218 + ZSTD_sizeof_matchState (& cParams , ZSTD_resolveRowMatchFinderMode (ZSTD_ps_auto , & cParams ),
52115219 /* enableDedicatedDictSearch */ 1 , /* forCCtx */ 0 )
52125220 + (dictLoadMethod == ZSTD_dlm_byRef ? 0
5213- : ZSTD_cwksp_aligned_alloc_size (ZSTD_cwksp_align (dictSize , sizeof (void * ))));
5221+ : ZSTD_cwksp_alloc_size (ZSTD_cwksp_align (dictSize , sizeof (void * ))));
52145222}
52155223
52165224size_t ZSTD_estimateCDictSize (size_t dictSize , int compressionLevel )
@@ -5295,7 +5303,7 @@ static ZSTD_CDict* ZSTD_createCDict_advanced_internal(size_t dictSize,
52955303 ZSTD_cwksp_alloc_size (HUF_WORKSPACE_SIZE ) +
52965304 ZSTD_sizeof_matchState (& cParams , useRowMatchFinder , enableDedicatedDictSearch , /* forCCtx */ 0 ) +
52975305 (dictLoadMethod == ZSTD_dlm_byRef ? 0
5298- : ZSTD_cwksp_aligned_alloc_size (ZSTD_cwksp_align (dictSize , sizeof (void * ))));
5306+ : ZSTD_cwksp_alloc_size (ZSTD_cwksp_align (dictSize , sizeof (void * ))));
52995307 void * const workspace = ZSTD_customMalloc (workspaceSize , customMem );
53005308 ZSTD_cwksp ws ;
53015309 ZSTD_CDict * cdict ;
0 commit comments