From 0de80c6fc00f9abfa92df7d2fc8279fc73a3a49c Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 3 Apr 2026 18:33:09 -0400 Subject: [PATCH] xo-gc stack: + ACollector.shallow_copy() --- include/xo/gc/detail/ICollector_DX1Collector.hpp | 4 ++++ src/gc/facet/ICollector_DX1Collector.cpp | 5 +++++ 2 files changed, 9 insertions(+) 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);