Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index 1992c23925a061d7d334d12dc69b43dbc25b162e..a9ea707a9bff90a5fe4e56c9ca3f24a889a87a45 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -2161,6 +2161,21 @@ void MarkCompactCollector::UncommitMarkingDeque() { |
} |
+void MarkCompactCollector::OverApproximateWeakClosure() { |
+ GCTracer::Scope gc_scope(heap()->tracer(), |
+ GCTracer::Scope::MC_INCREMENTAL_WEAKCLOSURE); |
+ |
+ RootMarkingVisitor root_visitor(heap()); |
+ isolate()->global_handles()->IterateObjectGroups( |
+ &root_visitor, &IsUnmarkedHeapObjectWithHeap); |
+ MarkImplicitRefGroups(); |
+ |
+ // Remove object groups after marking phase. |
+ heap()->isolate()->global_handles()->RemoveObjectGroups(); |
+ heap()->isolate()->global_handles()->RemoveImplicitRefGroups(); |
+} |
+ |
+ |
void MarkCompactCollector::MarkLiveObjects() { |
GCTracer::Scope gc_scope(heap()->tracer(), GCTracer::Scope::MC_MARK); |
double start_time = 0.0; |