selfhost/cmd/wcc: migrate 2 cgenutil amalloc sites to alloc(T{...})!

Phase 0 batch 3a. structinfo registration + fieldinfo per-field in
registerstruct (cgenutil.ww). Both relied on amalloc-zero for fields=nil
and totsize=0 (structinfo) and finext=nil (fieldinfo); MAP_ANON-zero
covers the same slots.

check.ww:842 (arenau64tos 24B scratch) deferred to #11.
cgenutil.ww:108 (mkvarargname runtime-N) deferred to #8.

Verified 132/132 + 995_self_rebuild byte-identity.
This commit is contained in:
2026-05-20 18:39:24 +09:00
parent 104ba3cc0a
commit 1798ef02ef
3 changed files with 30 additions and 30 deletions

View File

@@ -2181,11 +2181,10 @@ fn fieldsize(c: *cgen, tnode: *node) i32 = {
};
fn registerstruct(c: *cgen, name: str, srcmod: str, tstruct: *node) void = {
let si: *structinfo = amalloc(c.a, 80u64): *structinfo;
si.sname = name;
si.smod = srcmod;
si.fields = nil;
si.totsize = 0;
let si: *structinfo = alloc(structinfo{
sname = name,
smod = srcmod,
})!;
let head: *fieldinfo = nil;
let tail: *fieldinfo = nil;
let off: i32 = 0;
@@ -2203,11 +2202,12 @@ fn registerstruct(c: *cgen, name: str, srcmod: str, tstruct: *node) void = {
if ((off & (aln - 1)) != 0) {
off = (off + aln - 1) & ~(aln - 1);
};
let fi: *fieldinfo = amalloc(c.a, 48u64): *fieldinfo;
fi.fname = f.str;
fi.foff = off;
fi.fsz = sz;
fi.tnode = f.lhs;
let fi: *fieldinfo = alloc(fieldinfo{
fname = f.str,
foff = off,
fsz = sz,
tnode = f.lhs,
})!;
if (head == nil) { head = fi; tail = fi; }
else { tail.finext = fi; tail = fi; };
off += sz;