@@ -18,13 +18,12 @@ Read-only subagent audits confirmed the major reports:
1818 without retiring the slot. ` m6_jit_recursive_call_unroll ` covers this, and
1919 ` t-vm-safepoint ` now asserts this recorder path does not perform a scoped
2020 handshake or scoped slot retirement; public ` jit.flush(1) ` still does.
21- - x64 interpreter table stores remain helper-heavy overall: ` TSETS ` goes
22- straight to ` vmeta_tsets ` , and ` TSETV ` /` TSETR ` array stores route through
23- ` lj_tab_storetv_forvm_array() ` plus barrier checks. The first narrow
24- exception is ` TSETB ` for stable current-generation array slots: it now emits
25- an inline ` lock; cmpxchg ` through DynASM's x86 frontend and falls back to the
26- helper for weak tables, moved/retiring arrays, CAS races, nil/metatable
27- decisions, and forwarding sentinels.
21+ - x64 interpreter table stores remain helper-heavy: ` TSETS ` goes straight to
22+ ` vmeta_tsets ` , and ` TSETV ` /` TSETB ` /` TSETR ` array stores route through
23+ ` lj_tab_storetv_forvm_array() ` plus barrier checks. A narrow ` TSETB `
24+ inline-CAS experiment was rolled back after a clean rebuild exposed a default
25+ ` luajit -e 'print(1)' ` crash; the remaining fast-path work must first prove
26+ the VM barrier/base/PC contract for direct inline stores.
2827- x64 ` BC_TNEW ` has no inline bump allocation. The current safe prerequisite is
2928 still exact object layout/bitmap/accounting/root-publication support; first
3029 slice should be empty-table only and fall back to the current helper when any
@@ -42,10 +41,10 @@ Follow-up order:
4241 keeps stock sweep/finalizer semantics while removing the global root-list
4342 cache line from normal allocations; bitmap-only sweep and zero-atomic bump
4443 allocation remain separate follow-up work.
45- 2 . Partially done: ` BC_TSETB ` has a guarded x64 inline CAS fast path for
46- stable current-generation array slots. Remaining work is ` TSETV ` / ` TSETR ` ,
47- stable hash slots, and any collectable-value fast barrier path; new-key,
48- metatable, weak, moved/retiring, and forwarded cases stay on helpers .
44+ 2 . Reintroduce guarded x64 interpreter store fast paths for existing stable
45+ array/hash slots only after the direct-store barrier bridge preserves the
46+ same ` lua_State ` base, saved-PC, weak-write, forwarding, and parent-barrier
47+ contracts as ` lj_tab_storetv_forvm_array() ` .
49483 . Restore JIT no-helper ASTORE/HSTORE for stable primitive-value stores before
5049 collectable-value barrier fast paths.
51504 . Add empty-table x64 ` BC_TNEW ` inline bump allocation behind strict arena,
0 commit comments