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 8336f0a47a
6 changed files with 63 additions and 41 deletions

View file

@ -307,7 +307,9 @@ namespace xo {
// ----- mutation -----
/** Modify a gc-owned pointer @p *p_lhs, within allocation @p parent,
/** DEPRECATED. Prefer .barrier_assign_aux().
*
* Modify a gc-owned pointer @p *p_lhs, within allocation @p parent,
* to point to @p rhs.
*
* Motivation: need special handling for cross-generational pointers with

View file

@ -55,14 +55,22 @@ namespace xo {
void verify_ok() noexcept;
/** on behalf of gc-aware object store @p gc,
* change the value of a child pointer at @p p_lhs
* with parent object @p parent. p_lhs and parent must belong
* to the same allocation.
* change the value of a child pointer {@p lhs_iface, @p *lhs_data}
* with parent object @p parent, to point to {@p rhs_iface, @p rhs_data}
* p_lhs and parent must belong to the same allocation.
*
* @p lhs_iface can be nullptr, if parent holds ordinary pointer
* instead of fop (i.e. DRepr* instead of obj<AFacet,DRepr>).
*
* @p rhs_iface must be non-null, it's load-bearing for mlog entry
* snapshot member.
**/
void assign_member(GCObjectStore * gc,
void * parent,
obj<AGCObject> * p_lhs,
obj<AGCObject> rhs);
void assign_member_aux(GCObjectStore * gc,
void * parent,
AGCObject * lhs_iface,
void ** lhs_data,
AGCObject * rhs_iface,
void * rhs_data);
/** swap {to, from} roles
**/

View file

@ -104,6 +104,7 @@ Return false if installation fails (e.g. memory exhausted) **/
**/
static void request_gc(DX1Collector & self, Generation upto);
/** Assign pointer @p p_lhs to destination @p rhs, within parent allocation @p parent
DEPRECATED. Only used in MockCollector for gc unit test
Require: gc not in progress **/
static void assign_member(DX1Collector & self, void * parent, obj<AGCObject> * p_lhs, obj<AGCObject> & rhs);