Files
kuraeowandClaude Opus 5.5 2ead33f60a Lifter: functions with an unresolved branch compile optimized, their dispatch in a copy
A function with an unresolved computed branch got a switch over every one of its instructions, and build_game.py
compiles such a file at -O0. In 1.4.3 that is six main functions over 2000 instructions, among them the game's
hottest (0x801547400: ~13 % of three game threads, an 8 MiB stack frame that __chkstk walked page by page on every
call) and 0x800634680 (~4 %).

Now such a function is emitted twice: its body as any other function (labels where branches and resolved tables
lead; registers in locals where regs.py can plan them), whose unresolved branches and table misses tail-call
fb_<entry> with c->pc set; and fb_<entry>, the old body with the all-instruction dispatch, entered at the dispatch,
in a file of its own (still -O0).

PC, unlimited from frame 3300: the game's frame work p50 10.7-13.7 -> 9.8 ms, p90 11.8-22 -> 10.5 ms; frame time
p95 17-22 -> 16.2-16.6 ms (the frame is still bound by recording). The picture matches.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-03 00:34:14 +03:00
..
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00
2026-10-25 12:26:18 +03:00