summaryrefslogtreecommitdiff
path: root/rts/Capability.h
diff options
context:
space:
mode:
Diffstat (limited to 'rts/Capability.h')
-rw-r--r--rts/Capability.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/rts/Capability.h b/rts/Capability.h
index ba0695c8ee..77132e318e 100644
--- a/rts/Capability.h
+++ b/rts/Capability.h
@@ -65,10 +65,12 @@ struct Capability_ {
Task *suspended_ccalling_tasks;
// One mutable list per generation, so we don't need to take any
- // locks when updating an old-generation thunk. These
- // mini-mut-lists are moved onto the respective gen->mut_list at
- // each GC.
+ // locks when updating an old-generation thunk. This also lets us
+ // keep track of which closures this CPU has been mutating, so we
+ // can traverse them using the right thread during GC and avoid
+ // unnecessarily moving the data from one cache to another.
bdescr **mut_lists;
+ bdescr **saved_mut_lists; // tmp use during GC
// Context switch flag. We used to have one global flag, now one
// per capability. Locks required : none (conflicts are harmless)