#ifndef V8_HEAP_CPPGC_MARKING_WORKLISTS_H_
#define V8_HEAP_CPPGC_MARKING_WORKLISTS_H_
#include <unordered_set>
#include "include/cppgc/visitor.h"
#include "src/base/platform/mutex.h"
#include "src/heap/base/worklist.h"
#include "src/heap/cppgc/heap-object-header.h"
namespace cppgc {
namespace internal {
class MarkingWorklists { … };
template <>
struct MarkingWorklists::ExternalMarkingWorklist::ConditionalMutexGuard<
AccessMode::kNonAtomic> { … };
template <>
struct MarkingWorklists::ExternalMarkingWorklist::ConditionalMutexGuard<
AccessMode::kAtomic> { … };
template <AccessMode mode>
void MarkingWorklists::ExternalMarkingWorklist::Push(HeapObjectHeader* object) { … }
template <AccessMode mode>
bool MarkingWorklists::ExternalMarkingWorklist::Contains(
HeapObjectHeader* object) { … }
template <AccessMode mode>
std::unordered_set<HeapObjectHeader*>
MarkingWorklists::ExternalMarkingWorklist::Extract() { … }
template <AccessMode mode>
void MarkingWorklists::ExternalMarkingWorklist::Clear() { … }
template <AccessMode mode>
bool MarkingWorklists::ExternalMarkingWorklist::IsEmpty() { … }
}
}
#endif