#include "src/heap/cppgc/write-barrier.h"
#include "include/cppgc/heap-consistency.h"
#include "include/cppgc/internal/member-storage.h"
#include "include/cppgc/internal/pointer-policies.h"
#include "src/heap/cppgc/globals.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap.h"
#include "src/heap/cppgc/marker.h"
#include "src/heap/cppgc/marking-visitor.h"
#if defined(CPPGC_CAGED_HEAP)
#include "include/cppgc/internal/caged-heap-local-data.h"
#endif
namespace cppgc {
namespace internal {
AtomicEntryFlag WriteBarrier::write_barrier_enabled_;
namespace {
template <MarkerBase::WriteBarrierType type>
void ProcessMarkValue(HeapObjectHeader& header, MarkerBase* marker,
const void* value) { … }
}
void WriteBarrier::DijkstraMarkingBarrierSlowWithSentinelCheck(
const void* value) { … }
void WriteBarrier::DijkstraMarkingBarrierSlow(const void* value) { … }
void WriteBarrier::DijkstraMarkingBarrierRangeSlow(
HeapHandle& heap_handle, const void* first_element, size_t element_size,
size_t number_of_elements, TraceCallback trace_callback) { … }
void WriteBarrier::SteeleMarkingBarrierSlowWithSentinelCheck(
const void* value) { … }
void WriteBarrier::SteeleMarkingBarrierSlow(const void* value) { … }
#if defined(CPPGC_YOUNG_GENERATION)
void WriteBarrier::GenerationalBarrierSlow(const CagedHeapLocalData& local_data,
const AgeTable& age_table,
const void* slot,
uintptr_t value_offset,
HeapHandle* heap_handle) { … }
void WriteBarrier::GenerationalBarrierForUncompressedSlotSlow(
const CagedHeapLocalData& local_data, const AgeTable& age_table,
const void* slot, uintptr_t value_offset, HeapHandle* heap_handle) { … }
void WriteBarrier::GenerationalBarrierForSourceObjectSlow(
const CagedHeapLocalData& local_data, const void* inner_pointer,
HeapHandle* heap_handle) { … }
#endif
#if V8_ENABLE_CHECKS
void WriteBarrier::CheckParams(Type expected_type, const Params& params) { … }
#endif
#if defined(CPPGC_YOUNG_GENERATION)
YoungGenerationEnabler& YoungGenerationEnabler::Instance() { … }
void YoungGenerationEnabler::Enable() { … }
void YoungGenerationEnabler::Disable() { … }
bool YoungGenerationEnabler::IsEnabled() { … }
#endif
#ifdef CPPGC_SLIM_WRITE_BARRIER
template <WriteBarrierSlotType SlotType>
void WriteBarrier::CombinedWriteBarrierSlow(const void* slot) { … }
template V8_EXPORT_PRIVATE void WriteBarrier::CombinedWriteBarrierSlow<
WriteBarrierSlotType::kUncompressed>(const void* slot);
#if defined(CPPGC_POINTER_COMPRESSION)
template V8_EXPORT_PRIVATE void WriteBarrier::CombinedWriteBarrierSlow<
WriteBarrierSlotType::kCompressed>(const void* slot);
#endif
#endif
}
}