nx_frame_raw_wasm_gate.nx source
↩ module page · 31 lines · 1912 B
1import "nx_wasm_vm.nx"
2import "nx_frame_pacing_lib.nx"
3import "nx_gate_verdict.nx"
4func main(argc: i64, argv: *i64) -> i64 {
5 if argc != 2 { return 2 }
6 let ctr: *i64 = gv_ctr()
7 let sz: *i64 = sys_mmap(16) as *i64
8 let b: *u8 = sys_read_file(argv[1] as *u8,sz)
9 if (b as i64)==0 { return 3 }
10 let m: *WasmMod = wm_new(b,sz[0])
11 if wm_parse(m)!=0 { return 4 }
12 let found: i64 = wm_find_export(m,"perf_frame_raw" as *u8)
13 gv_check("actual-module-exports-raw-recorder" as *u8,found>=0,ctr)
14 if found<0 { return 5 }
15 wm_run(m,"perf_frame_raw" as *u8,10,0,0,0,0,1)
16 wm_run(m,"perf_frame_raw" as *u8,5000,0,0,0,0,1)
17 wm_run(m,"perf_frame_raw" as *u8,1000000000,0,0,0,0,1)
18 gv_check_eq("module-raw-sample-preserves-stall" as *u8,wm_run(m,"perf_sample" as *u8,1,0,0,0,0,1),5000,ctr)
19 gv_check_eq("module-raw-count" as *u8,wm_run(m,"perf_n" as *u8,0,0,0,0,0,0),3,ctr)
20 let r: *i64 = sys_mmap(PF_WORDS*8) as *i64
21 pf_init(r)
22 let wire: *u8 = "{\"frames\":[10,5000,1000000000]}" as *u8
23 gv_check_eq("receiver-read-same-sequence" as *u8,fpc_frames_parse(wire,fpc_slen(wire),r,16),3,ctr)
24 gv_check_eq("module-and-receiver-p50-agree" as *u8,wm_run(m,"perf_p50" as *u8,0,0,0,0,0,0),pf_pct(r,500),ctr)
25 gv_check_eq("module-and-receiver-p95-agree" as *u8,wm_run(m,"perf_p95" as *u8,0,0,0,0,0,0),pf_pct(r,950),ctr)
26 gv_check_eq("module-and-receiver-p99-agree" as *u8,wm_run(m,"perf_p99" as *u8,0,0,0,0,0,0),pf_pct(r,990),ctr)
27 gv_check_eq("module-lifetime-worst-preserves-pause" as *u8,wm_run(m,"perf_worst_ever" as *u8,0,0,0,0,0,0),1000000000,ctr)
28 wm_run(m,"perf_frame" as *u8,5000,0,0,0,0,1)
29 gv_check_eq("legacy-export-retains-existing-cap" as *u8,wm_run(m,"perf_sample" as *u8,3,0,0,0,0,1),1000,ctr)
30 return gv_verdict("nx_frame_raw_wasm_gate" as *u8,ctr,"actual WASM export execution agrees with receiver; no browser/GPU timing claim" as *u8)
31}