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

@ -60,6 +60,7 @@ namespace xo {
using Super = DSyntaxStateMachine<DLambdaSsm>;
using DLocalSymtab = xo::scm::DLocalSymtab;
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
using VisitReason = xo::mm::VisitReason;
using AAllocator = xo::mm::AAllocator;
using DArena = xo::mm::DArena;
using TypeDescr = xo::reflect::TypeDescr;
@ -189,7 +190,8 @@ namespace xo {
///@{
/** gc support: visit gc-aware child pointers **/
void visit_gco_children(obj<AGCObjectVisitor> gc) noexcept;
void visit_gco_children(VisitReason reason,
obj<AGCObjectVisitor> gc) noexcept;
///@}

View file

@ -44,6 +44,7 @@ namespace xo {
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor;
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason;
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
///@}
@ -77,7 +78,7 @@ namespace xo {
/** update state machine for nested quoted literal @p lit **/
static void on_quoted_literal(DLambdaSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
/** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/
static void visit_gco_children(DLambdaSsm & self, obj<AGCObjectVisitor> gc);
static void visit_gco_children(DLambdaSsm & self, VisitReason reason, obj<AGCObjectVisitor> gc);
///@}
};