diff --git a/include/xo/gc/DX1Collector.hpp b/include/xo/gc/DX1Collector.hpp index 6139dbb..9ffe5fe 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 6512f88..ce01500 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 d6d889f..9075f44 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 d4c609c..5dd9d3d 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 * {