code wiki / (root) / nx_vcc_probe_wat.nx

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}