| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index 8846f19bb0dbaeec80192bf9709b3e3f1029cf2c..1de8d255580478adc04496d3f71f3d28a0e6c0a2 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -208,7 +208,7 @@ static void VerifyEvacuation(PagedSpace* space) {
|
| // TODO(hpayer): Bring back VerifyEvacuation for parallel-concurrently
|
| // swept pages.
|
| if ((FLAG_concurrent_sweeping || FLAG_parallel_sweeping) &&
|
| - space->was_swept_conservatively()) return;
|
| + !space->is_iterable()) return;
|
| PageIterator it(space);
|
|
|
| while (it.has_next()) {
|
| @@ -647,8 +647,9 @@ bool MarkCompactCollector::AreSweeperThreadsActivated() {
|
| }
|
|
|
|
|
| -bool MarkCompactCollector::IsConcurrentSweepingInProgress() {
|
| - return sweeping_pending_;
|
| +bool MarkCompactCollector::IsConcurrentSweepingInProgress(PagedSpace* space) {
|
| + return (space == NULL || space->is_swept_concurrently()) &&
|
| + sweeping_pending_;
|
| }
|
|
|
|
|
| @@ -2044,7 +2045,7 @@ int MarkCompactCollector::DiscoverAndEvacuateBlackObjectsOnPage(
|
| static void DiscoverGreyObjectsInSpace(Heap* heap,
|
| MarkingDeque* marking_deque,
|
| PagedSpace* space) {
|
| - if (!space->was_swept_conservatively()) {
|
| + if (space->is_iterable()) {
|
| HeapObjectIterator it(space);
|
| DiscoverGreyObjectsWithIterator(heap, marking_deque, &it);
|
| } else {
|
| @@ -4078,9 +4079,8 @@ void MarkCompactCollector::SweepInParallel(PagedSpace* space) {
|
|
|
|
|
| void MarkCompactCollector::SweepSpace(PagedSpace* space, SweeperType sweeper) {
|
| - space->set_was_swept_conservatively(sweeper == CONSERVATIVE ||
|
| - sweeper == PARALLEL_CONSERVATIVE ||
|
| - sweeper == CONCURRENT_CONSERVATIVE);
|
| + space->set_is_iterable(sweeper == PRECISE);
|
| + space->set_is_swept_concurrently(sweeper == CONCURRENT_CONSERVATIVE);
|
| space->ClearStats();
|
|
|
| // We defensively initialize end_of_unswept_pages_ here with the first page
|
|
|