Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index fa366eefb6b6a2e5003aa1efe550bd74c4a7ca4f..333ab86393fca81092ff9ef4005cb94dfe96a245 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -2160,6 +2160,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; |