refactor(compress): move CCtx construction policy to Rust
Move reset, parameter copy, and default policy resolution from ZSTD_makeCCtxParamsFromCParams into Rust through a pointer-based ABI function. Keep the private LDM adjustment and its invariants in C while Rust owns the stable parameter-object policy and focused reset/resolution coverage. Test Plan: - worker git diff and capped format checks - parent capped root clippy and native build - parent capped upstream make -j1 -C tests test - parent capped CLI clippy and tests All parent verification is serial under a 40 GiB virtual-memory cap. Standalone root Rust unit linking remains unavailable because the crate imports C-owned bridge symbols.
This commit is contained in:
@@ -2015,6 +2015,9 @@ int ZSTD_rust_cctx_params_job_size_min(void);
|
||||
int ZSTD_rust_cctx_params_job_size_max(void);
|
||||
ZSTD_CCtx_params* ZSTD_rust_createCCtxParams(ZSTD_customMem customMem);
|
||||
size_t ZSTD_rust_freeCCtxParams(ZSTD_CCtx_params* params);
|
||||
void ZSTD_rust_makeCCtxParamsFromCParams(
|
||||
ZSTD_CCtx_params* cctxParams,
|
||||
const ZSTD_compressionParameters* cParams);
|
||||
void ZSTD_rust_CCtxParams_init_internal(
|
||||
ZSTD_CCtx_params* cctxParams, const ZSTD_parameters* params,
|
||||
int compressionLevel);
|
||||
@@ -3615,23 +3618,14 @@ static ZSTD_CCtx_params ZSTD_makeCCtxParamsFromCParams(
|
||||
ZSTD_compressionParameters cParams)
|
||||
{
|
||||
ZSTD_CCtx_params cctxParams;
|
||||
/* should not matter, as all cParams are presumed properly defined */
|
||||
ZSTD_CCtxParams_init(&cctxParams, ZSTD_CLEVEL_DEFAULT);
|
||||
cctxParams.cParams = cParams;
|
||||
|
||||
/* Adjust advanced params according to cParams */
|
||||
cctxParams.ldmParams.enableLdm = ZSTD_resolveEnableLdm(cctxParams.ldmParams.enableLdm, &cParams);
|
||||
/* Rust owns reset, copy, and default policy. Keep the C LDM adapter and
|
||||
* assertions here because they depend on the private C parameter type. */
|
||||
ZSTD_rust_makeCCtxParamsFromCParams(&cctxParams, &cParams);
|
||||
if (cctxParams.ldmParams.enableLdm == ZSTD_ps_enable) {
|
||||
ZSTD_ldm_adjustParameters(&cctxParams.ldmParams, &cParams);
|
||||
assert(cctxParams.ldmParams.hashLog >= cctxParams.ldmParams.bucketSizeLog);
|
||||
assert(cctxParams.ldmParams.hashRateLog < 32);
|
||||
}
|
||||
cctxParams.postBlockSplitter = ZSTD_resolveBlockSplitterMode(cctxParams.postBlockSplitter, &cParams);
|
||||
cctxParams.useRowMatchFinder = ZSTD_resolveRowMatchFinderMode(cctxParams.useRowMatchFinder, &cParams);
|
||||
cctxParams.validateSequences = ZSTD_resolveExternalSequenceValidation(cctxParams.validateSequences);
|
||||
cctxParams.maxBlockSize = ZSTD_resolveMaxBlockSize(cctxParams.maxBlockSize);
|
||||
cctxParams.searchForExternalRepcodes = ZSTD_resolveExternalRepcodeSearch(cctxParams.searchForExternalRepcodes,
|
||||
cctxParams.compressionLevel);
|
||||
assert(!ZSTD_checkCParams(cParams));
|
||||
return cctxParams;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user