Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index b929d8567f5c7463a35873db6674d0080c4d5009..e7e9165fc7527153806f8f4a01a08f217fb1be94 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -1960,6 +1960,8 @@ void MarkCompactCollector::MarkRoots(RootMarkingVisitor* visitor) { |
MarkWeakObjectToCodeTable(); |
+ heap()->IterateEmbeddedMapCache(visitor); |
+ |
// There may be overflowed objects in the heap. Visit them now. |
while (marking_deque_.overflowed()) { |
RefillMarkingDeque(); |
@@ -2199,6 +2201,8 @@ void MarkCompactCollector::MarkLiveObjects() { |
ProcessTopOptimizedFrame(&root_visitor); |
+ ProcessMarkingDeque(); |
Hannes Payer (out of office)
2014/11/17 17:34:33
Why?
|
+ |
// The objects reachable from the roots are marked, yet unreachable |
// objects are unmarked. Mark objects reachable due to host |
// application specific logic or through Harmony weak maps. |
@@ -3533,6 +3537,10 @@ void MarkCompactCollector::EvacuateNewSpaceAndCandidates() { |
table->Rehash(heap_->isolate()->factory()->undefined_value()); |
} |
+ updating_visitor.VisitPointer(heap_->embedded_map_cache_address()); |
+ // No need to iterate the contents of the embedded map cache since |
Hannes Payer (out of office)
2014/11/17 17:34:33
Please move the comment before updating_visitor.Vi
|
+ // maps do not move. |
+ |
// Update pointers from external string table. |
heap_->UpdateReferencesInExternalStringTable( |
&UpdateReferenceInExternalStringTableEntry); |