feat(mt): move frame checksum finalization to Rust
The MT flush path already delegated checksum serialization to Rust but still computed XXH64_digest in C. Pass the live C-owned XXH64 state through the checked projection and let Rust finalize the digest before the existing little-endian write. C retains serial state storage and job/flush mutation. Test Plan: - ulimit -v 41943040; CARGO_BUILD_JOBS=1 cargo check --tests (rust) - ulimit -v 41943040; CARGO_BUILD_JOBS=1 cargo clippy --tests -- -A clippy::manual-bits -D warnings (rust) - ulimit -v 41943040; make -j1 - ulimit -v 41943040; make -j1 -C tests test - Focused cargo test compiles but remains link-blocked by existing C-owned decompression-view symbols.
This commit is contained in:
@@ -466,7 +466,7 @@ typedef struct {
|
||||
void* dst;
|
||||
size_t dstCapacity;
|
||||
size_t cSize;
|
||||
U32 checksum;
|
||||
const XXH64_state_t* checksumState;
|
||||
} ZSTDMT_RustFrameChecksumProjection;
|
||||
typedef char ZSTDMT_frame_checksum_projection_layout[
|
||||
(offsetof(ZSTDMT_RustFrameChecksumProjection, dst) == 0
|
||||
@@ -474,9 +474,8 @@ typedef char ZSTDMT_frame_checksum_projection_layout[
|
||||
== sizeof(void*)
|
||||
&& offsetof(ZSTDMT_RustFrameChecksumProjection, cSize)
|
||||
== 2 * sizeof(void*)
|
||||
&& offsetof(ZSTDMT_RustFrameChecksumProjection, checksum)
|
||||
&& offsetof(ZSTDMT_RustFrameChecksumProjection, checksumState)
|
||||
== 3 * sizeof(void*)
|
||||
&& sizeof(U32) == 4
|
||||
&& sizeof(ZSTDMT_RustFrameChecksumProjection)
|
||||
== 4 * sizeof(void*))
|
||||
? 1 : -1];
|
||||
@@ -3440,12 +3439,11 @@ static void ZSTDMT_addFrameChecksum(void* opaque, unsigned jobID,
|
||||
{
|
||||
ZSTDMT_CCtx* const mtctx = (ZSTDMT_CCtx*)opaque;
|
||||
ZSTDMT_jobDescription* const job = &mtctx->jobs[jobID];
|
||||
U32 const checksum = (U32)XXH64_digest(&mtctx->serial.xxhState);
|
||||
ZSTDMT_RustFrameChecksumProjection const checksumProjection = {
|
||||
job->dstBuff.start,
|
||||
job->dstBuff.capacity,
|
||||
job->cSize,
|
||||
checksum
|
||||
&mtctx->serial.xxhState
|
||||
};
|
||||
size_t const cSize = ZSTDMT_rust_writeFrameChecksum(&checksumProjection);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user