Index: src/heap/mark-compact.h |
diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h |
index 98ad6b6df53402a8ec1e06f30eccd6393f61291f..2b61ea575b5fa040b9d3201b0a84b613f425125b 100644 |
--- a/src/heap/mark-compact.h |
+++ b/src/heap/mark-compact.h |
@@ -656,15 +656,20 @@ class MarkCompactCollector { |
// heap object. |
static bool IsUnmarkedHeapObject(Object** p); |
- // Map transitions from a live map to a dead map must be killed. |
- // We replace them with a null descriptor, with the same key. |
+ // Clear non-live references in weak cells, transition and descriptor arrays, |
+ // and deoptimize dependent code of non-live maps. |
void ClearNonLiveReferences(); |
- void ClearNonLiveMapTransitions(Map* map); |
- void ClearMapTransitions(Map* map, Map* dead_transition); |
- bool ClearMapBackPointer(Map* map); |
- void MarkDependentCodeListForDeoptimization(DependentCode* list_head); |
- void TrimDescriptorArray(Map* map, DescriptorArray* descriptors, |
- int number_of_own_descriptors); |
+ void MarkDependentCodeForDeoptimization(DependentCode* list); |
+ // Find non-live targets of simple transitions in the given list. Clear |
+ // transitions to non-live targets and if needed trim descriptors arrays. |
+ void ClearSimpleMapTransitions(Object* non_live_map_list); |
+ void ClearSimpleMapTransition(Map* map, Map* dead_transition); |
+ // Compact every array in the global list of transition arrays and |
+ // trim the corresponding descriptor array if a transition target is non-live. |
+ void ClearFullMapTransitions(); |
+ bool CompactTransitionArray(Map* map, TransitionArray* transitions, |
+ DescriptorArray* descriptors); |
+ void TrimDescriptorArray(Map* map, DescriptorArray* descriptors); |
void TrimEnumCache(Map* map, DescriptorArray* descriptors); |
// Mark all values associated with reachable keys in weak collections |
@@ -681,10 +686,10 @@ class MarkCompactCollector { |
// collections when incremental marking is aborted. |
void AbortWeakCollections(); |
- void ProcessAndClearWeakCells(); |
+ void ClearWeakCells(Object** non_live_map_list, |
+ DependentCode** dependent_code_list); |
void AbortWeakCells(); |
- void ProcessAndClearTransitionArrays(); |
void AbortTransitionArrays(); |
// After all reachable objects have been marked, those entries within |
@@ -692,9 +697,6 @@ class MarkCompactCollector { |
// trimming or clearing out the entire optimized code map. |
void ProcessAndClearOptimizedCodeMaps(); |
- // Process non-live references in maps and optimized code. |
- void ProcessWeakReferences(); |
- |
// ----------------------------------------------------------------------- |
// Phase 2: Sweeping to clear mark bits and free non-live objects for |
// a non-compacting collection. |