cmd: α/γ-5 rt.malloc/amalloc → alloc([], N)! (w6l stack-promotes + cgenutil mkvarargname)
Phase 0 #8/#11 small batch. 4 sites:
w6l/main.ww δ stack-promotes (3):
- :67 appenddec — 16B → [16]u8
- :106 islinkable — 8B → [8]u8, &mp[0] to os.read
- :176 isso — 20B → [20]u8, &mp[0] to os.read
wcc/cgenutil.ww:108 mkvarargname α (1):
- amalloc → alloc([], n)!. Standard slice indexing
(`p[k]` not `p.ptr[k]`) — ww's slice subscript has no
bounds check (cgenexpr.ww:816-856 in cgindex), same
shape as the dup pilot (4c07ef0).
Closes #11 (arenau64tos was re-routed via #8 separately;
the δ-shape was the genuinely trivial case). Advances #46.
Verified 132/132 + 995_self_rebuild byte-identity.
This commit is contained in:
@@ -9283,12 +9283,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
|
||||
let dk: i32 = 0;
|
||||
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
|
||||
let total: i32 = i + n;
|
||||
let p: *u8 = amalloc(c.a, (total: u64) + 1u64): *u8;
|
||||
let p: []u8 = alloc([], (total: u64) + 1u64)!;
|
||||
let k: i32 = 0;
|
||||
for (k < total) { p[k] = buf[k]; k += 1; };
|
||||
p[total] = 0u8;
|
||||
let r: str;
|
||||
r.ptr = p;
|
||||
r.ptr = p.ptr;
|
||||
r.len = total;
|
||||
return r;
|
||||
};
|
||||
|
||||
@@ -3128,7 +3128,7 @@ fn appenddec(dst: *u8, i: u64, n: u64) u64 = {
|
||||
dst[i] = 48u8;
|
||||
return i + 1u64;
|
||||
};
|
||||
let buf: *u8 = rt.malloc(16u64): *u8;
|
||||
let buf: [16]u8;
|
||||
let k: u64 = 0u64;
|
||||
let v: u64 = n;
|
||||
for (v > 0u64) {
|
||||
@@ -3167,8 +3167,8 @@ fn buildpathv(dst: *u8, dir: *u8, name: *u8, v: u64) u64 = {
|
||||
fn islinkable(path: *u8) bool = {
|
||||
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
|
||||
if (fd < 0) { return false; };
|
||||
let mp: *u8 = rt.malloc(8u64): *u8;
|
||||
let n: i64 = os.read(fd, mp, 8u64);
|
||||
let mp: [8]u8;
|
||||
let n: i64 = os.read(fd, &mp[0], 8u64);
|
||||
os.close(fd);
|
||||
if (n < 4i64) { return false; };
|
||||
// archive: "!<arch>\n"
|
||||
@@ -3237,8 +3237,8 @@ fn resolvelib(a: *arena, name: *u8, libdirs: **u8, nlibdirs: i32) *u8 = {
|
||||
fn isso(path: *u8) i32 = {
|
||||
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
|
||||
if (fd < 0) { return 0; };
|
||||
let mp: *u8 = rt.malloc(20u64): *u8;
|
||||
let n: i64 = os.read(fd, mp, 20u64);
|
||||
let mp: [20]u8;
|
||||
let n: i64 = os.read(fd, &mp[0], 20u64);
|
||||
os.close(fd);
|
||||
if (n < 20i64) { return 0; };
|
||||
if (mp[0u64] != 127u8) { return 0; };
|
||||
|
||||
@@ -64,7 +64,7 @@ fn appenddec(dst: *u8, i: u64, n: u64) u64 = {
|
||||
dst[i] = 48u8;
|
||||
return i + 1u64;
|
||||
};
|
||||
let buf: *u8 = rt.malloc(16u64): *u8;
|
||||
let buf: [16]u8;
|
||||
let k: u64 = 0u64;
|
||||
let v: u64 = n;
|
||||
for (v > 0u64) {
|
||||
@@ -103,8 +103,8 @@ fn buildpathv(dst: *u8, dir: *u8, name: *u8, v: u64) u64 = {
|
||||
fn islinkable(path: *u8) bool = {
|
||||
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
|
||||
if (fd < 0) { return false; };
|
||||
let mp: *u8 = rt.malloc(8u64): *u8;
|
||||
let n: i64 = os.read(fd, mp, 8u64);
|
||||
let mp: [8]u8;
|
||||
let n: i64 = os.read(fd, &mp[0], 8u64);
|
||||
os.close(fd);
|
||||
if (n < 4i64) { return false; };
|
||||
// archive: "!<arch>\n"
|
||||
@@ -173,8 +173,8 @@ fn resolvelib(a: *arena, name: *u8, libdirs: **u8, nlibdirs: i32) *u8 = {
|
||||
fn isso(path: *u8) i32 = {
|
||||
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
|
||||
if (fd < 0) { return 0; };
|
||||
let mp: *u8 = rt.malloc(20u64): *u8;
|
||||
let n: i64 = os.read(fd, mp, 20u64);
|
||||
let mp: [20]u8;
|
||||
let n: i64 = os.read(fd, &mp[0], 20u64);
|
||||
os.close(fd);
|
||||
if (n < 20i64) { return 0; };
|
||||
if (mp[0u64] != 127u8) { return 0; };
|
||||
|
||||
@@ -105,12 +105,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
|
||||
let dk: i32 = 0;
|
||||
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
|
||||
let total: i32 = i + n;
|
||||
let p: *u8 = amalloc(c.a, (total: u64) + 1u64): *u8;
|
||||
let p: []u8 = alloc([], (total: u64) + 1u64)!;
|
||||
let k: i32 = 0;
|
||||
for (k < total) { p[k] = buf[k]; k += 1; };
|
||||
p[total] = 0u8;
|
||||
let r: str;
|
||||
r.ptr = p;
|
||||
r.ptr = p.ptr;
|
||||
r.len = total;
|
||||
return r;
|
||||
};
|
||||
|
||||
@@ -9283,12 +9283,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
|
||||
let dk: i32 = 0;
|
||||
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
|
||||
let total: i32 = i + n;
|
||||
let p: *u8 = amalloc(c.a, (total: u64) + 1u64): *u8;
|
||||
let p: []u8 = alloc([], (total: u64) + 1u64)!;
|
||||
let k: i32 = 0;
|
||||
for (k < total) { p[k] = buf[k]; k += 1; };
|
||||
p[total] = 0u8;
|
||||
let r: str;
|
||||
r.ptr = p;
|
||||
r.ptr = p.ptr;
|
||||
r.len = total;
|
||||
return r;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user