From 9f8d61fe9070a6782984c36a35728e82e35a479f Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 16 Mar 2026 20:18:52 -0500 Subject: [PATCH] xo-interpreter2: streamline pm setup --- src/interpreter2/SetupInterpreter2.cpp | 80 +++++++------------------- 1 file changed, 20 insertions(+), 60 deletions(-) diff --git a/src/interpreter2/SetupInterpreter2.cpp b/src/interpreter2/SetupInterpreter2.cpp index 643ceab2..d6013741 100644 --- a/src/interpreter2/SetupInterpreter2.cpp +++ b/src/interpreter2/SetupInterpreter2.cpp @@ -34,71 +34,11 @@ namespace xo { using xo::xtag; namespace scm { - /** TODO: MOVE THESE install_aux() remplates SOMEWHERE COMMON **/ - - template - bool install_aux(InstallSink sink, - PrimitiveRepr * pm, - InstallFlags flags) - { - scope log(XO_DEBUG(true)); - - if ((flags & InstallFlags::f_generalpurpose) == InstallFlags::f_generalpurpose) { - log && log("create primitive", xtag("name", pm->name())); - - return sink(pm->name(), - pm->fn_td(), - obj(pm), - flags); - } else { - log && log("skip primitive", xtag("name", pm->name())); - - return true; - } - } - - template - bool install_aux(InstallSink sink, - obj mm, - std::string_view name, - typename Primitive::FunctionPtrType impl, - InstallFlags flags) - { - if (flags != InstallFlags::f_none) { - auto pm - = Primitive::_make(mm, name, impl); - - return install_aux(sink, pm, flags); - } else { - return true; - } - } - - bool - SetupInterpreter2::register_primitives(obj rcx, - InstallSink sink, - InstallFlags flags) - { - scope log(XO_DEBUG(true)); - - obj mm = rcx.allocator(); - StringTable * stbl = rcx.stringtable(); - - bool ok = true; - - ok = ok & install_aux(sink, - VsmPrimitives::make_report_memory_use_pm(mm, stbl), - flags); - - return ok; - } - bool SetupInterpreter2::register_facets() { scope log(XO_DEBUG(true)); - // VsmStqackFrame // +- VsmApplyFrame // +- VsmEvalArgsFrame @@ -177,6 +117,26 @@ namespace xo { return ok; } + bool + SetupInterpreter2::register_primitives(obj rcx, + InstallSink sink, + InstallFlags flags) + { + scope log(XO_DEBUG(true)); + + obj mm = rcx.allocator(); + StringTable * stbl = rcx.stringtable(); + + bool ok = true; + + ok = ok & (PrimitiveRegistry::install_aux + (sink, + VsmPrimitives::make_report_memory_use_pm(mm, stbl), + flags & InstallFlags::f_generalpurpose)); + + return ok; + } + } /*namespace scm*/ } /*namespace xo*/