code wiki / _hdl_build / nx_js_poly_ic_gate.nx
nx_js_poly_ic_gate.nx
buildroot/runtime/_hdl_build/nx_js_poly_ic_gate.nx
about
nx_js_poly_ic_gate.nx -- P4 POLYMORPHIC inline caches: prove (A) a K-way IC gives IDENTICAL results to
a 1-way (monomorphic) IC and the tree-walker, and (B) it MEASURABLY wins on a POLYMORPHIC site -- a loop
over objects of TWO shapes at one GETPROP site. A 1-way IC thrashes (each read alternates shape -> miss
-> linear obj_find scan); a 4-way IC caches both shapes -> hits. Control: a MONOMORPHIC (single-shape)
site where 1-way == K-way (poly must not regress the common case). Forces the VM path (js_jit_disable)
so the interpreter's poly IC is what's measured. expect_exit: 0 license_tier: ORIGINAL
dependencies 1 imports · 0 importers
imports: nx_js_vm.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 9 | func pg_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } |
| 10 | func pg_n(v: i64) -> i64 |
| 25 | func pt(src: *u8, ways: i64, expp: i64, okbox: *i64) -> i64 |
| 46 | func pchk(src: *u8, label: *u8, expp: i64, pp: *i64, tp: *i64) -> i64 |
| 78 | func main(argc: i64, argv: *i64) -> i64 |