Files
scriptc/packages/runtime/test
Chris Tate 8675002acd Free large cycle-collector work vectors after a pass
A collection pass copied every buffered candidate from the generation
root buffers into its candidate list, so it held two buffers of every
candidate, and each work vector kept its largest size for the rest of
the program.

A pass now takes the fullest root buffer as its candidate list and
appends the others; that generation gets the previous candidate buffer,
empty. The vectors a pass fills and leaves empty (pending, white,
promote, restore and cross-generation lists) record how many entries the
pass held at most. When a pass ends, any of them that holds more than
65536 entries is freed if the pass used less than a quarter of it, and so
is the candidate list's buffer when this pass's candidates filled less
than a quarter of it. Passes of a steady size keep reusing their
buffers; a spike in one pass no longer keeps its buffers for the rest of
the program.

When an older generation's buffer is the fullest, candidates are
visited, and a pass's garbage is freed, in a different order; the set
of objects a pass frees does not change.
2026-10-16 06:08:51 -05:00
..
2026-10-14 03:54:52 -05:00
2026-10-14 03:54:52 -05:00
2026-07-22 18:08:04 -05:00
2026-07-22 18:08:04 -05:00
2026-10-16 01:39:10 -05:00
2026-07-22 18:08:04 -05:00
2026-10-13 19:48:11 -05:00
2026-07-22 18:08:04 -05:00
2026-07-22 18:08:04 -05:00