| Index: src/heap/mark-compact.h
|
| diff --git a/src/heap/mark-compact.h b/src/heap/mark-compact.h
|
| index 25f09a7be1db1e286b5b7d20bea95819d50ebccd..1917ab58b1ec13f32d9fe87dffa8bcac29efdbc8 100644
|
| --- a/src/heap/mark-compact.h
|
| +++ b/src/heap/mark-compact.h
|
| @@ -649,15 +649,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
|
| @@ -674,10 +679,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
|
| @@ -685,9 +690,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.
|
|
|