xo-interpreter2 stack: + reason arg to visit_gco_children()

Helps streamline DX1Collector in xo-gc/.
Want both forward and verify entry points for the same
representation.
This commit is contained in:
Roland Conybeare 2026-04-10 01:10:03 -04:00
commit d14f119a37
102 changed files with 258 additions and 167 deletions

View file

@ -15,12 +15,14 @@ namespace xo {
struct ReaderResult {
using ACollector = xo::mm::ACollector;
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
using VisitReason = xo::mm::VisitReason;
using span_type = xo::mm::span<const char>;
bool is_tk_error() const { return tk_error_.is_error(); }
/** forward gc-aware pointers (called during gc cycle) **/
void visit_gco_children(obj<AGCObjectVisitor> gc) noexcept;
void visit_gco_children(VisitReason reason,
obj<AGCObjectVisitor> gc) noexcept;
/** schematika expression parsed from input **/
obj<AExpression> expr_;
@ -43,6 +45,7 @@ namespace xo {
public:
using ACollector = xo::mm::ACollector;
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
using VisitReason = xo::mm::VisitReason;
using AAllocator = xo::mm::AAllocator;
using MemorySizeVisitor = xo::mm::MemorySizeVisitor;
using span_type = xo::mm::span<const char>;
@ -110,7 +113,8 @@ namespace xo {
void reset_to_idle_toplevel();
/** update gc-aware child pointers **/
void visit_gco_children(obj<AGCObjectVisitor> gc) noexcept;
void visit_gco_children(VisitReason reason,
obj<AGCObjectVisitor> gc) noexcept;
private:
/** tokenizer converts a stream of chars