Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index 9c481b09a9d326b4bd59fdbf79d431404008dc11..644637ddfa5b94d8b77a01d81cfa8e006c21f04b 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -304,6 +304,8 @@ void MarkCompactCollector::CollectGarbage() { |
heap_->set_encountered_weak_cells(Smi::FromInt(0)); |
+ isolate()->global_handles()->CollectPhantomCallbackData(); |
+ |
#ifdef VERIFY_HEAP |
if (FLAG_verify_heap) { |
VerifyMarking(heap_); |
@@ -2213,10 +2215,8 @@ void MarkCompactCollector::MarkLiveObjects() { |
&IsUnmarkedHeapObject); |
// Then we mark the objects and process the transitive closure. |
heap()->isolate()->global_handles()->IterateWeakRoots(&root_visitor); |
- while (marking_deque_.overflowed()) { |
- RefillMarkingDeque(); |
- EmptyMarkingDeque(); |
- } |
+ |
+ ProcessMarkingDeque(); |
jochen (gone - plz use gerrit)
2014/12/02 10:25:59
this is not needed, because the following call to
Erik Corry
2014/12/02 10:40:49
I think this is wrong, and it is needed.
Nothing
|
// Repeat host application specific and Harmony weak maps marking to |
// mark unmarked objects reachable from the weak roots. |