aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/u_mem.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-03-24 11:58:57 +0100
committerlemon <lsof@mailbox.org>2026-03-24 11:58:57 +0100
commit1052ca3657db6d1237c75899211617feda933ea5 (patch)
treec45186d4a76d78f986a6f40965155049ed3824ce /src/u_mem.c
parent5c209b4df903c5f71cdc8320adbb34f1499f9232 (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.c84
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)