xo-alloc2: refactor: + AllocInfo.cpp

This commit is contained in:
Roland Conybeare 2025-12-16 22:08:44 -05:00
commit 7cd7b6dfdb
3 changed files with 38 additions and 16 deletions

View file

@ -39,29 +39,15 @@ namespace xo {
bool is_valid() const { return (p_config_ != nullptr) && (p_header_ != nullptr); } bool is_valid() const { return (p_config_ != nullptr) && (p_header_ != nullptr); }
/** Guard bytes preceding allocation-header **/ /** Guard bytes preceding allocation-header **/
span_type guard_lo() const noexcept { span_type guard_lo() const noexcept;
if (!p_guard_lo_)
return span_type(nullptr, nullptr);
return span_type(p_guard_lo_,
p_guard_lo_ + p_config_->guard_z_);
}
/** Type sequence number in garbage collector **/ /** Type sequence number in garbage collector **/
std::uint32_t tseq() const noexcept { return p_config_->tseq(*p_header_); } std::uint32_t tseq() const noexcept { return p_config_->tseq(*p_header_); }
/** Allocation age in garbage collector **/ /** Allocation age in garbage collector **/
std::uint32_t age() const noexcept { return p_config_->age (*p_header_); } std::uint32_t age() const noexcept { return p_config_->age (*p_header_); }
/** Allocation size (including allocator-supplied padding) **/ /** Allocation size (including allocator-supplied padding) **/
size_type size() const noexcept { return p_config_->size(*p_header_); } size_type size() const noexcept { return p_config_->size(*p_header_); }
/** Guard bytes immediately following allocation **/ /** Guard bytes immediately following allocation **/
span_type guard_hi() const noexcept { span_type guard_hi() const noexcept;
if (!p_guard_hi_)
return span_type(nullptr, nullptr);
return span_type(p_guard_hi_,
p_guard_hi_ + p_config_->guard_z_);
}
const AllocHeaderConfig * p_config_ = nullptr; const AllocHeaderConfig * p_config_ = nullptr;
const byte * p_guard_lo_ = nullptr; const byte * p_guard_lo_ = nullptr;

View file

@ -0,0 +1,34 @@
/** @file AllocInfo.cpp
*
* @author Roland Conybeare, Dec 2025
**/
#include "alloc/AllocInfo.hpp"
namespace xo {
namespace mm {
auto
AllocInfo::guard_lo() const noexcept -> span_type
{
if (!p_guard_lo_)
return span_type(nullptr, nullptr);
return span_type(p_guard_lo_,
p_guard_lo_ + p_config_->guard_z_);
}
auto
AllocInfo::guard_hi() const noexcept -> span_type
{
if (!p_guard_hi_)
return span_type(nullptr, nullptr);
return span_type(p_guard_hi_,
p_guard_hi_ + p_config_->guard_z_);
}
} /*namespace mm*/
} /*namespace xo*/
/* end AllocInfo.cpp */

View file

@ -3,6 +3,8 @@
set(SELF_LIB xo_alloc2) set(SELF_LIB xo_alloc2)
set(SELF_SRCS set(SELF_SRCS
AllocInfo.cpp
AAllocator.cpp AAllocator.cpp
DArena.cpp DArena.cpp
IAllocator_Any.cpp IAllocator_Any.cpp