diff --git a/include/xo/gc/detail/ICollector_DX1Collector.hpp b/include/xo/gc/detail/ICollector_DX1Collector.hpp index 1ae5fac..6f203e7 100644 --- a/include/xo/gc/detail/ICollector_DX1Collector.hpp +++ b/include/xo/gc/detail/ICollector_DX1Collector.hpp @@ -107,6 +107,10 @@ Return false if installation fails (e.g. memory exhausted) **/ Require: gc not in progress **/ static void assign_member(DX1Collector & self, void * parent, obj * p_lhs, obj & rhs); + /** allocate copy of source object at address @p src. +Source must be owned by this collector. +Increments object age **/ + static void * alloc_copy(DX1Collector & self, std::byte * src); /** evacuate @p *lhs, that refers to state with interface @p lhs_iface, to collector @p d's to-space. Replace *lhs_data with forwarding pointer diff --git a/src/gc/facet/ICollector_DX1Collector.cpp b/src/gc/facet/ICollector_DX1Collector.cpp index 33a28aa..261deaa 100644 --- a/src/gc/facet/ICollector_DX1Collector.cpp +++ b/src/gc/facet/ICollector_DX1Collector.cpp @@ -95,6 +95,11 @@ namespace xo { self.assign_member(parent, p_lhs, rhs); } auto + ICollector_DX1Collector::alloc_copy(DX1Collector & self, std::byte * src) -> void * + { + return self.alloc_copy(src); + } + auto ICollector_DX1Collector::forward_inplace(DX1Collector & self, AGCObject * lhs_iface, void ** lhs_data) -> void { self.forward_inplace(lhs_iface, lhs_data);