From 3d24a523f3b5580c8cf48a680003a7d89ffe8ea6 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 1 May 2026 19:54:26 -0400 Subject: [PATCH] refactor focusing on xo-alloc2/ xo-gc/ write-barrier ability to inform allocator of gco->gco mutation, via AAllocator i/face. --- src/reader2/DApplySsm.cpp | 6 +++--- src/reader2/DExpectFormalArglistSsm.cpp | 8 ++++---- src/reader2/DExpectQArraySsm.cpp | 4 ++-- src/reader2/DGlobalEnv.cpp | 8 ++++++-- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/reader2/DApplySsm.cpp b/src/reader2/DApplySsm.cpp index 5c4802cc..ee043ddd 100644 --- a/src/reader2/DApplySsm.cpp +++ b/src/reader2/DApplySsm.cpp @@ -233,7 +233,7 @@ namespace xo { assert(expr_gco); obj mm(&(p_psm->parser_alloc())); - auto gc = obj(mm).try_to_facet(); + //auto gc = obj(mm).try_to_facet(); if (args_expr_v_->size() == args_expr_v_->capacity()) { // need to expand .args_expr_v_ capacity. @@ -243,14 +243,14 @@ namespace xo { DArray * argv_2x = DArray::_empty(mm, 2 * args_expr_v_->capacity()); for (DArray::size_type i = 0, n = args_expr_v_->size(); i < n; ++i) { - argv_2x->push_back(gc, (*args_expr_v_)[i]); + argv_2x->push_back(mm, (*args_expr_v_)[i]); } this->args_expr_v_ = argv_2x; } if (args_expr_v_->size() < args_expr_v_->capacity()) - args_expr_v_->push_back(gc, expr_gco); + args_expr_v_->push_back(mm, expr_gco); if (tk.tk_type() == tokentype::tk_rightparen) { obj apply_ex = this->assemble_expr(p_psm->expr_alloc()); diff --git a/src/reader2/DExpectFormalArglistSsm.cpp b/src/reader2/DExpectFormalArglistSsm.cpp index 18531816..3d86158c 100644 --- a/src/reader2/DExpectFormalArglistSsm.cpp +++ b/src/reader2/DExpectFormalArglistSsm.cpp @@ -201,20 +201,20 @@ namespace xo { obj mm(&parser_alloc); DArray * argl_2x = DArray::_empty(mm, 2 * argl_->capacity()); - auto gc = obj(mm).try_to_facet(); + //auto gc = obj(mm).try_to_facet(); for (DArray::size_type i = 0, n = argl_->size(); i < n; ++i) { // TODO: prefer non-bounds-checked access here - argl_2x->push_back(gc, argl_->at(i)); + argl_2x->push_back(mm, argl_->at(i)); } // update in place this->argl_ = argl_2x; } - auto gc = expr_alloc.try_to_facet(); + //auto gc = expr_alloc.try_to_facet(); - this->argl_->push_back(gc, var_o); + this->argl_->push_back(expr_alloc, var_o); } void diff --git a/src/reader2/DExpectQArraySsm.cpp b/src/reader2/DExpectQArraySsm.cpp index 1d09b154..eda20eb2 100644 --- a/src/reader2/DExpectQArraySsm.cpp +++ b/src/reader2/DExpectQArraySsm.cpp @@ -178,7 +178,7 @@ namespace xo { DExpectQArraySsm::on_quoted_literal(obj lit, ParserStateMachine * p_psm) { - auto gc = p_psm->expr_alloc().try_to_facet(); + //auto gc = p_psm->expr_alloc().try_to_facet(); if(state_.code() == QArrayXst::code::qarray_1a) { // append lit at the end of array_ @@ -195,7 +195,7 @@ namespace xo { 2 * array_->capacity()); } - bool ok = array_->push_back(gc, lit); + bool ok = array_->push_back(p_psm->expr_alloc(), lit); assert(ok); } diff --git a/src/reader2/DGlobalEnv.cpp b/src/reader2/DGlobalEnv.cpp index 2fc2e881..c1caf833 100644 --- a/src/reader2/DGlobalEnv.cpp +++ b/src/reader2/DGlobalEnv.cpp @@ -8,6 +8,7 @@ #include namespace xo { + using xo::mm::ACollector; using xo::mm::AAllocator; using xo::mm::AGCObject; @@ -84,8 +85,11 @@ namespace xo { values_->resize(ix.j_slot() + 1); } - log && log("STUB: need write barrier for GC here"); - (*values_)[ix.j_slot()] = x; + //auto gc = mm.try_to_facet(); + + values_->assign_at(mm, + ix.j_slot(), + x); } DVariable *