From e043811980db560fc2507bb53b644e54c80527dc Mon Sep 17 00:00:00 2001 From: lemon Date: Mon, 8 Sep 2025 22:05:33 +0200 Subject: regalloc: start implementing linear scan --- mem.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'mem.c') diff --git a/mem.c b/mem.c index f53ba05..cf65087 100644 --- a/mem.c +++ b/mem.c @@ -74,16 +74,9 @@ vpushn_(void **p, int *pcap, uint *pn, uint siz, const void *dat, uint ndat) void vresize_(void **p, int *pcap, uint *pn, uint siz, uint N) { - if (N <= *pn) { - } else if (*pcap > 0 && *pcap < N) { - void *old = *p; - *p = xrealloc(NULL, -(*pcap = -(N * siz))); - if (old) memcpy(*p, old, *pcap * siz); - } else if (*pcap <= 0 && -*pcap < N) { - *pcap = *pcap ? *pcap : -1; - do *pcap *= 2; while (-*pcap < N); - *p = xrealloc(*p, -*pcap * siz); - memset((char *)*p + *pn*siz, 0, (N - *pn) * siz); + while ((*pcap < 0 ? -*pcap : *pcap) < N) { + vpush_(p, pcap, pn, siz); + *pn = *pcap < 0 ? -*pcap : *pcap; } *pn = N; } -- cgit v1.2.3