| Index: third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h b/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h
|
| deleted file mode 100644
|
| index 5394e53258a623e0165555ad65d61c936421ea00..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h
|
| +++ /dev/null
|
| @@ -1,124 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef MarkingVisitorImpl_h
|
| -#define MarkingVisitorImpl_h
|
| -
|
| -#include "platform/heap/Heap.h"
|
| -#include "platform/heap/ThreadState.h"
|
| -#include "platform/heap/Visitor.h"
|
| -#include "wtf/Allocator.h"
|
| -
|
| -namespace blink {
|
| -
|
| -template <typename Derived>
|
| -class MarkingVisitorImpl {
|
| - USING_FAST_MALLOC(MarkingVisitorImpl);
|
| -
|
| - protected:
|
| - inline void markHeader(HeapObjectHeader* header,
|
| - const void* objectPointer,
|
| - TraceCallback callback) {
|
| - ASSERT(header);
|
| - ASSERT(objectPointer);
|
| -
|
| - // If you hit this ASSERT, it means that there is a dangling pointer
|
| - // from a live thread heap to a dead thread heap. We must eliminate
|
| - // the dangling pointer.
|
| - // Release builds don't have the ASSERT, but it is OK because
|
| - // release builds will crash in the following header->isMarked()
|
| - // because all the entries of the orphaned arenas are zapped.
|
| - ASSERT(!pageFromObject(objectPointer)->orphaned());
|
| -
|
| - if (header->isMarked())
|
| - return;
|
| -
|
| - ASSERT(ThreadState::current()->isInGC());
|
| - DCHECK(toDerived()->getMarkingMode() != VisitorMarkingMode::WeakProcessing);
|
| -
|
| - // A GC should only mark the objects that belong in its heap.
|
| - DCHECK(&pageFromObject(objectPointer)->arena()->getThreadState()->heap() ==
|
| - &toDerived()->heap());
|
| -
|
| - header->mark();
|
| -
|
| - if (callback)
|
| - toDerived()->heap().pushTraceCallback(const_cast<void*>(objectPointer),
|
| - callback);
|
| - }
|
| -
|
| - inline void mark(const void* objectPointer, TraceCallback callback) {
|
| - if (!objectPointer)
|
| - return;
|
| - HeapObjectHeader* header = HeapObjectHeader::fromPayload(objectPointer);
|
| - markHeader(header, header->payload(), callback);
|
| - }
|
| -
|
| - inline void registerDelayedMarkNoTracing(const void* objectPointer) {
|
| - DCHECK(toDerived()->getMarkingMode() != VisitorMarkingMode::WeakProcessing);
|
| - toDerived()->heap().pushPostMarkingCallback(
|
| - const_cast<void*>(objectPointer), &markNoTracingCallback);
|
| - }
|
| -
|
| - inline void registerWeakMembers(const void* closure,
|
| - const void* objectPointer,
|
| - WeakCallback callback) {
|
| - DCHECK(toDerived()->getMarkingMode() != VisitorMarkingMode::WeakProcessing);
|
| - // We don't want to run weak processings when taking a snapshot.
|
| - if (toDerived()->getMarkingMode() == VisitorMarkingMode::SnapshotMarking)
|
| - return;
|
| - toDerived()->heap().pushThreadLocalWeakCallback(
|
| - const_cast<void*>(closure), const_cast<void*>(objectPointer), callback);
|
| - }
|
| -
|
| - inline void registerWeakTable(const void* closure,
|
| - EphemeronCallback iterationCallback,
|
| - EphemeronCallback iterationDoneCallback) {
|
| - DCHECK(toDerived()->getMarkingMode() != VisitorMarkingMode::WeakProcessing);
|
| - toDerived()->heap().registerWeakTable(
|
| - const_cast<void*>(closure), iterationCallback, iterationDoneCallback);
|
| - }
|
| -
|
| -#if DCHECK_IS_ON()
|
| - inline bool weakTableRegistered(const void* closure) {
|
| - return toDerived()->heap().weakTableRegistered(closure);
|
| - }
|
| -#endif
|
| -
|
| - inline bool ensureMarked(const void* objectPointer) {
|
| - if (!objectPointer)
|
| - return false;
|
| -
|
| - HeapObjectHeader* header = HeapObjectHeader::fromPayload(objectPointer);
|
| - if (header->isMarked())
|
| - return false;
|
| -#if DCHECK_IS_ON()
|
| - toDerived()->markNoTracing(objectPointer);
|
| -#else
|
| - // Inline what the above markNoTracing() call expands to,
|
| - // so as to make sure that we do get all the benefits (asserts excepted.)
|
| - header->mark();
|
| -#endif
|
| - return true;
|
| - }
|
| -
|
| - inline void registerWeakCellWithCallback(void** cell, WeakCallback callback) {
|
| - DCHECK(toDerived()->getMarkingMode() != VisitorMarkingMode::WeakProcessing);
|
| - // We don't want to run weak processings when taking a snapshot.
|
| - if (toDerived()->getMarkingMode() == VisitorMarkingMode::SnapshotMarking)
|
| - return;
|
| - toDerived()->heap().pushGlobalWeakCallback(cell, callback);
|
| - }
|
| -
|
| - Derived* toDerived() { return static_cast<Derived*>(this); }
|
| -
|
| - private:
|
| - static void markNoTracingCallback(Visitor* visitor, void* object) {
|
| - visitor->markNoTracing(object);
|
| - }
|
| -};
|
| -
|
| -} // namespace blink
|
| -
|
| -#endif
|
|
|