From 5f1a4e3fa11a3ca0d4afce1a54184ca81f5ffcd2 Mon Sep 17 00:00:00 2001 From: "hpayer@chromium.org" Date: Wed, 13 Feb 2013 11:02:39 +0000 Subject: [PATCH] Fix verify heap problem when parallel sweeping is enabled. BUG= Review URL: https://codereview.chromium.org/12260004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mark-compact.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mark-compact.cc b/src/mark-compact.cc index 2ca69b3..c37e54d 100644 --- a/src/mark-compact.cc +++ b/src/mark-compact.cc @@ -3722,7 +3722,8 @@ void MarkCompactCollector::SweepInParallel(PagedSpace* space, void MarkCompactCollector::SweepSpace(PagedSpace* space, SweeperType sweeper) { space->set_was_swept_conservatively(sweeper == CONSERVATIVE || - sweeper == LAZY_CONSERVATIVE); + sweeper == LAZY_CONSERVATIVE || + sweeper == PARALLEL_CONSERVATIVE); space->ClearStats(); PageIterator it(space); @@ -3841,9 +3842,9 @@ void MarkCompactCollector::SweepSpaces() { #endif SweeperType how_to_sweep = FLAG_lazy_sweeping ? LAZY_CONSERVATIVE : CONSERVATIVE; + if (AreSweeperThreadsActivated()) how_to_sweep = PARALLEL_CONSERVATIVE; if (FLAG_expose_gc) how_to_sweep = CONSERVATIVE; if (sweep_precisely_) how_to_sweep = PRECISE; - if (AreSweeperThreadsActivated()) how_to_sweep = PARALLEL_CONSERVATIVE; // Noncompacting collections simply sweep the spaces to clear the mark // bits and free the nonlive blocks (for old and map spaces). We sweep // the map space last because freeing non-live maps overwrites them and @@ -3860,7 +3861,7 @@ void MarkCompactCollector::SweepSpaces() { EvacuateNewSpaceAndCandidates(); - if (AreSweeperThreadsActivated()) { + if (how_to_sweep == PARALLEL_CONSERVATIVE) { // TODO(hpayer): The starting of the sweeper threads should be after // SweepSpace old data space. StartSweeperThreads(); -- 2.7.4