From e361a51248ca4cdea89395d53b24e98d9b1805a2 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Wed, 19 Aug 2015 10:47:27 -0400 Subject: new NAlign constant and fix frame size computation --- lisc/isel.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'lisc/isel.c') diff --git a/lisc/isel.c b/lisc/isel.c index af21bcb..70550ff 100644 --- a/lisc/isel.c +++ b/lisc/isel.c @@ -359,7 +359,6 @@ seljmp(Blk *b, Fn *fn) int slota(int sz, int al /* log2 */, int *sa) { - enum { N = sizeof (Fn){0}.svec / sizeof (Fn){0}.svec[0] }; int j, k, s, l, a, ret; a = 1 << al; @@ -372,18 +371,18 @@ slota(int sz, int al /* log2 */, int *sa) * todo, could sophisticate */ l = (l + a-1) & ~(a-1); - s = sa[N-1] + l; + s = sa[NAlign-1] + l; ret = s; - for (j=0, k=1; j sa[j+1]) { + if (j < NAlign-1 && s > sa[j+1]) { /* we were in a bigger hole, * it needs to shift further */ @@ -436,7 +435,8 @@ isel(Fn *fn) sz = fn->con[i->arg[0].val].val; if (sz < 0 || sz >= INT_MAX-3) diag("isel: invalid alloc size"); - sz = (sz + 3) / 4; + n = 16 / (1 << (NAlign-1)); + sz = (sz + n-1) / n; al = i->op - OAlloc; s = slota(sz, al, fn->svec); fn->tmp[i->to.val].spill = s; -- cgit 1.4.1