diff options
| author | 2026-03-24 11:58:57 +0100 | |
|---|---|---|
| committer | 2026-03-24 11:58:57 +0100 | |
| commit | 1052ca3657db6d1237c75899211617feda933ea5 (patch) | |
| tree | c45186d4a76d78f986a6f40965155049ed3824ce /src/u_mem.c | |
| parent | 5c209b4df903c5f71cdc8320adbb34f1499f9232 (diff) | |
get rid of imap (was only used for mem2reg, no longer)
Diffstat (limited to 'src/u_mem.c')
| -rw-r--r-- | src/u_mem.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/src/u_mem.c b/src/u_mem.c index ec01433..257652d 100644 --- a/src/u_mem.c +++ b/src/u_mem.c @@ -210,90 +210,6 @@ freearena(Arena **par) } } -/** integer hashmap **/ -void -imap_init_(struct imapbase *m, void **v, uint vsiz, uint N) -{ - uint sizk = N*sizeof*m->k, - sizv = N*vsiz, - sizbs = BSSIZE(N)*sizeof(BitSet); - - assert(ispo2(N)); - m->k = xcalloc(sizk + sizv + sizbs); - *v = (char *)m->k + sizk; - m->bs = (BitSet *)((char *)*v + sizv); - m->N = N; -} - -int -imap_get_(struct imapbase *m, short k) -{ - if (!m->N) return -1; - for (int i = k;; ++i) { - bool notempty = bstest(m->bs, i &= m->N - 1); - if (bstest(m->bs, i) && m->k[i] == k) return i; - if (!notempty) return -1; - } -} - -static void -imap_rehash(struct imapbase *m, void **v, uint vsiz) -{ - short *newk, k; - int i, j; - void *newv; - BitSet *newbs; - uint N2 = m->N ? m->N << 1 : 16, - sizk = N2*sizeof*m->k, - sizv = N2*vsiz, - sizbs = BSSIZE(N2)*sizeof(BitSet); - - assert(N2); - newk = xcalloc(sizk + sizv + sizbs); - memset(newk, 0, sizk + sizv + sizbs); - newv = (char *)newk + sizk; - newbs = (BitSet *)((char *)newv + sizv); - for (i = 0; i < m->N; ++i) { - if (!bstest(m->bs, i)) - continue; - j = k = m->k[i]; - for (;; ++j) { - j &= N2 - 1; - if (!bstest(newbs, j)) { - bsset(newbs, j); - newk[j] = k; - memcpy((char *)newv + j*vsiz, (char *)*v + i*vsiz, vsiz); - break; - } - } - } - free(m->k); - m->k = newk; - *v = newv; - m->bs = newbs; - m->N = N2; -} - -int -imap_set_(struct imapbase *m, void **v, uint vsiz, short k) -{ - if (m->n >= m->N/4*3 /*load factor 75*/) { - imap_rehash(m, v, vsiz); - assert(m->n < m->N); - } - for (int i = k;; ++i) { - bool notempty = bstest(m->bs, i &= m->N - 1); - if (notempty && m->k[i] == k) - return i; - if (!notempty) { - m->k[i] = k; - bsset(m->bs, i); - ++m->n; - return i; - } - } -} - /** pointer hashmap **/ void pmap_init_(struct pmapbase *m, void **v, uint vsiz, uint N) |