... | ... | @@ -63,7 +63,7 @@ The mutable list, sometimes referred to as the Remember Set is a list of pointer |
|
|
A mutable list per generation is maintained by each capability. When GC starts, these are swept into each generation’s mut_list member and are traversed later. When garbage collecting only till generation N, mut lists of generations \<=N are ignored (freed up) since we know that we are going to walk all the objects in those generations anyway.
|
|
|
|
|
|
|
|
|
Certain object like MUT_ARR_PTRS_CLEAN and TSO are always on the mut list. In the case of some objects, walking the mut list does not let us take the objects off the mut list. Such objects are added back to the mut list (done by recordMutableGen).
|
|
|
Certain object like MUT_ARR_PTRS_CLEAN are always on the mut list. In the case of some objects, walking the mut list does not let us take the objects off the mut list. Such objects are added back to the mut list (done by recordMutableGen).
|
|
|
|
|
|
|
|
|
Objects that can be “cleaned” are cleaned by the function scavenge_one(). By cleaning we mean that the object in question no longer points to a newer generation object. This can be done only by moving the newer generation objects up to the generation where the original object resides. Code that does this for an object like a THUNK would look like this -
|
... | ... | |