From 2aebb8e187fbb516c11631c9eec9737c6f1c6740 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 27 Mar 2026 22:33:21 -0400 Subject: [PATCH] xo-gc stack: genfacet for Collector + facet registry bugfix --- include/xo/gc/PolyForwarderUtil.hpp | 8 ++++++-- src/gc/DX1Collector.cpp | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/xo/gc/PolyForwarderUtil.hpp b/include/xo/gc/PolyForwarderUtil.hpp index 19f99c9..6d87159 100644 --- a/include/xo/gc/PolyForwarderUtil.hpp +++ b/include/xo/gc/PolyForwarderUtil.hpp @@ -51,8 +51,12 @@ namespace xo { * +-------+ **/ - auto gco = FacetRegistry::instance().variant(*p_ptr); - gc.forward_inplace(gco.iface(), (void **)&(p_ptr->data_)); + if (*p_ptr) { + auto gco = FacetRegistry::instance().variant(*p_ptr); + gc.forward_inplace(gco.iface(), (void **)&(p_ptr->data_)); + } else { + // nullptr is trivial to forward + } } }; diff --git a/src/gc/DX1Collector.cpp b/src/gc/DX1Collector.cpp index cd6ba5d..b3b9c8d 100644 --- a/src/gc/DX1Collector.cpp +++ b/src/gc/DX1Collector.cpp @@ -179,7 +179,7 @@ namespace xo { } } - for (uint32_t j = 1; j < config_.n_generation_; ++j) { + for (uint32_t j = 0; j + 1 < config_.n_generation_; ++j) { for (uint32_t i = 0; i < c_n_role + 1; ++i) { mlog_storage_[i][j].visit_pools(visitor); }