nx_vcc_probe_wat.nx source
↩ module page · 47 lines · 1850 B
1// nx_vcc_probe_wat.nx -- argless build-driver: lower runtime/nx_vmleak_probe.nx to WAT at a fixed path
2// (nx_sov_build_run swallows argv). Same sovereign pipeline as nx_vcc_color_wat. license_tier: ORIGINAL
3import "nx_syscalls.nx"
4import "nx_types.nx"
5import "nx_lex_kinds.nx"
6import "nx_outbuf.nx"
7import "nx_ir.nx"
8import "nx_tokenizer.nx"
9import "nx_parse.nx"
10import "nx_opt.nx"
11import "nx_ir_dump.nx"
12import "nx_ir_validate.nx"
13import "nx_import.nx"
14import "nx_wasm.nx"
15
16const VCP_OUT_CAP: i64 = 16777216
17const VCP_EXPAND_CAP: i64 = 4194304
18
19func main() -> i64 {
20 let path: *u8 = "runtime/nx_vmleak_probe.nx" as *u8
21 let out_path: *u8 = "web_assets/_video_build/nx_vmleak_probe.wat" as *u8
22 let expand_buf: *u8 = sys_mmap(VCP_EXPAND_CAP)
23 let ctx: *ExpandCtx = expand_ctx_new(expand_buf, VCP_EXPAND_CAP)
24 let rc: i64 = expand_imports(ctx, path)
25 if rc < 0 { sys_write(2, "nx_vcc_probe_wat: expand failed\n" as *u8, 31); return 10 }
26 let op: *i64 = ctx.out_pos
27 let end: i64 = *op
28 expand_buf[end] = 0 as u8
29 let toks: *Tok = lex_source(expand_buf, 262144)
30 if toks == (0 as *Tok) { sys_write(2, "nx_vcc_probe_wat: lex failed\n" as *u8, 28); return 2 }
31 let m: *Module = parse_module(toks, 0 as *Module)
32 if m == (0 as *Module) { sys_write(2, "nx_vcc_probe_wat: parse failed\n" as *u8, 31); return 3 }
33 var fi: i64 = 0
34 while fi < m.n_functions {
35 let f: *Function = ((m.functions as i64) + fi * 176) as *Function
36 opt_run(f)
37 fi = fi + 1
38 }
39 let o: *OutBuf = out_new(VCP_OUT_CAP)
40 wat_emit_module(m, o)
41 let fd: i64 = sys_openat_wr(out_path, 0x1a4)
42 if fd < 0 { sys_write(2, "nx_vcc_probe_wat: open out failed\n" as *u8, 34); return 7 }
43 sys_write(fd, o.buf, o.pos)
44 sys_close(fd)
45 sys_write(1, "nx_vcc_probe_wat: wrote WAT\n" as *u8, 27)
46 return 0
47}