|
jam 0.0.1
A compacting generational garbage collector for C++26
|
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. | |
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.