xo-interpreter2 .. xo-arena. memory pool introspection

This commit is contained in:
Roland Conybeare 2026-02-03 01:05:36 -05:00
commit d243124ea8
6 changed files with 23 additions and 59 deletions

View file

@ -54,27 +54,14 @@ namespace xo {
return this->stack_->top();
}
std::size_t
ParserStateMachine::_n_store() const noexcept
void
ParserStateMachine::visit_pools(const MemorySizeVisitor & visitor) const
{
return stringtable_._n_store() + 1;
}
MemorySizeInfo
ParserStateMachine::_store_info(std::size_t i) const noexcept
{
size_t n0 = stringtable_._n_store();
if (i < n0)
return stringtable_._store_info(i);
if (i == n0)
return parser_alloc_._store_info();
stringtable_.visit_pools(visitor);
parser_alloc_.visit_pools(visitor);
// not counting expr_alloc_. We don't consider
// that to be owned by ParserStateMachine
return MemorySizeInfo::sentinel();
}
void

View file

@ -47,16 +47,10 @@ namespace xo {
return psm_.top_ssm();
}
std::size_t
SchematikaParser::_n_store() const noexcept
void
SchematikaParser::visit_pools(const MemorySizeVisitor & visitor) const
{
return psm_._n_store();
}
MemorySizeInfo
SchematikaParser::_store_info(std::size_t i) const noexcept
{
return psm_._store_info(i);
return psm_.visit_pools(visitor);
}
void

View file

@ -21,27 +21,11 @@ namespace xo {
{
}
std::size_t
SchematikaReader::_n_store() const noexcept
void
SchematikaReader::visit_pools(const MemorySizeVisitor & visitor) const
{
return tokenizer_._n_store() + parser_._n_store();
}
MemorySizeInfo
SchematikaReader::_store_info(std::size_t i) const noexcept
{
size_t n_tk = tokenizer_._n_store();
if (i < n_tk) {
return tokenizer_._store_info(i);
}
size_t n_pr = parser_._n_store();
if (i < n_tk + n_pr)
return parser_._store_info(i - n_tk);
return MemorySizeInfo::sentinel();
tokenizer_.visit_pools(visitor);
parser_.visit_pools(visitor);
}
bool