/** @file SetupInterpreter2.cpp * * @author Roland Conybeare, Mar 2026 **/ #include "SetupInterpreter2.hpp" #include "VsmPrimitives.hpp" #include "DPrimitive_gco_2_gco_gco.hpp" #include "VsmDefContFrame.hpp" #include "VsmApplyFrame.hpp" #include "VsmEvalArgsFrame.hpp" #include "VsmApplyClosureFrame.hpp" #include "VsmIfElseContFrame.hpp" #include "VsmSeqContFrame.hpp" #include "Primitive_gco_2_gco_gco.hpp" #include "Closure.hpp" #include "GlobalEnv.hpp" #include "LocalEnv.hpp" #include "VsmRcx.hpp" #include #include #include #include namespace xo { using xo::mm::ACollector; using xo::mm::AAllocator; using xo::mm::AGCObject; using xo::print::APrintable; using xo::facet::FacetRegistry; using xo::facet::impl_for; using xo::reflect::typeseq; using xo::xtag; namespace scm { bool SetupInterpreter2::register_facets() { scope log(XO_DEBUG(true)); // VsmStqackFrame // +- VsmApplyFrame // +- VsmEvalArgsFrame // +- VsmApplyClosureFrame // +- VsmDefContFrame // +- VsmIfElseContFrame // \- VsmSeqContFrame FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); // LocalEnv (see xo-reader2/ for GlobalEnv) FacetRegistry::register_impl(); FacetRegistry::register_impl(); // Procedure // \- Primitive_gco_2_gco_gco FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); // Closure // FacetRegistry::register_impl(); // if/when provided FacetRegistry::register_impl(); FacetRegistry::register_impl(); // RuntimeContext // \- VsmRcx FacetRegistry::register_impl(); log && log(xtag("DVsmApplyFrame.tseq", typeseq::id())); log && log(xtag("DVsmEvalArgsFrame.tseq", typeseq::id())); log && log(xtag("DVsmApplyClosureFrame.tseq", typeseq::id())); log && log(xtag("DVsmDefContFrame.tseq", typeseq::id())); //log && log(xtag("DVsmDefContFrame.tseq", typeseq::id())); log && log(xtag("DVsmIfElseContFrame.tseq", typeseq::id())); log && log(xtag("DVsmSeqContFrame.tseq", typeseq::id())); log && log(xtag("DClosure.tseq", typeseq::id())); log && log(xtag("DGlobalEnv.tseq", typeseq::id())); log && log(xtag("DLocalEnv.tseq", typeseq::id())); log && log(xtag("DVsmRcx.tseq", typeseq::id())); return true; } bool SetupInterpreter2::register_types(obj gc) { scope log(XO_DEBUG(true)); bool ok = true; ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); 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*/ /* end SetupInterpreter2.cpp */