- Jul 03, 2023
-
-
Alexis King authored
-
- Jun 30, 2023
-
-
Krzysztof Gogolewski authored
-
- Jun 29, 2023
-
-
Krzysztof Gogolewski authored
-
Teo Camarasu authored
* Remove calls to 'setNumCapabilities' in 'createBCOs' These calls exist to ensure that 'createBCOs' can benefit from parallelism. But this is not the right place to call `setNumCapabilities`. Furthermore the logic differs from that in the driver causing the capability count to be raised and lowered at each TH call if -j > -N. * Remove 'BCOOpts' No longer needed as it was only used to thread the job count down to `createBCOs` Resolves #23049
-
Krzysztof Gogolewski authored
-
- May 23, 2023
-
-
Ben Gamari authored
-
Ben Gamari authored
-
- May 21, 2023
-
-
Ben Gamari authored
-
Make sure that we keep track of the size of large and compact objects that have been moved onto the nonmoving heap. We keep track of their size and add it to the amount of live bytes in nonmoving segments to get the total size of the live nonmoving heap. Resolves #17574 (cherry picked from commit 20c6669f)
-
This test currently fails in the nonmoving way (cherry picked from commit a56141a6)
-
Ben Gamari authored
Previously we failed to account direct mutator allocations into the nonmoving heap against the mutator's allocation limit and `cap->total_allocated`. This only manifests during CAF evaluation (since we allocate the CAF's blackhole directly into the nonmoving heap). Fixes #23312. (cherry picked from commit b2cdb7da)
-
- May 18, 2023
-
-
Ben Gamari authored
(cherry picked from commit 581e58ac)
-
Ben Gamari authored
(cherry picked from commit ba73a807)
-
Ben Gamari authored
The number of distinct arguments passed to GarbageCollect was getting a bit out of hand. (cherry picked from commit f6f12a36)
-
Ben Gamari authored
Finalization order is different under the nonmoving collector. (cherry picked from commit a57f12b3)
-
Ben Gamari authored
(cherry picked from commit f1fd3ffb)
-
Ben Gamari authored
(cherry picked from commit 8f374139)
-
Ben Gamari authored
(cherry picked from commit 487a8b58)
-
Ben Gamari authored
For using GHC bootstrapping to validate the non-moving GC. (cherry picked from commit f0cf384d)
-
Ben Gamari authored
(cherry picked from commit 4eb9d06b)
-
Ben Gamari authored
(cherry picked from commit 3ae0f368)
-
Ben Gamari authored
(cherry picked from commit e84f7167)
-
Ben Gamari authored
This makes it a bit easier to add instrumentation on this spinlock while debugging. (cherry picked from commit 6c6674ca)
-
Ben Gamari authored
When the nonmoving GC is in use we do not call `checkUnload` (since we don't unload code) and therefore should not call `prepareUnloadCheck`, lest we run into assertions. (cherry picked from commit 96a5aaed)
-
Ben Gamari authored
The nonmoving collector does not use `oldest_gen->blocks` to track its block list. However, it nevertheless updates `oldest_gen->n_blocks` to ensure that its size is accounted for by the storage manager. Consequently, we must not attempt to assert consistency between the two. (cherry picked from commit 4a7650d7)
-
Ben Gamari authored
Some references to Note [Deadlock detection under the non-moving collector] were missing an article. (cherry picked from commit 56e669c1)
-
Ben Gamari authored
The current segments are conceptually owned by the mutator, not the collector. Consequently, it was quite tricky to prove that the mutator would not race with the collect due to this shared state. It turns out that such races are possible: when resizing the current segment array we may concurrently try to take a heap census. This will attempt to walk the current segment array, causing a data race. Fix this by moving the current segment array into `Capability`, where it belongs. Fixes #22926. (cherry picked from commit b500867a)
-
Ben Gamari authored
(cherry picked from commit 78746906)
-
Ben Gamari authored
(cherry picked from commit ce22a3e2)
-
Ben Gamari authored
Here we significantly improve the bound on sync phase pause times by imposing a limit on the amount of work that we can perform during the sync. If we find that we have exceeded our marking budget then we allow the mutators to resume, return to concurrent marking, and try synchronizing again later. Fixes #22929. (cherry picked from commit 7c817c0a)
-
Ben Gamari authored
Previously we left various segment link pointers dangling. None of this wrong per se, but it did make it harder than necessary to debug. (cherry picked from commit 0a7eb0aa)
-
Ben Gamari authored
(cherry picked from commit 5d3232ba)
-
Ben Gamari authored
(cherry picked from commit 0baa8752)
-
Ben Gamari authored
(cherry picked from commit d4032690)
-
Ben Gamari authored
This fixes the selector optimisation, adding a few write barriers which are necessary for soundness. See the inline comments for details. Fixes #22930. (cherry picked from commit 1b069671)
-
Ben Gamari authored
Previously `storageAddCapabilities` (called by `setNumCapabilities`) would clobber the update remembered sets of existing capabilities when increasing the capability count. Fix this by only initializing the update remembered sets of the newly-created capabilities. Fixes #22927. (cherry picked from commit e4c3249f)
-
Ben Gamari authored
We must conservatively assume that new closures are reachable since we are not guaranteed to mark such blocks. (cherry picked from commit 2db92e01)
-
Ben Gamari authored
(cherry picked from commit 58e53bc4)
-
Ben Gamari authored
Previously we only updated the state of the segment at the head of each allocator's filled list. (cherry picked from commit 81d6cc55)
-
Ben Gamari authored
(cherry picked from commit 99d144d5)
-