Index: src/mark-compact-inl.h |
diff --git a/src/mark-compact-inl.h b/src/mark-compact-inl.h |
index c28e6e3e29d6507fab97ff0b2ba7da2eef4cc638..20f11a78a2e34f61ce5464217839b6f66b89094e 100644 |
--- a/src/mark-compact-inl.h |
+++ b/src/mark-compact-inl.h |
@@ -32,6 +32,7 @@ |
#include "memory.h" |
#include "mark-compact.h" |
+ |
namespace v8 { |
namespace internal { |
@@ -79,6 +80,22 @@ bool MarkCompactCollector::IsMarked(Object* obj) { |
} |
+void MarkCompactCollector::RecordSlot(Object** anchor_slot, |
+ Object** slot, |
+ Object* object) { |
+ Page* object_page = Page::FromAddress(reinterpret_cast<Address>(object)); |
+ if (object_page->IsEvacuationCandidate() && |
+ !ShouldSkipEvacuationSlotRecording(anchor_slot)) { |
+ if (!SlotsBuffer::AddTo(&slots_buffer_allocator_, |
+ object_page->slots_buffer_address(), |
+ slot, |
+ SlotsBuffer::FAIL_ON_OVERFLOW)) { |
+ EvictEvacuationCandidate(object_page); |
+ } |
+ } |
+} |
+ |
+ |
} } // namespace v8::internal |
#endif // V8_MARK_COMPACT_INL_H_ |