xo-gc stack: refactor + streamline.
Retiring unused Collector typealiases. Fix #include topology. Fix/improve write barrier setup.
This commit is contained in:
parent
3d6ad3709b
commit
8336f0a47a
6 changed files with 63 additions and 41 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue