xo-interpreter2 stack: handle SequenceExpr + gc for frames

This commit is contained in:
Roland Conybeare 2026-02-13 15:16:05 -05:00
commit caed95c54d
22 changed files with 559 additions and 36 deletions

View file

@ -4,6 +4,7 @@
**/
#include "DVsmEvalArgsFrame.hpp"
#include <xo/expression2/ApplyExpr.hpp>
#include <xo/indentlog/print/pretty.hpp>
namespace xo {
@ -16,7 +17,7 @@ namespace xo {
DVsmEvalArgsFrame::DVsmEvalArgsFrame(DVsmApplyFrame * parent,
VsmInstr cont,
const DApplyExpr * apply_expr)
DApplyExpr * apply_expr)
: parent_{parent},
cont_{cont},
apply_expr_{apply_expr}
@ -26,7 +27,7 @@ namespace xo {
DVsmEvalArgsFrame::make(obj<AAllocator> mm,
DVsmApplyFrame * apply_frame,
VsmInstr cont,
const DApplyExpr * apply_expr)
DApplyExpr * apply_expr)
{
DVsmEvalArgsFrame * result = nullptr;
@ -61,7 +62,8 @@ namespace xo {
std::size_t
DVsmEvalArgsFrame::forward_children(obj<ACollector> gc) noexcept
{
(void)gc;
gc.forward_inplace(&parent_);
gc.forward_inplace(&apply_expr_);
return this->shallow_size();
}
@ -69,12 +71,10 @@ namespace xo {
bool
DVsmEvalArgsFrame::pretty(const ppindentinfo & ppii) const
{
return ppii.pps()->pretty_struct
(ppii,
"DVsmEvalArgsFrame",
refrtag("cont", cont_),
refrtag("i_arg", i_arg_)
);
return ppii.pps()->pretty_struct(ppii,
"DVsmEvalArgsFrame",
refrtag("cont", cont_),
refrtag("i_arg", i_arg_));
}
} /*namespace scm*/
} /*namespace xo*/