Index: src/mark-compact.cc |
diff --git a/src/mark-compact.cc b/src/mark-compact.cc |
index 2e276d1a474ac313986d1da029aa658c9bf8b479..595d6ee3ce09ddf35ae26cd6a7f7444e78c48802 100644 |
--- a/src/mark-compact.cc |
+++ b/src/mark-compact.cc |
@@ -3267,12 +3267,6 @@ static int SweepPrecisely(PagedSpace* space, |
start_time = base::OS::TimeCurrentMillis(); |
} |
- if (parallelism == MarkCompactCollector::SWEEP_IN_PARALLEL) { |
- p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE); |
- } else { |
- p->MarkSweptPrecisely(); |
- } |
- |
Address free_start = p->area_start(); |
ASSERT(reinterpret_cast<intptr_t>(free_start) % (32 * kPointerSize) == 0); |
int offsets[16]; |
@@ -3346,6 +3340,14 @@ static int SweepPrecisely(PagedSpace* space, |
if (FLAG_print_cumulative_gc_stat) { |
space->heap()->AddSweepingTime(base::OS::TimeCurrentMillis() - start_time); |
} |
+ |
+ if (parallelism == MarkCompactCollector::SWEEP_IN_PARALLEL) { |
+ // When concurrent sweeping is active, the page will be marked after |
+ // sweeping by the main thread. |
+ p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE); |
+ } else { |
+ p->MarkSweptPrecisely(); |
+ } |
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes)); |
} |
@@ -3999,14 +4001,6 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space, |
(mode == MarkCompactCollector::SWEEP_ON_MAIN_THREAD && |
free_list == NULL)); |
- // When parallel sweeping is active, the page will be marked after |
- // sweeping by the main thread. |
- if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) { |
- p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE); |
- } else { |
- p->MarkSweptConservatively(); |
- } |
- |
intptr_t freed_bytes = 0; |
intptr_t max_freed_bytes = 0; |
size_t size = 0; |
@@ -4027,6 +4021,13 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space, |
static_cast<int>(size)); |
max_freed_bytes = Max(freed_bytes, max_freed_bytes); |
ASSERT_EQ(0, p->LiveBytes()); |
+ if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) { |
+ // When concurrent sweeping is active, the page will be marked after |
+ // sweeping by the main thread. |
+ p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE); |
+ } else { |
+ p->MarkSweptConservatively(); |
+ } |
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes)); |
} |
@@ -4084,6 +4085,13 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space, |
} |
p->ResetLiveBytes(); |
+ if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) { |
+ // When concurrent sweeping is active, the page will be marked after |
+ // sweeping by the main thread. |
+ p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE); |
+ } else { |
+ p->MarkSweptConservatively(); |
+ } |
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes)); |
} |