Index: src/heap/scavenger-inl.h |
diff --git a/src/heap/scavenger-inl.h b/src/heap/scavenger-inl.h |
index 4cc215a83e3665c6d9119618c7f3e39957e274a0..9484f7ab00d3036b7243f2a0ad0ff180623db56f 100644 |
--- a/src/heap/scavenger-inl.h |
+++ b/src/heap/scavenger-inl.h |
@@ -37,6 +37,15 @@ void Scavenger::ScavengeObject(HeapObject** p, HeapObject* object) { |
return ScavengeObjectSlow(p, object); |
} |
+void Scavenger::ScavengeObjectSlow(HeapObject** p, HeapObject* object) { |
+ SLOW_DCHECK(object->GetIsolate()->heap()->InFromSpace(object)); |
+ MapWord first_word = object->map_word(); |
+ SLOW_DCHECK(!first_word.IsForwardingAddress()); |
+ Map* map = first_word.ToMap(); |
+ Scavenger* scavenger = map->GetHeap()->scavenge_collector_; |
+ scavenger->scavenging_visitors_table_.GetVisitor(map)(map, p, object); |
+} |
+ |
SlotCallbackResult Scavenger::CheckAndScavengeObject(Heap* heap, |
Address slot_address) { |
Object** slot = reinterpret_cast<Object**>(slot_address); |