Skip to content

Commit 8ea4074

Browse files
committed
fn ZDICT_countEStats: pass many things as references
1 parent c9fb945 commit 8ea4074

File tree

1 file changed

+30
-39
lines changed

1 file changed

+30
-39
lines changed

lib/dictBuilder/zdict.rs

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -730,12 +730,12 @@ unsafe fn ZDICT_fillNoise(buffer: *mut core::ffi::c_void, length: size_t) {
730730
const MAXREPOFFSET: core::ffi::c_int = 1024;
731731
unsafe fn ZDICT_countEStats(
732732
esr: EStats_ress_t,
733-
params: *const ZSTD_parameters,
734-
countLit: *mut core::ffi::c_uint,
735-
offsetcodeCount: *mut core::ffi::c_uint,
736-
matchlengthCount: *mut core::ffi::c_uint,
737-
litlengthCount: *mut core::ffi::c_uint,
738-
repOffsets: *mut u32,
733+
params: &ZSTD_parameters,
734+
countLit: &mut [u32; 256],
735+
offsetcodeCount: &mut [u32; 31],
736+
matchlengthCount: &mut [u32; 53],
737+
litlengthCount: &mut [u32; 36],
738+
repOffsets: &mut [u32; 1024],
739739
src: *const core::ffi::c_void,
740740
mut srcSize: size_t,
741741
notificationLevel: u32,
@@ -771,40 +771,32 @@ unsafe fn ZDICT_countEStats(
771771
}
772772
if cSize != 0 {
773773
let seqStorePtr = ZSTD_getSeqStore(esr.zc);
774-
let mut bytePtr = core::ptr::null::<u8>();
775-
bytePtr = (*seqStorePtr).litStart;
774+
775+
/* literals stats */
776+
let mut bytePtr = (*seqStorePtr).litStart as *const u8;
776777
while bytePtr < (*seqStorePtr).lit as *const u8 {
777-
let fresh9 = &mut (*countLit.offset(*bytePtr as isize));
778-
*fresh9 = (*fresh9).wrapping_add(1);
778+
countLit[usize::from(*bytePtr)] += 1;
779779
bytePtr = bytePtr.add(1);
780780
}
781+
782+
/* seqStats */
781783
let nbSeq = ((*seqStorePtr).sequences).offset_from((*seqStorePtr).sequencesStart)
782784
as core::ffi::c_long as u32;
783785
ZSTD_seqToCodes(seqStorePtr);
786+
784787
let codePtr: *const u8 = (*seqStorePtr).ofCode;
785-
let mut u: u32 = 0;
786-
u = 0;
787-
while u < nbSeq {
788-
let fresh10 = &mut (*offsetcodeCount.offset(*codePtr.offset(u as isize) as isize));
789-
*fresh10 = (*fresh10).wrapping_add(1);
790-
u = u.wrapping_add(1);
788+
for u in 0..nbSeq as usize {
789+
offsetcodeCount[*codePtr.add(u) as usize] += 1;
791790
}
792-
let codePtr_0: *const u8 = (*seqStorePtr).mlCode;
793-
let mut u_0: u32 = 0;
794-
u_0 = 0;
795-
while u_0 < nbSeq {
796-
let fresh11 = &mut (*matchlengthCount.offset(*codePtr_0.offset(u_0 as isize) as isize));
797-
*fresh11 = (*fresh11).wrapping_add(1);
798-
u_0 = u_0.wrapping_add(1);
791+
let codePtr: *const u8 = (*seqStorePtr).mlCode;
792+
for u in 0..nbSeq as usize {
793+
matchlengthCount[*codePtr.add(u) as usize] += 1;
799794
}
800-
let codePtr_1: *const u8 = (*seqStorePtr).llCode;
801-
let mut u_1: u32 = 0;
802-
u_1 = 0;
803-
while u_1 < nbSeq {
804-
let fresh12 = &mut (*litlengthCount.offset(*codePtr_1.offset(u_1 as isize) as isize));
805-
*fresh12 = (*fresh12).wrapping_add(1);
806-
u_1 = u_1.wrapping_add(1);
795+
let codePtr: *const u8 = (*seqStorePtr).llCode;
796+
for u in 0..nbSeq as usize {
797+
litlengthCount[*codePtr.add(u) as usize] += 1;
807798
}
799+
808800
if nbSeq >= 2 {
809801
let seq: *const SeqDef = (*seqStorePtr).sequencesStart;
810802
let mut offset1 = ((*seq).offBase).wrapping_sub(ZSTD_REP_NUM as u32);
@@ -815,13 +807,12 @@ unsafe fn ZDICT_countEStats(
815807
if offset2 >= MAXREPOFFSET as u32 {
816808
offset2 = 0;
817809
}
818-
let fresh13 = &mut (*repOffsets.offset(offset1 as isize));
819-
*fresh13 = (*fresh13).wrapping_add(3);
820-
let fresh14 = &mut (*repOffsets.offset(offset2 as isize));
821-
*fresh14 = (*fresh14).wrapping_add(1);
810+
repOffsets[offset1 as usize] += 3;
811+
repOffsets[offset2 as usize] += 1;
822812
}
823813
}
824814
}
815+
825816
unsafe fn ZDICT_totalSampleSize(fileSizes: *const size_t, nbFiles: core::ffi::c_uint) -> size_t {
826817
let mut total = 0 as size_t;
827818
let mut u: core::ffi::c_uint = 0;
@@ -936,11 +927,11 @@ unsafe fn ZDICT_analyzeEntropy(
936927
ZDICT_countEStats(
937928
esr,
938929
&params,
939-
countLit.as_mut_ptr(),
940-
offcodeCount.as_mut_ptr(),
941-
matchLengthCount.as_mut_ptr(),
942-
litLengthCount.as_mut_ptr(),
943-
repOffset.as_mut_ptr(),
930+
&mut countLit,
931+
&mut offcodeCount,
932+
&mut matchLengthCount,
933+
&mut litLengthCount,
934+
&mut repOffset,
944935
(srcBuffer as *const core::ffi::c_char).add(pos) as *const core::ffi::c_void,
945936
*fileSizes.offset(u as isize),
946937
notificationLevel,

0 commit comments

Comments
 (0)