Index: src/heap/mark-compact.h |
diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h |
index 3680dcf1c6a5e8b5b498593b334a542a6373a47a..ddb993f5a2f676491e732da2a1a39cae26c48b59 100644 |
--- a/src/heap/mark-compact.h |
+++ b/src/heap/mark-compact.h |
@@ -603,7 +603,11 @@ class MarkCompactCollector { |
// to other evacuation candidates thus we have to |
// rescan the page after evacuation to discover and update all |
// pointers to evacuated objects. |
- page->SetFlag(Page::RESCAN_ON_EVACUATION); |
+ if (page->owner()->identity() == OLD_DATA_SPACE) { |
+ evacuation_candidates_.RemoveElement(page); |
+ } else { |
+ page->SetFlag(Page::RESCAN_ON_EVACUATION); |
+ } |
} |
void RecordRelocSlot(RelocInfo* rinfo, Object* target); |
@@ -903,7 +907,8 @@ class MarkCompactCollector { |
List<Page*> evacuation_candidates_; |
List<Code*> invalidated_code_; |
- SmartPointer<FreeList> free_list_old_space_; |
+ SmartPointer<FreeList> free_list_old_data_space_; |
+ SmartPointer<FreeList> free_list_old_pointer_space_; |
friend class Heap; |
}; |