From 8560ce0f4dac64ed4cf4def137f4d1d4e5d419e0 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 6 Nov 2022 12:37:21 -0500 Subject: [PATCH] Move hash table initializers to functions to save some binary space --- src/builtins/selfsearch.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/builtins/selfsearch.c b/src/builtins/selfsearch.c index 2ef284d6..ab751d20 100644 --- a/src/builtins/selfsearch.c +++ b/src/builtins/selfsearch.c @@ -87,6 +87,9 @@ u8 radix_offsets_2_u32(usz* c0, u32* v0, usz n) { } \ decG(x); TFREE(alloc); +static NOINLINE void memset32(u32* p, u32 v, usz l) { for (usz i=0; i>sh, k = k0; while (hash[k]!=x0) k++; \ cc += k-k0; \ @@ -342,13 +345,13 @@ B indexOf_c1(B t, B x) { /* RESWRITE */ \ if (k!=h) { val[j]=ctr++; hash[j]=h; } rp[i]=val[j]; , \ /*THRESHMUL*/2, THRESH, \ - /*AUXSIZE*/sizeof(usz), \ + /*AUXSIZE*/sizeof(u32), \ /* AUXINIT */ \ - usz* val = (usz*)(hash+sz+ext) + msz-sz; \ - for (usz i = 0; i < sz+ext; i++) val[i] = 0; \ - usz ctr = 1; , \ + u32* val = (u32*)(hash+sz+ext) + msz-sz; \ + memset32(val, 0, sz+ext); \ + u32 ctr = 1; , \ /* AUXEXTEND */ \ - val -= dif; for (j = 0; j < dif; j++) val[j] = 0; , \ + val -= dif; memset32(val, 0, dif); , \ /*AUXCLEAR*/val[j] = 0;, /*AUXMOVE*/val[k] = val[j];) if (lw==5) { if (n<12) { BRUTE(32); }