| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index c06bfd7f7323825d4c0f278c04e39260eaf3cc4f..54f1396d2c757c36aa9e5965919eca7fc5e5ed47 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -1713,23 +1713,6 @@ VisitorDispatchTable<MarkCompactMarkingVisitor::Callback>
|
| MarkCompactMarkingVisitor::non_count_table_;
|
|
|
|
|
| -class MarkingVisitor : public ObjectVisitor {
|
| - public:
|
| - explicit MarkingVisitor(Heap* heap) : heap_(heap) { }
|
| -
|
| - void VisitPointer(Object** p) {
|
| - MarkCompactMarkingVisitor::VisitPointer(heap_, p);
|
| - }
|
| -
|
| - void VisitPointers(Object** start, Object** end) {
|
| - MarkCompactMarkingVisitor::VisitPointers(heap_, start, end);
|
| - }
|
| -
|
| - private:
|
| - Heap* heap_;
|
| -};
|
| -
|
| -
|
| class CodeMarkingVisitor : public ThreadVisitor {
|
| public:
|
| explicit CodeMarkingVisitor(MarkCompactCollector* collector)
|
| @@ -2038,14 +2021,13 @@ bool MarkCompactCollector::IsUnmarkedHeapObjectWithHeap(Heap* heap,
|
| }
|
|
|
|
|
| -void MarkCompactCollector::MarkStringTable() {
|
| +void MarkCompactCollector::MarkStringTable(RootMarkingVisitor* visitor) {
|
| StringTable* string_table = heap()->string_table();
|
| // Mark the string table itself.
|
| MarkBit string_table_mark = Marking::MarkBitFrom(string_table);
|
| SetMark(string_table, string_table_mark);
|
| // Explicitly mark the prefix.
|
| - MarkingVisitor marker(heap());
|
| - string_table->IteratePrefix(&marker);
|
| + string_table->IteratePrefix(visitor);
|
| ProcessMarkingDeque();
|
| }
|
|
|
| @@ -2056,7 +2038,7 @@ void MarkCompactCollector::MarkRoots(RootMarkingVisitor* visitor) {
|
| heap()->IterateStrongRoots(visitor, VISIT_ONLY_STRONG);
|
|
|
| // Handle the string table specially.
|
| - MarkStringTable();
|
| + MarkStringTable(visitor);
|
|
|
| // There may be overflowed objects in the heap. Visit them now.
|
| while (marking_deque_.overflowed()) {
|
| @@ -3291,11 +3273,9 @@ void MarkCompactCollector::EvacuateNewSpaceAndCandidates() {
|
| bool code_slots_filtering_required;
|
| { GCTracer::Scope gc_scope(tracer_, GCTracer::Scope::MC_SWEEP_NEWSPACE);
|
| code_slots_filtering_required = MarkInvalidatedCode();
|
| -
|
| EvacuateNewSpace();
|
| }
|
|
|
| -
|
| { GCTracer::Scope gc_scope(tracer_, GCTracer::Scope::MC_EVACUATE_PAGES);
|
| EvacuatePages();
|
| }
|
|
|