From fd548d6816805b47c3347b660c02b3baa2019e37 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 6 Apr 2026 17:15:30 -0400 Subject: [PATCH] xo-gc stack: refactor: + alloc_info() method replicated form AAllocator facet --- include/xo/gc/DX1Collector.hpp | 2 +- include/xo/gc/detail/IGCObjectVisitor_DX1Collector.hpp | 3 +++ src/gc/DX1Collector.cpp | 4 ++-- src/gc/facet/IGCObjectVisitor_DX1Collector.cpp | 6 ++++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/xo/gc/DX1Collector.hpp b/include/xo/gc/DX1Collector.hpp index 6139dbb2..9ffe5fea 100644 --- a/include/xo/gc/DX1Collector.hpp +++ b/include/xo/gc/DX1Collector.hpp @@ -227,7 +227,7 @@ namespace xo { bool is_forwarding_header(header_type hdr) const noexcept; /** Retreive bookkeeping info for allocation at @p mem. **/ - AllocInfo alloc_info(value_type mem) const noexcept; + AllocInfo alloc_info(void * mem) const noexcept; /** true iff type with id @p tseq has known metadata * (i.e. has appeared in preceding call to install_type diff --git a/include/xo/gc/detail/IGCObjectVisitor_DX1Collector.hpp b/include/xo/gc/detail/IGCObjectVisitor_DX1Collector.hpp index 6512f882..ce01500b 100644 --- a/include/xo/gc/detail/IGCObjectVisitor_DX1Collector.hpp +++ b/include/xo/gc/detail/IGCObjectVisitor_DX1Collector.hpp @@ -45,6 +45,9 @@ namespace xo { /** @defgroup mm-gcobjectvisitor-dx1collector-methods **/ ///@{ // const methods + /** allocation metadata for gc-aware data at address @p gco. +@p gco must be the result of a call to collector's alloc() function **/ + static AllocInfo alloc_info(const DX1Collector & self, void * addr); // non-const methods /** allocate copy of source object at address @p src. diff --git a/src/gc/DX1Collector.cpp b/src/gc/DX1Collector.cpp index d6d889fa..9075f44c 100644 --- a/src/gc/DX1Collector.cpp +++ b/src/gc/DX1Collector.cpp @@ -350,8 +350,8 @@ namespace xo { } AllocInfo - DX1Collector::alloc_info(value_type mem) const noexcept { - return gco_store_.alloc_info(mem); + DX1Collector::alloc_info(void * mem) const noexcept { + return gco_store_.alloc_info((std::byte *)(mem)); } bool diff --git a/src/gc/facet/IGCObjectVisitor_DX1Collector.cpp b/src/gc/facet/IGCObjectVisitor_DX1Collector.cpp index d4c609c4..5dd9d3d6 100644 --- a/src/gc/facet/IGCObjectVisitor_DX1Collector.cpp +++ b/src/gc/facet/IGCObjectVisitor_DX1Collector.cpp @@ -15,6 +15,12 @@ namespace xo { namespace mm { + auto + IGCObjectVisitor_DX1Collector::alloc_info(const DX1Collector & self, void * addr) -> AllocInfo + { + return self.alloc_info(addr); + } + auto IGCObjectVisitor_DX1Collector::alloc_copy(DX1Collector & self, std::byte * src) -> void * {