xo-object2 stack: RAllocator.assign_barrier() works.

use for DList::assign_head(), DArray::assign_at().
This commit is contained in:
Roland Conybeare 2026-05-01 20:14:26 -04:00
commit 8ec0da0248
3 changed files with 15 additions and 11 deletions

View file

@ -5,11 +5,7 @@
#pragma once
#include "alloc/AAllocator.hpp"
#include "alloc/IAllocator_Any.hpp"
#include "alloc/IAllocator_Xfer.hpp"
#include "alloc/RAllocator.hpp"
#include "Allocator_basic.hpp"
#include "alloc/RAllocator_aux.hpp"
/* end Allocator.hpp */

View file

@ -10,6 +10,4 @@
#include "alloc/IAllocator_Xfer.hpp"
#include "alloc/RAllocator.hpp"
//#include "alloc/RAllocator_aux.hpp"
/* end Allocator_basic.hpp */

View file

@ -3,7 +3,7 @@
* Out-of-line definitions for RAllocator template methods
* that depend on RGCObject (avoiding #include cycle in RAllocator.hpp)
*
* Would aspire to Include via user_hpp_includes in Allocator.json5,
* Would aspire to include via user_hpp_includes in Allocator.json5,
* if/when that exists
*
* @author Roland Conybeare
@ -17,15 +17,25 @@
namespace xo {
namespace mm {
/** NOTE:
* this definition is incorporated into [Allocator.hpp],
* while consciously omitted from [Allocator_basic.hpp].
*
* Some .hpp files in {xo-alloc2/, xo-gc/} can
* only include [Allocator_basic.hpp].
*
* Translation units that want to invoke
* barrier_assign() must #include Allocator.hpp
**/
template <typename Object>
void
RAllocator<Object>::barrier_assign(void * parent,
obj<AGCObject> * p_lhs,
obj<AGCObject> rhs) noexcept
{
(void)parent;
(void)p_lhs;
(void)rhs;
this->barrier_assign_aux(parent,
p_lhs->iface(), p_lhs->opaque_data_addr(),
rhs.iface(), rhs.opaque_data());
}
} /*namespace mm*/