ensure write barrier in last step of vector-sort!
#784
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 old
$vector-copy!
could use$ptr-copy!
, which doesn't have an associated write barrier. As a result, using$vector-copy!
at the end ofvector-sort!
is incorrect.The new test is arranges for one half of a vector to have generation-0 objects and the other to have immediate objects; the two halves are already sorted, so they end up being swapped via a temporary vector and
$vector-copy!
. As a result, a collection afterward can fail to scan the half of the original vector that it should scan.The solution here is to rename the internal
$vector-copy!
function to$vector-fill-copy!
(by analogy to$stencil-vector-fill-set!
) and use keep using it for things likevector-copy
. But the new$vector-copy!
as used byvector-sort!
avoids$ptr-copy!
.