Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index e1e1af4b054d4e9eef6a8fe7d03c346675d166ed..e810649af8ef8e9884e8346874befc6761a05c8c 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -335,32 +335,20 @@ class YoungGenerationEvacuationVerifier : public EvacuationVerifier { |
// MarkCompactCollectorBase, MinorMarkCompactCollector, MarkCompactCollector |
// ============================================================================= |
-int MarkCompactCollectorBase::NumberOfParallelCompactionTasks( |
- int pages, intptr_t live_bytes) { |
+int MarkCompactCollectorBase::NumberOfParallelCompactionTasks(int pages) { |
if (!FLAG_parallel_compaction) return 1; |
- // Compute the number of needed tasks based on a target compaction time, the |
- // profiled compaction speed and marked live memory. |
- // |
- // The number of parallel compaction tasks is limited by: |
- // - #evacuation pages |
- // - #cores |
- const double kTargetCompactionTimeInMs = .5; |
- |
- double compaction_speed = |
- heap()->tracer()->CompactionSpeedInBytesPerMillisecond(); |
+ const int available_cores = Max( |
+ 1, static_cast<int>( |
+ V8::GetCurrentPlatform()->NumberOfAvailableBackgroundThreads())); |
+ return Min(available_cores, pages); |
+} |
+int MarkCompactCollectorBase::NumberOfPointerUpdateTasks(int pages) { |
+ if (!FLAG_parallel_pointer_update) return 1; |
const int available_cores = Max( |
1, static_cast<int>( |
V8::GetCurrentPlatform()->NumberOfAvailableBackgroundThreads())); |
- int tasks; |
- if (compaction_speed > 0) { |
- tasks = 1 + static_cast<int>(live_bytes / compaction_speed / |
- kTargetCompactionTimeInMs); |
- } else { |
- tasks = pages; |
- } |
- const int tasks_capped_pages = Min(pages, tasks); |
- return Min(available_cores, tasks_capped_pages); |
+ return Min(available_cores, pages); |
} |
MarkCompactCollector::MarkCompactCollector(Heap* heap) |
@@ -3744,7 +3732,7 @@ void MarkCompactCollectorBase::CreateAndExecuteEvacuationTasks( |
ProfilingMigrationObserver profiling_observer(heap()); |
const int wanted_num_tasks = |
- NumberOfParallelCompactionTasks(job->NumberOfPages(), live_bytes); |
+ NumberOfParallelCompactionTasks(job->NumberOfPages()); |
Evacuator** evacuators = new Evacuator*[wanted_num_tasks]; |
for (int i = 0; i < wanted_num_tasks; i++) { |
evacuators[i] = new Evacuator(collector, record_visitor); |
@@ -4262,18 +4250,10 @@ class PointerUpdateJobTraits { |
} |
}; |
-int NumberOfPointerUpdateTasks(int pages) { |
- if (!FLAG_parallel_pointer_update) return 1; |
- const int available_cores = Max( |
- 1, static_cast<int>( |
- V8::GetCurrentPlatform()->NumberOfAvailableBackgroundThreads())); |
- const int kPagesPerTask = 4; |
- return Min(available_cores, (pages + kPagesPerTask - 1) / kPagesPerTask); |
-} |
- |
template <RememberedSetType type> |
-void UpdatePointersInParallel(Heap* heap, base::Semaphore* semaphore, |
- const MarkCompactCollectorBase* collector) { |
+void MarkCompactCollectorBase::UpdatePointersInParallel( |
+ Heap* heap, base::Semaphore* semaphore, |
+ const MarkCompactCollectorBase* collector) { |
PageParallelJob<PointerUpdateJobTraits<type> > job( |
heap, heap->isolate()->cancelable_task_manager(), semaphore); |
RememberedSet<type>::IterateMemoryChunks( |