[heap] MinorMC: Avoid clearing mark bits for promoted pages

We need to keep the new space mark bits as they are still required for
pointer updating.

TBR=hpayer@chromium.org
NOTRY=true

Bug: chromium:651354
Change-Id: Idc85f08a3b6525dd1ca932585f5e696a22b12808
Reviewed-on: https://chromium-review.googlesource.com/522609
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45690}
This commit is contained in:
Michael Lippautz 2017-06-02 16:44:13 +02:00 committed by Commit Bot
parent 9b5042575c
commit 70f428bd65

View File

@ -3764,9 +3764,9 @@ bool YoungGenerationEvacuator::RawEvacuatePage(Page* page,
ZAP_FREE_SPACE);
} else if (heap()->incremental_marking()->IsMarking()) {
// When incremental marking is on, we need to clear the mark bits of
// the full collector. Make the page completely iterable and clear also
// the young generation mark bits in the case.
collector_->MakeIterable(page, MarkingTreatmentMode::CLEAR,
// the full collector. We cannot yet discard the young generation mark
// bits as they are still relevant for pointers updating.
collector_->MakeIterable(page, MarkingTreatmentMode::KEEP,
IGNORE_FREE_SPACE);
}
break;
@ -3784,9 +3784,9 @@ bool YoungGenerationEvacuator::RawEvacuatePage(Page* page,
ZAP_FREE_SPACE);
} else if (heap()->incremental_marking()->IsMarking()) {
// When incremental marking is on, we need to clear the mark bits of
// the full collector. Make the page completely iterable and clear also
// the young generation mark bits in the case.
collector_->MakeIterable(page, MarkingTreatmentMode::CLEAR,
// the full collector. We cannot yet discard the young generation mark
// bits as they are still relevant for pointers updating.
collector_->MakeIterable(page, MarkingTreatmentMode::KEEP,
IGNORE_FREE_SPACE);
}
break;