Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index f23918cbfe1f9c9da1e294839b634f93c17e6cf2..fa55649db2f6de4e9ca362b093d86356a68bbbc8 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -3282,10 +3282,18 @@ void MarkCompactCollector::EvacuatePagesInParallel() { |
// Set up compaction spaces. |
Evacuator** evacuators = new Evacuator*[num_tasks]; |
+ CompactionSpaceCollection** compaction_spaces_for_tasks = |
+ new CompactionSpaceCollection*[num_tasks]; |
for (int i = 0; i < num_tasks; i++) { |
evacuators[i] = new Evacuator(this, evacuation_candidates_, |
newspace_evacuation_candidates_); |
+ compaction_spaces_for_tasks[i] = evacuators[i]->compaction_spaces(); |
} |
+ heap()->old_space()->DivideUponCompactionSpaces(compaction_spaces_for_tasks, |
+ num_tasks); |
+ heap()->code_space()->DivideUponCompactionSpaces(compaction_spaces_for_tasks, |
+ num_tasks); |
+ delete[] compaction_spaces_for_tasks; |
// Kick off parallel tasks. |
StartParallelCompaction(evacuators, num_tasks); |