#ifndef V8_HEAP_MARKING_INL_H_
#define V8_HEAP_MARKING_INL_H_
#include "src/base/build_config.h"
#include "src/base/macros.h"
#include "src/heap/heap-inl.h"
#include "src/heap/marking.h"
#include "src/heap/memory-chunk-layout.h"
#include "src/heap/memory-chunk-metadata.h"
#include "src/heap/spaces.h"
#include "src/objects/instance-type-inl.h"
namespace v8::internal {
template <>
inline void MarkingBitmap::SetBitsInCell<AccessMode::NON_ATOMIC>(
uint32_t cell_index, MarkBit::CellType mask) { … }
template <>
inline void MarkingBitmap::SetBitsInCell<AccessMode::ATOMIC>(
uint32_t cell_index, MarkBit::CellType mask) { … }
template <>
inline void MarkingBitmap::ClearBitsInCell<AccessMode::NON_ATOMIC>(
uint32_t cell_index, MarkBit::CellType mask) { … }
template <>
inline void MarkingBitmap::ClearBitsInCell<AccessMode::ATOMIC>(
uint32_t cell_index, MarkBit::CellType mask) { … }
template <>
inline void MarkingBitmap::ClearCellRangeRelaxed<AccessMode::ATOMIC>(
uint32_t start_cell_index, uint32_t end_cell_index) { … }
template <>
inline void MarkingBitmap::ClearCellRangeRelaxed<AccessMode::NON_ATOMIC>(
uint32_t start_cell_index, uint32_t end_cell_index) { … }
template <>
inline void MarkingBitmap::SetCellRangeRelaxed<AccessMode::ATOMIC>(
uint32_t start_cell_index, uint32_t end_cell_index) { … }
template <>
inline void MarkingBitmap::SetCellRangeRelaxed<AccessMode::NON_ATOMIC>(
uint32_t start_cell_index, uint32_t end_cell_index) { … }
template <AccessMode mode>
void MarkingBitmap::Clear() { … }
template <AccessMode mode>
inline void MarkingBitmap::SetRange(MarkBitIndex start_index,
MarkBitIndex end_index) { … }
template <AccessMode mode>
inline void MarkingBitmap::ClearRange(MarkBitIndex start_index,
MarkBitIndex end_index) { … }
MarkingBitmap* MarkingBitmap::FromAddress(Address address) { … }
MarkBit MarkingBitmap::MarkBitFromAddress(Address address) { … }
constexpr MarkingBitmap::MarkBitIndex MarkingBitmap::AddressToIndex(
Address address) { … }
constexpr MarkingBitmap::MarkBitIndex MarkingBitmap::LimitAddressToIndex(
Address address) { … }
inline Address MarkingBitmap::FindPreviousValidObject(const PageMetadata* page,
Address maybe_inner_ptr) { … }
MarkBit MarkBit::From(Address address) { … }
MarkBit MarkBit::From(Tagged<HeapObject> heap_object) { … }
LiveObjectRange::iterator::iterator() : … { … }
LiveObjectRange::iterator::iterator(const PageMetadata* page)
: … { … }
LiveObjectRange::iterator& LiveObjectRange::iterator::operator++() { … }
LiveObjectRange::iterator LiveObjectRange::iterator::operator++(int) { … }
void LiveObjectRange::iterator::AdvanceToNextValidObject() { … }
bool LiveObjectRange::iterator::AdvanceToNextMarkedObject() { … }
LiveObjectRange::iterator LiveObjectRange::begin() { … }
LiveObjectRange::iterator LiveObjectRange::end() { … }
std::optional<MarkingHelper::WorklistTarget> MarkingHelper::ShouldMarkObject(
Heap* heap, Tagged<HeapObject> object) { … }
MarkingHelper::LivenessMode MarkingHelper::GetLivenessMode(
Heap* heap, Tagged<HeapObject> object) { … }
template <typename MarkingState>
bool MarkingHelper::TryMarkAndPush(Heap* heap,
MarkingWorklists::Local* marking_worklist,
MarkingState* marking_state,
WorklistTarget target_worklist,
Tagged<HeapObject> object) { … }
}
#endif