| Index: Source/platform/heap/Heap.cpp
|
| diff --git a/Source/platform/heap/Heap.cpp b/Source/platform/heap/Heap.cpp
|
| index fb1a833c8c2c7da6c11f3b5ee493babcfdd50e0c..78c95534b14855dae7fe892f1107ba567506fcbf 100644
|
| --- a/Source/platform/heap/Heap.cpp
|
| +++ b/Source/platform/heap/Heap.cpp
|
| @@ -452,21 +452,6 @@ private:
|
| };
|
|
|
| NO_SANITIZE_ADDRESS inline
|
| -bool HeapObjectHeader::isMarked() const
|
| -{
|
| - checkHeader();
|
| - return m_size & markBitMask;
|
| -}
|
| -
|
| -NO_SANITIZE_ADDRESS inline
|
| -void HeapObjectHeader::mark()
|
| -{
|
| - checkHeader();
|
| - ASSERT(!isMarked());
|
| - m_size = m_size | markBitMask;
|
| -}
|
| -
|
| -NO_SANITIZE_ADDRESS inline
|
| void HeapObjectHeader::unmark()
|
| {
|
| checkHeader();
|
| @@ -498,14 +483,6 @@ void HeapObjectHeader::zapMagic()
|
| }
|
| #endif
|
|
|
| -HeapObjectHeader* HeapObjectHeader::fromPayload(const void* payload)
|
| -{
|
| - Address addr = reinterpret_cast<Address>(const_cast<void*>(payload));
|
| - HeapObjectHeader* header =
|
| - reinterpret_cast<HeapObjectHeader*>(addr - sizeof(HeapObjectHeader));
|
| - return header;
|
| -}
|
| -
|
| void HeapObjectHeader::finalize(const GCInfo* gcInfo, Address object, size_t objectSize)
|
| {
|
| ASSERT(gcInfo);
|
| @@ -626,14 +603,6 @@ void LargeObject<HeapObjectHeader>::finalize()
|
| HeapObjectHeader::finalize(gcInfo(), payload(), payloadSize());
|
| }
|
|
|
| -GeneralHeapObjectHeader* GeneralHeapObjectHeader::fromPayload(const void* payload)
|
| -{
|
| - Address addr = reinterpret_cast<Address>(const_cast<void*>(payload));
|
| - GeneralHeapObjectHeader* header =
|
| - reinterpret_cast<GeneralHeapObjectHeader*>(addr - sizeof(GeneralHeapObjectHeader));
|
| - return header;
|
| -}
|
| -
|
| template<typename Header>
|
| ThreadHeap<Header>::ThreadHeap(ThreadState* state, int index)
|
| : m_currentAllocationPoint(0)
|
| @@ -1972,11 +1941,6 @@ static void markNoTracingCallback(Visitor* visitor, void* object)
|
| visitor->markNoTracing(object);
|
| }
|
|
|
| -enum MarkingMode {
|
| - GlobalMarking,
|
| - ThreadLocalMarking,
|
| -};
|
| -
|
| template<MarkingMode Mode>
|
| class MarkingVisitor final : public Visitor {
|
| public:
|
| @@ -1987,7 +1951,8 @@ public:
|
| #endif
|
|
|
| explicit MarkingVisitor(CallbackStack* markingStack)
|
| - : m_markingStack(markingStack)
|
| + : Visitor(Mode)
|
| + , m_markingStack(markingStack)
|
| {
|
| }
|
|
|
| @@ -2078,29 +2043,7 @@ public:
|
| return GeneralHeapObjectHeader::fromPayload(objectPointer)->isMarked();
|
| }
|
|
|
| - virtual bool ensureMarked(const void* objectPointer) override
|
| - {
|
| - if (!objectPointer)
|
| - return false;
|
| - if (Mode == ThreadLocalMarking && !objectInTerminatingThreadHeap(objectPointer))
|
| - return false;
|
| -#if ENABLE(ASSERT)
|
| - if (isMarked(objectPointer))
|
| - return false;
|
| -
|
| - markNoTracing(objectPointer);
|
| -#else
|
| - // Inline what the above markNoTracing() call expands to,
|
| - // so as to make sure that we do get all the benefits.
|
| - GeneralHeapObjectHeader* header =
|
| - GeneralHeapObjectHeader::fromPayload(objectPointer);
|
| - if (header->isMarked())
|
| - return false;
|
| - header->mark();
|
| -#endif
|
| - return true;
|
| - }
|
| -
|
| + /*
|
| #if ENABLE(ASSERT)
|
| #define DEFINE_ENSURE_MARKED_METHOD(Type) \
|
| virtual bool ensureMarked(const Type* objectPointer) override \
|
| @@ -2131,6 +2074,7 @@ public:
|
| return true; \
|
| }
|
| #endif
|
| +*/
|
|
|
| // This macro defines the necessary visitor methods for typed heaps
|
| #define DEFINE_VISITOR_METHODS(Type) \
|
| @@ -2145,8 +2089,7 @@ public:
|
| virtual bool isMarked(const Type* objectPointer) override \
|
| { \
|
| return HeapObjectHeader::fromPayload(objectPointer)->isMarked(); \
|
| - } \
|
| - DEFINE_ENSURE_MARKED_METHOD(Type)
|
| + }
|
|
|
| FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_METHODS)
|
| #undef DEFINE_VISITOR_METHODS
|
| @@ -2247,16 +2190,6 @@ public:
|
| }
|
| #endif
|
|
|
| - static inline bool objectInTerminatingThreadHeap(const void* objectPointer)
|
| - {
|
| - BaseHeapPage* page = pageFromObject(objectPointer);
|
| - ASSERT(!page->orphaned());
|
| - // When doing a thread local GC, the marker checks if
|
| - // the object resides in another thread's heap. The
|
| - // object should not be traced, if it does.
|
| - return page->terminating();
|
| - }
|
| -
|
| protected:
|
| virtual void registerWeakCell(void** cell, WeakPointerCallback callback) override
|
| {
|
|
|