Files
scriptc/packages
Malte Ubl bd08ab5787 Split emitted object releases into inline and out-of-line halves
Class and record releases were small enough to inline everywhere,
teardown calls included, and hierarchy releases always dispatched through
the vtable even when the object survived. The public release is now only
the fast path: a reference that is neither the last one nor immortal
(one compare) decrements and takes the possible-root step; NULL,
immortal and last references call the complete release, kept noinline.
In a hierarchy the program owns end to end, every member shares the rc
word and the header decision, so surviving releases no longer load the
vtable; only the last reference dispatches. Hierarchies rooted in a
runtime class keep their dispatching release.

tsc-ts self-check (median of 7): 3.57s -> 3.15s; binary +37 KB.
Variants measured and rejected: the whole hierarchy release noinline
(-2.6 MB but 9% slower than the split), handling the last reference
inline in the fast path (+0.4 to +1.1 MB and slower).
2026-10-09 11:59:26 -05:00
..
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00
2026-10-08 21:18:31 -05:00