From e6fbab42185f4fb4e3a3b1e3e93eaa5d3d81b7c7 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 20 Dec 2025 17:59:40 +0100 Subject: backend: unify pass memory allocation strategies It was all over the place for temporary data structures used by individual passes. Now there is an arena specifically for that, which is nicer. --- x86_64/emit.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'x86_64/emit.c') diff --git a/x86_64/emit.c b/x86_64/emit.c index 3fc93b0..2786e22 100644 --- a/x86_64/emit.c +++ b/x86_64/emit.c @@ -738,7 +738,6 @@ static struct blkaddr { uint relreloc; }; } *blkaddr; -static uint nblkaddr; static void Xjcc(uchar **pcode, enum cc cc, struct block *dst) @@ -1356,10 +1355,7 @@ emitbin(struct function *fn) } while ((blk = blk->lprev) != fn->entry); } - if (nblkaddr < fn->nblk) { - blkaddr = xrealloc(blkaddr, (nblkaddr = fn->nblk) * sizeof *blkaddr); - } - memset(blkaddr, 0, nblkaddr * sizeof *blkaddr); + blkaddr = allocz(fn->passarena, fn->nblk * sizeof *blkaddr, 0); blk = fn->entry; do { -- cgit v1.2.3