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 = {
|
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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user