-
Notifications
You must be signed in to change notification settings - Fork 986
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ensure write barrier in last step of
vector-sort!
(#784)
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 of `vector-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 like `vector-copy`. But the new `$vector-copy!` as used by `vector-sort!` avoids `$ptr-copy!`.
- Loading branch information
Showing
2 changed files
with
52 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters