Make sure we at least sweep the loh even when we wanted to compact it#74626
Make sure we at least sweep the loh even when we wanted to compact it#74626cshung wants to merge 1 commit intodotnet:mainfrom
Conversation
|
Tagging subscribers to this area: @dotnet/gc Issue DetailsFor regions, it is possible for This is causing a problem for LOH compaction because we are expecting the LOH is already swept at this point or it will be compacted in the compact_phase, but neither will happen if This fix will make sure the LOH is swept if that happened. This is important to make sure the mark bits are reset for LOH.
|
|
we shouldn't be reverting the loh_compacted_p here because we would have already done the work of planning loh earlier which would be pointless to do. I think we should move the code that does I noticed this suspicious line -
this should be done for all heaps, not just heap0. I think when I wrote this code I meant just for the decay to be reduced on heap0 but used on all heaps. but that's just not worth it. we might as well make |
7639dbd to
137c82c
Compare
137c82c to
173a63d
Compare
173a63d to
5427f49
Compare
|
Move the deletion of the pin queue later as well |
5427f49 to
21c9835
Compare
For regions, it is possible for
special_sweep_pto override the behavior ofis_compaction_mandatorywhen all heaps are joining to make the decision whether to sweep or to compact.This is causing a problem for LOH compaction because we are expecting the LOH is already swept at this point or it will be compacted in the
compact_phase, but neither will happen ifloh_compacted_pistruebut got overridden byspecial_sweep_p.This fix will make sure the LOH is swept if that happened. This is important to make sure the mark bits are reset for LOH.