diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc index e3040eea6b..1be7aff6c8 100644 --- a/src/incremental-marking.cc +++ b/src/incremental-marking.cc @@ -175,15 +175,6 @@ class IncrementalMarkingMarkingVisitor table_.Register(kVisitJSRegExp, &VisitJSRegExp); } - static inline void VisitEmbeddedPointer(Heap* heap, RelocInfo* rinfo) { - ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT); - Object* target = rinfo->target_object(); - if (target->NonFailureIsHeapObject()) { - heap->mark_compact_collector()->RecordRelocSlot(rinfo, target); - MarkObject(heap, target); - } - } - static inline void VisitCodeTarget(Heap* heap, RelocInfo* rinfo) { ASSERT(RelocInfo::IsCodeTarget(rinfo->rmode())); Code* target = Code::GetCodeFromTargetAddress(rinfo->target_address()); diff --git a/src/mark-compact.cc b/src/mark-compact.cc index 0ba8a24913..f9ea3e6faa 100644 --- a/src/mark-compact.cc +++ b/src/mark-compact.cc @@ -1078,15 +1078,6 @@ class MarkCompactMarkingVisitor heap->mark_compact_collector()->MarkObject(object, mark); } - static inline void VisitEmbeddedPointer(Heap* heap, RelocInfo* rinfo) { - ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT); - // TODO(mstarzinger): We do not short-circuit cons strings here, verify - // that there can be no such embedded pointers and add assertion here. - HeapObject* object = HeapObject::cast(rinfo->target_object()); - heap->mark_compact_collector()->RecordRelocSlot(rinfo, object); - MarkObject(heap, object); - } - static inline void VisitCodeTarget(Heap* heap, RelocInfo* rinfo) { ASSERT(RelocInfo::IsCodeTarget(rinfo->rmode())); Code* target = Code::GetCodeFromTargetAddress(rinfo->target_address()); diff --git a/src/objects-visiting-inl.h b/src/objects-visiting-inl.h index 80662cc745..61fcbec3ab 100644 --- a/src/objects-visiting-inl.h +++ b/src/objects-visiting-inl.h @@ -175,6 +175,17 @@ void StaticMarkingVisitor::VisitCodeEntry( } +template +void StaticMarkingVisitor::VisitEmbeddedPointer( + Heap* heap, RelocInfo* rinfo) { + ASSERT(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT); + ASSERT(!rinfo->target_object()->IsConsString()); + HeapObject* object = HeapObject::cast(rinfo->target_object()); + heap->mark_compact_collector()->RecordRelocSlot(rinfo, object); + StaticVisitor::MarkObject(heap, object); +} + + template void StaticMarkingVisitor::VisitGlobalPropertyCell( Heap* heap, RelocInfo* rinfo) { diff --git a/src/objects-visiting.h b/src/objects-visiting.h index fa81978f73..67b3af8d59 100644 --- a/src/objects-visiting.h +++ b/src/objects-visiting.h @@ -387,6 +387,7 @@ class StaticMarkingVisitor : public StaticVisitorBase { } static inline void VisitCodeEntry(Heap* heap, Address entry_address); + static inline void VisitEmbeddedPointer(Heap* heap, RelocInfo* rinfo); static inline void VisitGlobalPropertyCell(Heap* heap, RelocInfo* rinfo); static inline void VisitDebugTarget(Heap* heap, RelocInfo* rinfo); static inline void VisitExternalReference(RelocInfo* rinfo) { }