| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index 117da368e302da104763d5b2891c07432615cee3..65d2558274fe69034280ecb7d7530fb77db855fe 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -2793,10 +2793,9 @@ enum SkipListRebuildingMode {
|
| // over it. Map space is swept precisely, because it is not compacted.
|
| // Slots in live objects pointing into evacuation candidates are updated
|
| // if requested.
|
| -template<SkipListRebuildingMode skip_list_mode>
|
| +template<SweepingMode sweeping_mode, SkipListRebuildingMode skip_list_mode>
|
| static void SweepPrecisely(PagedSpace* space,
|
| Page* p,
|
| - SweepingMode mode,
|
| ObjectVisitor* v) {
|
| ASSERT(!p->IsEvacuationCandidate() && !p->WasSwept());
|
| ASSERT_EQ(skip_list_mode == REBUILD_SKIP_LIST,
|
| @@ -2841,7 +2840,7 @@ static void SweepPrecisely(PagedSpace* space,
|
| ASSERT(Marking::IsBlack(Marking::MarkBitFrom(live_object)));
|
| Map* map = live_object->map();
|
| int size = live_object->SizeFromMap(map);
|
| - if (mode == SWEEP_AND_VISIT_LIVE_OBJECTS) {
|
| + if (sweeping_mode == SWEEP_AND_VISIT_LIVE_OBJECTS) {
|
| live_object->IterateBody(map->instance_type(), size, v);
|
| }
|
| if ((skip_list_mode == REBUILD_SKIP_LIST) && skip_list != NULL) {
|
| @@ -3069,16 +3068,12 @@ void MarkCompactCollector::EvacuateNewSpaceAndCandidates() {
|
| SweepConservatively(space, p);
|
| break;
|
| case OLD_POINTER_SPACE:
|
| - SweepPrecisely<IGNORE_SKIP_LIST>(space,
|
| - p,
|
| - SWEEP_AND_VISIT_LIVE_OBJECTS,
|
| - &updating_visitor);
|
| + SweepPrecisely<SWEEP_AND_VISIT_LIVE_OBJECTS, IGNORE_SKIP_LIST>(
|
| + space, p, &updating_visitor);
|
| break;
|
| case CODE_SPACE:
|
| - SweepPrecisely<REBUILD_SKIP_LIST>(space,
|
| - p,
|
| - SWEEP_AND_VISIT_LIVE_OBJECTS,
|
| - &updating_visitor);
|
| + SweepPrecisely<SWEEP_AND_VISIT_LIVE_OBJECTS, REBUILD_SKIP_LIST>(
|
| + space, p, &updating_visitor);
|
| break;
|
| default:
|
| UNREACHABLE();
|
| @@ -3618,9 +3613,9 @@ void MarkCompactCollector::SweepSpace(PagedSpace* space,
|
| }
|
| case PRECISE: {
|
| if (space->identity() == CODE_SPACE) {
|
| - SweepPrecisely<REBUILD_SKIP_LIST>(space, p, SWEEP_ONLY, NULL);
|
| + SweepPrecisely<SWEEP_ONLY, REBUILD_SKIP_LIST>(space, p, NULL);
|
| } else {
|
| - SweepPrecisely<IGNORE_SKIP_LIST>(space, p, SWEEP_ONLY, NULL);
|
| + SweepPrecisely<SWEEP_ONLY, IGNORE_SKIP_LIST>(space, p, NULL);
|
| }
|
| break;
|
| }
|
|
|