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:
2026-05-21 02:17:50 +09:00
parent 368b85ea33
commit 7c2403cc4c
5 changed files with 16 additions and 16 deletions

View File

@@ -9283,12 +9283,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
let dk: i32 = 0; let dk: i32 = 0;
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; }; for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
let total: i32 = i + n; 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; let k: i32 = 0;
for (k < total) { p[k] = buf[k]; k += 1; }; for (k < total) { p[k] = buf[k]; k += 1; };
p[total] = 0u8; p[total] = 0u8;
let r: str; let r: str;
r.ptr = p; r.ptr = p.ptr;
r.len = total; r.len = total;
return r; return r;
}; };

View File

@@ -3128,7 +3128,7 @@ fn appenddec(dst: *u8, i: u64, n: u64) u64 = {
dst[i] = 48u8; dst[i] = 48u8;
return i + 1u64; return i + 1u64;
}; };
let buf: *u8 = rt.malloc(16u64): *u8; let buf: [16]u8;
let k: u64 = 0u64; let k: u64 = 0u64;
let v: u64 = n; let v: u64 = n;
for (v > 0u64) { for (v > 0u64) {
@@ -3167,8 +3167,8 @@ fn buildpathv(dst: *u8, dir: *u8, name: *u8, v: u64) u64 = {
fn islinkable(path: *u8) bool = { fn islinkable(path: *u8) bool = {
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32); let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
if (fd < 0) { return false; }; if (fd < 0) { return false; };
let mp: *u8 = rt.malloc(8u64): *u8; let mp: [8]u8;
let n: i64 = os.read(fd, mp, 8u64); let n: i64 = os.read(fd, &mp[0], 8u64);
os.close(fd); os.close(fd);
if (n < 4i64) { return false; }; if (n < 4i64) { return false; };
// archive: "!<arch>\n" // archive: "!<arch>\n"
@@ -3237,8 +3237,8 @@ fn resolvelib(a: *arena, name: *u8, libdirs: **u8, nlibdirs: i32) *u8 = {
fn isso(path: *u8) i32 = { fn isso(path: *u8) i32 = {
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32); let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
if (fd < 0) { return 0; }; if (fd < 0) { return 0; };
let mp: *u8 = rt.malloc(20u64): *u8; let mp: [20]u8;
let n: i64 = os.read(fd, mp, 20u64); let n: i64 = os.read(fd, &mp[0], 20u64);
os.close(fd); os.close(fd);
if (n < 20i64) { return 0; }; if (n < 20i64) { return 0; };
if (mp[0u64] != 127u8) { return 0; }; if (mp[0u64] != 127u8) { return 0; };

View File

@@ -64,7 +64,7 @@ fn appenddec(dst: *u8, i: u64, n: u64) u64 = {
dst[i] = 48u8; dst[i] = 48u8;
return i + 1u64; return i + 1u64;
}; };
let buf: *u8 = rt.malloc(16u64): *u8; let buf: [16]u8;
let k: u64 = 0u64; let k: u64 = 0u64;
let v: u64 = n; let v: u64 = n;
for (v > 0u64) { for (v > 0u64) {
@@ -103,8 +103,8 @@ fn buildpathv(dst: *u8, dir: *u8, name: *u8, v: u64) u64 = {
fn islinkable(path: *u8) bool = { fn islinkable(path: *u8) bool = {
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32); let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
if (fd < 0) { return false; }; if (fd < 0) { return false; };
let mp: *u8 = rt.malloc(8u64): *u8; let mp: [8]u8;
let n: i64 = os.read(fd, mp, 8u64); let n: i64 = os.read(fd, &mp[0], 8u64);
os.close(fd); os.close(fd);
if (n < 4i64) { return false; }; if (n < 4i64) { return false; };
// archive: "!<arch>\n" // archive: "!<arch>\n"
@@ -173,8 +173,8 @@ fn resolvelib(a: *arena, name: *u8, libdirs: **u8, nlibdirs: i32) *u8 = {
fn isso(path: *u8) i32 = { fn isso(path: *u8) i32 = {
let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32); let fd: i32 = os.open(pathstr(path), os.flag.RDONLY, 0i32);
if (fd < 0) { return 0; }; if (fd < 0) { return 0; };
let mp: *u8 = rt.malloc(20u64): *u8; let mp: [20]u8;
let n: i64 = os.read(fd, mp, 20u64); let n: i64 = os.read(fd, &mp[0], 20u64);
os.close(fd); os.close(fd);
if (n < 20i64) { return 0; }; if (n < 20i64) { return 0; };
if (mp[0u64] != 127u8) { return 0; }; if (mp[0u64] != 127u8) { return 0; };

View File

@@ -105,12 +105,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
let dk: i32 = 0; let dk: i32 = 0;
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; }; for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
let total: i32 = i + n; 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; let k: i32 = 0;
for (k < total) { p[k] = buf[k]; k += 1; }; for (k < total) { p[k] = buf[k]; k += 1; };
p[total] = 0u8; p[total] = 0u8;
let r: str; let r: str;
r.ptr = p; r.ptr = p.ptr;
r.len = total; r.len = total;
return r; return r;
}; };

View File

@@ -9283,12 +9283,12 @@ fn mkvarargname(c: *cgen, prefix: str, seq: i32) str = {
let dk: i32 = 0; let dk: i32 = 0;
for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; }; for (dk < n) { buf[i + dk] = ns.ptr[dk]; dk += 1; };
let total: i32 = i + n; 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; let k: i32 = 0;
for (k < total) { p[k] = buf[k]; k += 1; }; for (k < total) { p[k] = buf[k]; k += 1; };
p[total] = 0u8; p[total] = 0u8;
let r: str; let r: str;
r.ptr = p; r.ptr = p.ptr;
r.len = total; r.len = total;
return r; return r;
}; };