xo-gc: in verify report memory ranges for gc space when debug on

This commit is contained in:
Roland Conybeare 2026-03-28 13:16:29 -04:00
commit 1fc73f4fe6
4 changed files with 22 additions and 1 deletions

View file

@ -31,9 +31,10 @@ namespace xo {
MemorySizeInfo() = default;
MemorySizeInfo(std::string_view name,
std::size_t u, std::size_t a, std::size_t c, std::size_t r,
const void * lo, const void * hi,
DetailArrayType * detail)
: resource_name_{name},
used_{u}, allocated_{a}, committed_{c}, reserved_{r}, detail_{detail}
used_{u}, allocated_{a}, committed_{c}, reserved_{r}, lo_{lo}, hi_{hi}, detail_{detail}
{}
static MemorySizeInfo sentinel() { return MemorySizeInfo(); }
@ -50,6 +51,10 @@ namespace xo {
* virtual memory addresses range obtained, whether or not committed
**/
std::size_t reserved_ = 0;
/** start address (optional) **/
const void * lo_ = 0;
/** end address (optional) **/
const void * hi_ = 0;
/** optional histogram with per-data-type counts **/
DetailArrayType * detail_ = nullptr;

View file

@ -221,6 +221,8 @@ namespace xo {
this->allocated(),
this->committed(),
this->reserved(),
lo_,
hi_,
p_detail));
}

View file

@ -87,6 +87,8 @@ namespace xo {
occupied_range_.size(),
mapped_range_.size(),
reserved_range_.size(),
reserved_range_.lo(),
reserved_range_.hi(),
nullptr /*detail*/));
pinned_spans_.visit_pools(visitor);

View file

@ -524,6 +524,18 @@ namespace xo {
//auto t0 = std::chrono::steady_clock::now();
log && log("memory");
auto visitor = [&log](const MemorySizeInfo & info) {
log && log(xtag("resource", info.resource_name_),
xtag("used", info.used_),
xtag("alloc", info.allocated_),
xtag("commit", info.committed_),
xtag("resv", info.reserved_),
xtag("lo", info.lo_),
xtag("hi", info.hi_));
};
this->visit_pools(visitor);
if (config_.sanitize_flag_) {
log && log("step 0a : verify");
this->verify_ok();