Third attempt at refactoring garbage collector #1184
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The condition for requesting collections is replaced by requesting a collection
if an allocation passes a tripwire. This tripwire is initially set at MIN_SPACE
and is recalculated after each garbage collation as max(MIN_SPACE, |live data|).
This avoids a potential issue with the old behavior where collections were
trigged by allocating in the last 1 MB of previously allocated semispace, even
if little garbage is being generated, or not collecting frequently enough if
a period of low garbage generation is followed by a period of high garbage
generation, affecting cache performance.
Furthermore, garbage collections are only trigged by allocations in youngspace.
Allocations in oldspace no longer trigger collections since oldspace collections
are handled during a youngspace collection.
Allocations in alwaysgcspace no longer trigger collections since collection
of this space is handled outside of the main garbage collector.
Some class arena member functions have the arena_ component removed as superfluous.