![]() All allocation is now thread-local, which recovers a small bit of performance that was lost when adding thread-local allocation alongside global allocation. Parallelism uses thread contexts created by Chez Scheme threads (which correspond to Racket places and future-running threads), but it creates its own OS-level threads to perform collection. The number of collection-helper threads is limited to the number of active Chez Scheme threads. Only the main "sweep" pass runs in parallel --- that is, after roots have been traversed, and before weak references and finalization are handled --- but that's the bulk of collection work. Also, memory-accounting collections always run as single-threaded. |
||
---|---|---|
.. | ||
collects | ||
src | ||
.gitignore |