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:
@@ -11392,11 +11392,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;
|
||||
@@ -11414,11 +11413,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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -11392,11 +11392,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;
|
||||
@@ -11414,11 +11413,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;
|
||||
|
||||
Reference in New Issue
Block a user