From 14bcd9dec63d30c6402bd856c6efe2b9d0bd0926 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 16 Mar 2026 14:09:03 -0500 Subject: [PATCH] xo-interpreter2 stack: use RuntimeContext to streamline setup --- src/reader2/ParserStateMachine.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/reader2/ParserStateMachine.cpp b/src/reader2/ParserStateMachine.cpp index 6ab2097b..16871d22 100644 --- a/src/reader2/ParserStateMachine.cpp +++ b/src/reader2/ParserStateMachine.cpp @@ -9,6 +9,7 @@ #include "ToplevelSeqSsm.hpp" #include "DefineSsm.hpp" #include +#include #include #include #include @@ -26,6 +27,7 @@ namespace xo { using xo::print::APrintable; using xo::reflect::TypeDescr; using xo::facet::FacetRegistry; + using xo::facet::with_facet; namespace scm { namespace { @@ -46,7 +48,9 @@ namespace xo { DGlobalEnv * env = DGlobalEnv::_make(mm, global_symtab); - InstallSink sink = ([env, mm, &stringtable, &log] + DSimpleRcx rcx(mm, &stringtable); + + InstallSink sink = ([env, rcx, &log] (std::string_view name, TypeDescr fn_td, obj pm, @@ -57,11 +61,11 @@ namespace xo { obj pm_gco = pm.to_facet(); const DUniqueString * sym - = stringtable.intern(name); + = rcx.stringtable()->intern(name); log && log("upsert", xtag("sym", std::string_view(*sym))); - env->_upsert_value(mm, + env->_upsert_value(rcx.allocator(), sym, fn_td, pm_gco); @@ -70,8 +74,7 @@ namespace xo { }); PrimitiveRegistry::instance() - .install_primitives(mm, - &stringtable, + .install_primitives(with_facet::mkobj(&rcx), sink, pm_install_flags);