Post-10d: JIT measurement infrastructure + compiler fixes
Measurement: - JIT hit/miss/skip counters in sx_runtime.ml (jit_try_call) - VM instruction counter enabled in run loop - jit-enable, vm-counters, vm-counters-reset epoch commands - Test runner --jit flag for opt-in JIT measurement - Results (132 tests): 5.8% VM hit, 56% evaluator self-calls, 38% anon Fixes: - Move compile-provide, compile-scope, compile-guard, compile-guard-clauses inside define-library begin block (were orphaned outside, causing "Undefined symbol" JIT failures) - Add deref primitive (signal unwrap with tracking) - Add deref compiler dispatch - Fix compile-expr for scope forms to handle non-keyword args CEK pruning assessment: evaluator self-calls (56%) can't be pruned — the CEK must evaluate itself. Real pruning requires self-hosting compiler (Phase 2+). The VM correctly handles user code that JIT-compiles. 2776/2776 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1399,6 +1399,27 @@ let rec dispatch env cmd =
|
||||
|
||||
(* ---- Debugging / introspection commands ---- *)
|
||||
|
||||
| List [Symbol "jit-enable"] ->
|
||||
register_jit_hook env;
|
||||
send_ok_value (String "jit enabled")
|
||||
|
||||
| List [Symbol "vm-counters"] ->
|
||||
let d = Hashtbl.create 8 in
|
||||
Hashtbl.replace d "vm_insns" (Number (float_of_int !(Sx_vm._vm_insn_count)));
|
||||
Hashtbl.replace d "vm_calls" (Number (float_of_int !(Sx_vm._vm_call_count)));
|
||||
Hashtbl.replace d "vm_cek_fallbacks" (Number (float_of_int !(Sx_vm._vm_cek_count)));
|
||||
Hashtbl.replace d "comp_jit" (Number (float_of_int !(Sx_vm._vm_comp_jit_count)));
|
||||
Hashtbl.replace d "comp_cek" (Number (float_of_int !(Sx_vm._vm_comp_cek_count)));
|
||||
Hashtbl.replace d "jit_hit" (Number (float_of_int !(Sx_runtime._jit_hit)));
|
||||
Hashtbl.replace d "jit_miss" (Number (float_of_int !(Sx_runtime._jit_miss)));
|
||||
Hashtbl.replace d "jit_skip" (Number (float_of_int !(Sx_runtime._jit_skip)));
|
||||
send_ok_value (Dict d)
|
||||
|
||||
| List [Symbol "vm-counters-reset"] ->
|
||||
Sx_vm.vm_reset_counters ();
|
||||
Sx_runtime.jit_reset_counters ();
|
||||
send_ok_value (String "reset")
|
||||
|
||||
| List [Symbol "vm-trace"; String src] ->
|
||||
(* Compile and trace-execute an SX expression, returning step-by-step
|
||||
trace entries with opcode names, stack snapshots, and frame depth. *)
|
||||
|
||||
Reference in New Issue
Block a user