xo-gc stack: refactor + streamline.

Retiring unused Collector typealiases.
Fix #include topology.
Fix/improve write barrier setup.
This commit is contained in:
Roland Conybeare 2026-05-02 13:49:29 -04:00
commit b1d2ae6f19
17 changed files with 130 additions and 94 deletions

View file

@ -85,6 +85,13 @@ namespace xo {
obj<AGCObject> * p_lhs,
obj<AGCObject> rhs) noexcept;
// Need _drepr suffix to distinguish from .barrier_assign()
// see [RAllocator_aux.hpp] for implementation
template <typename DRepr>
void barrier_assign_drepr(void * parent,
DRepr ** lhs_data,
DRepr * rhs_data);
static bool _valid;
};

View file

@ -38,6 +38,23 @@ namespace xo {
rhs.iface(), rhs.opaque_data());
}
template <typename Object>
template <typename DRepr>
void
RAllocator<Object>::barrier_assign_drepr(void * parent,
DRepr ** lhs_data,
DRepr * rhs_data)
{
// need to get AGCObject i/face that goes with DRepr.
obj<AGCObject,DRepr> rhs_gco(rhs_data);
this->barrier_assign_aux(parent,
nullptr /*not needed*/,
lhs_data,
rhs_gco.iface(),
rhs_data);
}
} /*namespace mm*/
} /*namespace xo*/