aboutsummaryrefslogtreecommitdiffhomepage
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
parent5c209b4df903c5f71cdc8320adbb34f1499f9232 (diff)
get rid of imap (was only used for mem2reg, no longer)
-rw-r--r--src/antcc.h27
-rw-r--r--src/u_mem.c84
2 files changed, 0 insertions, 111 deletions
diff --git a/src/antcc.h b/src/antcc.h
index b467156..72ded43 100644
--- a/src/antcc.h
+++ b/src/antcc.h
@@ -247,33 +247,6 @@ void vresize_(struct vecbase *, uint siz, uint N);
#define vpushn(v, xs, N) vpushn_(&(v)->_vb, sizeof *(v)->p, xs, N)
#define vresize(v, N) vresize_(&(v)->_vb, sizeof *(v)->p, N)
-/** map of short -> T **/
-#define imap_of(T) struct { T *v; int tmp; struct imapbase mb; }
-struct imapbase { short *k; BitSet *bs; uint n, N; };
-
-void imap_init_(struct imapbase *, void **v, uint vsiz, uint N);
-int imap_get_(struct imapbase *, short k);
-int imap_set_(struct imapbase *, void **v, uint vsiz, short k);
-#define imap_free(m) (free((m)->mb.k), memset((m), 0, sizeof *(m)))
-#define imap_init(m, N) (imap_free(m), imap_init_(&(m)->mb, (void **)&(m)->v, sizeof*(m)->v, (N)))
-#define imap_clear(m) ((m)->mb.bs ? bszero((m)->mb.bs, BSSIZE((m)->mb.N)) : (void)0, \
- (m)->mb.n = 0)
-#define imap_get(m, k) ((m)->tmp = imap_get_(&(m)->mb, k), (m)->tmp < 0 ? NULL : &(m)->v[(m)->tmp])
-#define imap_set(m, k, ...) ((m)->tmp = imap_set_(&(m)->mb, (void **)&(m)->v, sizeof*(m)->v, k), \
- (m)->v[(m)->tmp] = (__VA_ARGS__), &(m)->v[(m)->tmp])
-#define imap_each(m,kx,pvx) \
- for (int _i = 0; _i < (m)->mb.N && ((kx) = (m)->mb.k[_i], (pvx) = &(m)->v[_i], 1); ++_i) \
- if (bstest((m)->mb.bs, _i))
-#define imap_copy(dst,src) do { \
- size_t N = (src)->mb.N; \
- if (!N) break; \
- (dst)->mb.n = (src)->mb.n; \
- imap_init((dst), N); \
- memcpy((dst)->mb.k, (src)->mb.k, \
- N*(sizeof*(src)->mb.k + sizeof*(src)->v) + BSSIZE(N)*sizeof(BitSet)); \
-} while (0)
-
-
/** map of non-null ptr -> T **/
#define pmap_of(T) struct { T *v; int tmp; struct pmapbase mb; }
struct pmapbase { void **k; uint n, N; };
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)