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

6635 B142 linesdepth 8pulls 24 transitivereach 0 importersview sourcekind gate/prooftopic js
docsdependenciesstructsconstsfunctions

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

nx_js_vm.nx nx_js_poly_ic_gate.nx

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

main pg_w js_jit_disable pchk bsl js_ic_poly_ways compile_run cr_core jp_parse_source js_lex js_skip_trivia js_lex_one jp_parse_program jp_tok_kind jp_cur jp_err jp_parse_stmt jp_child_commit jp_new_node jp_pst ev_set c_scope_push c_program c_predecl jp_nkind jp_na jp_nb jp_child_at c_newslot ev_tok_start ev_tok_len c_predecl ↻ jp_nextra c_rootslot jp_nc ev_for_body ev_try_finally jp_nb ↻ jp_child_at ↻ jp_nkind ↻

structs

none

consts

none

functions

9func 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 }
called by 2: pchkmain
10func pg_n(v: i64) -> i64
called by 2: pchkmain
25func pt(src: *u8, ways: i64, expp: i64, okbox: *i64) -> i64
46func pchk(src: *u8, label: *u8, expp: i64, pp: *i64, tp: *i64) -> i64
78func main(argc: i64, argv: *i64) -> i64