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

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

View File

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

View File

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