aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/TODO.md b/TODO.md
index 54794f8..aa95897 100644
--- a/TODO.md
+++ b/TODO.md
@@ -153,7 +153,10 @@ and pushed there.
- 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).
-- prover gaps merged (75f9ddb + c8cdee8): len/cross-array/fixed-new/affine proofs; proven_p checks enclosing loops; explain_prover reordered so call-loops come last (lafacts stay cleared after a may-free body). make check 217/0. still open from the overnight queue: find_replace hardening, native freelist inline inside compiled regions, remaining TODO items.
+- prover gaps merged (75f9ddb + c8cdee8): len/cross-array/fixed-new/affine proofs; proven_p checks enclosing loops; explain_prover reordered so call-loops come last (lafacts stay cleared after a may-free body). make check 217/0.
+- 5:27 queue (before find_replace): (1) freeing on reassignment verified — `drop_reassign.zc`, `overwrite_frees.zc`, `free_then_reassign.zc` and related drop/gc ownership tests all ok (b9e2dc6 / dtor2 already landed). (2) trees/sieve drop-check cost on x86-64 jit, same slope method, current main vs 12b2e28 (pre-destructor binary, current trees.zc/sieve.zc sources). ms/iter min (median in parens): trees plain 12b2e28 3.02 (3.20) → now 3.12 (3.20); o3 new/free 4.09 (4.25) → 2.79 (2.85) (new_k, not drop); o3 arena 0.27 (0.27) → 0.13 (0.14); sieve plain 6.48 (6.59) → 6.53 (6.65); o3 checked 0.57 (0.59) → 0.56 (0.58); o3 raw 0.60 (0.63) → 0.59 (0.60). plain new/free within noise (~+3%): drop-check cost not the trees row. earlier overnight notes (post-rcall before/after alloc) were 2.88/4.13/0.09 then 2.78/2.71/0.15. (3) plain path still uses `new_k` / size-class freelists (`expr.zc` non-o3 typed new → `rt.new_k`; o3 matched in 4619f66). (4) o3 drop/GC rules verified — `drop_in_o3_rejected.zc`, `drop_ends_in_o3_rejected.zc`, `drop_free_in_o3_rejected.zc` plus `drop_gc_once`/`resurrect`/`cycle` ok.
+- find_replace hardening (2312310): arm64/llvm/interpreter `rmark`/`rdrop` now cover the two prologue words like the x86-64 jit, so `icon.replace_function`'s lit+jmp retires a compiled callee. new icon regressions `o3_repeated_replace`, `o3_failed_keeps_old`, `o3_direct_replace`; icon suite 51/0; `make check` 217/0.
+- still open: native freelist pop/push inline inside compiled o3 regions (every `new_k` still a normal call); remaining TODO items below. not claiming the overnight done-gate.
### how the work is organized
- start with `ONBOARD.md` (reading order and exact commands), then