3#include <absl/container/btree_set.h>
39 const void*
const*
Start()
const {
43 const void*
const*
End()
const {
51 std::integral_constant<
decltype(&SetCompareFn), &SetCompareFn>;
58static_assert(std::is_trivially_destructible_v<ExternalRoot>);
80 using List = std::list<PreciseRoot>;
81 using Reference = List::iterator;
82 const Reference GetReference()
const {
return reference_in_list_; }
83 void UpdateReference(PreciseRoot::Reference
ref) { reference_in_list_ =
ref; }
85 const BroomValue* broom_value_;
86 Reference reference_in_list_;
97 : allocator_(allocator), gc_(
gc) {}
100 template <RootKind kind>
104 void VisitRegularRoot(
const void*
pointer);
105 void VisitStackRoot(
const void*
pointer);
ExternalRoot(UintPtr pointer, size_t size)
const void * Pointer() const
ExternalRoot(const void *pointer, size_t size)
static constexpr const RootKind kRootKind
std::integral_constant< decltype(&SetCompareFn), &SetCompareFn > SetCompare
UintPtr EndUintPtr() const
UintPtr StartUintPtr() const
const void *const * Start() const
const void *const * End() const
const BroomValue * Class() const
static constexpr const RootKind kRootKind
PreciseRoot(UintPtr pointer)
PreciseRoot(const void *pointer)
void IterateStackAndVisitRoots()
RootVisitor(Allocator *allocator, GarbageCollector *gc)
virtual void Visit(const void *pointer)
constexpr const int kPointerSize
constexpr T SafeCast(U v)
std::queue< T, broom::deque< T > > queue