Blk::ins is a vector

Scratching an itch - avoid unnecesary re-allocation in idup()
which is called often in the optimisation chain.

Blk::ins is reallocated in xxx_abi() - needs further fiddling.
This commit is contained in:
Roland Paterson-Jones 2024-10-22 14:22:49 +02:00 committed by Quentin Carbonneaux
parent 024dffac8b
commit ca928f6f8d
4 changed files with 7 additions and 4 deletions

View File

@ -670,7 +670,7 @@ amd64_sysv_abi(Fn *fn)
break;
fa = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
i0 = alloc(n * sizeof(Ins));
i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;

View File

@ -744,7 +744,7 @@ arm64_abi(Fn *fn)
break;
p = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
i0 = alloc(n * sizeof(Ins));
i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;

View File

@ -601,7 +601,7 @@ rv64_abi(Fn *fn)
break;
p = selpar(fn, b->ins, i);
n = b->nins - (i - b->ins) + (&insb[NIns] - curi);
i0 = alloc(n * sizeof(Ins));
i0 = vnew(n, sizeof(Ins), PFn);
ip = icpy(ip = i0, curi, &insb[NIns] - curi);
ip = icpy(ip, i, &b->ins[b->nins] - i);
b->nins = n;

5
util.c
View File

@ -255,7 +255,10 @@ emiti(Ins i)
void
idup(Ins **pd, Ins *s, ulong n)
{
*pd = alloc(n * sizeof(Ins));
if (*pd)
vgrow(pd, n);
else
*pd = vnew(n, sizeof(Ins), PFn);
if (n)
memcpy(*pd, s, n * sizeof(Ins));
}