aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-15 05:16:53 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-15 05:16:53 +0330
commitb86db60d8b2a50b179d9a3e69a0b4951e0c196f9 (patch)
treeae2ebf4de7af81f41a486a1a8d071bd2a4718140 /TODO.md
parentx86-64 o3: direct o3-to-o3 calls (rcall_x64 / rfinish_x64) (diff)
o3: use new_k (size-class free lists) like plain code
Constant-size typed new inside o3 now calls rt.new_k instead of always taking new_t/new_raw. new_k and recycle_leaf skip the o3 argument-fatten path the way free/recycle already do. trees o3 new/free on the x86-64 jit dropped from about 4.1 ms to about 2.7 ms per iter (matches plain).
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md3
1 files changed, 3 insertions, 0 deletions
diff --git a/TODO.md b/TODO.md
index 2795839..d59947f 100644
--- a/TODO.md
+++ b/TODO.md
@@ -150,6 +150,9 @@ and pushed there.
### overnight 2026-10-15 (local only, nothing pushed)
- post-destructor-merge triage: of the seven failures none came from destructors. zc0typed.zc used `.u` on a typed parameter (test fixed); self-hosted run-only images had stopped bounds-checking after a `//:lines` marker since 342538f (fixed: a marker ends `unbounded;`/`unchecked;`). `zcc static` and four lsp javascript-host tests failed only because `file` and `tsc` were missing on the box; both are installed now (apt, npm) and pass. with `tsc` present the lsp section takes about 26 minutes.
- the genome outgrew its 0x68000-word reservation (426181 words): `genmap` now reserves 0x70000 and the rt.zc map block is regenerated. the heap shrank by 32k words, so tests/programs/gc.zc reclaims 937 (threshold now 900).
+- x86-64 direct o3-to-o3 calls merged (`rcall_x64` / `rfinish_x64`, e765c3d). `make check` 214/0; icon regression 14/0; jit_x64 vs interp on o3* 17/17; o3_caller_replace and o3direct ok. post-rcall fib on x86-64 jit (ms/iter min): plain 0.54, o3 0.35 (o3 was 0.92 before direct calls).
+- trees/sieve baseline on x86-64 jit after rcall, before allocator change (ms/iter min): trees plain new/free 2.88, o3 new/free 4.13, o3 arena 0.09; sieve plain 6.96, o3 checked 0.64, o3 raw 0.61. (older llvm note was plain 9.2 / o3 12.0.)
+- allocator: o3 now uses `new_k` (size-class free lists) like plain code; `new_k`/`recycle_leaf` skip the o3 arg-fatten path. after: trees plain 2.78, o3 new/free 2.71, o3 arena 0.15. still open: emit the freelist pop/push as native code inside a compiled region (today every `new_k` still leaves via a normal call).
### how the work is organized
- start with `ONBOARD.md` (reading order and exact commands), then