jam 0.0.1
A compacting generational garbage collector for C++26
Loading...
Searching...
No Matches
jam::tracer< T > Struct Template Referenceexport
Word heap | module jam

Forward a value hook or a cooperative allocation hook.Visit each live ptr by reference from the supplied value. Nested values share the enclosing allocation's pointer mask. Static trace(visit, ptr<T>) owns allocation claiming and may walk directly between records. More...

Static Public Member Functions

template<class Visitor>
static constexpr auto trace (Visitor &visit, T const &value) noexcept(noexcept(value.trace(visit))) -> decltype(value.trace(visit))
 Enumerate a value's parts and forward its member hook's result.
template<class Visitor>
requires requires { T::trace(visit, at); }
static constexpr decltype(auto) trace (Visitor &visit, ptr< T > const &at) noexcept
 Forward an unclaimed target to its cooperative static hook.
template<class Visitor>
requires std::remove_cvref_t<decltype(T::manifest)>::template
static constexpr void trace (Visitor &visit, T const &value) noexcept accepts< Visitor >
 Visit listed subobjects in manifest order without claiming their storage.
template<class Visitor>
requires std::remove_cvref_t<decltype(T::manifest)>::template
static void trace (Visitor &visit, ptr< T > const &at) noexcept accepts< Visitor >
 Claim records in a loop, queueing branches and walking one same-type edge locally.

Detailed Description

template<class T>
requires detail::has_trace<T>
struct jam::tracer< T >

Forward a value hook or a cooperative allocation hook.

Visit each live ptr by reference from the supplied value. Nested values share the enclosing allocation's pointer mask. Static trace(visit, ptr<T>) owns allocation claiming and may walk directly between records.

Generate field enumeration and cooperative allocation tracing from a manifest.

Definition at line 523 of file heap.ccm.


The documentation for this struct was generated from the following file: