From ca79d06be410256ea9af871bc35634ed71c7f392 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/expression2/DGlobalSymtab.cpp | 15 +++++++++------ src/expression2/DLocalSymtab.cpp | 8 ++++---- src/expression2/DSequenceExpr.cpp | 10 ++++------ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/expression2/DGlobalSymtab.cpp b/src/expression2/DGlobalSymtab.cpp index d927288a..30878f4d 100644 --- a/src/expression2/DGlobalSymtab.cpp +++ b/src/expression2/DGlobalSymtab.cpp @@ -111,7 +111,7 @@ namespace xo { { scope log(XO_DEBUG(false), std::string_view(*var->name())); - auto gc = mm.try_to_facet(); + //auto gc = mm.try_to_facet(); // It's possible there's already a global variable // with the same name. @@ -136,7 +136,10 @@ namespace xo { // replacing previous one // log && log("STUB: need write barrier"); - (*vars_)[existing->path().j_slot()] = obj(var); + vars_->assign_at(mm, + existing->path().j_slot(), + obj(var)); + //(*vars_)[existing->path().j_slot()] = obj(var); } else { log && log("variable is new"); @@ -168,7 +171,7 @@ namespace xo { // need slot# in .map_ for this unique symbol (*var_map_)[var->name()] = binding.j_slot(); - vars_->push_back(gc, obj(var)); + vars_->push_back(mm, obj(var)); } } @@ -194,7 +197,7 @@ namespace xo { scope log(XO_DEBUG(true), std::string_view(*tname->name())); - auto gc = mm.try_to_facet(); + //auto gc = mm.try_to_facet(); auto ix = type_map_->find(tname->name()); @@ -223,12 +226,12 @@ namespace xo { (*type_map_)[tname->name()] = n; log && log("STUB: need write barrier"); - types_->push_back(gc, obj(tname)); + types_->push_back(mm, obj(tname)); } else { Binding::slot_type i_slot = ix->second; log && log("STUB: need write barrier"); - types_->assign_at(gc, i_slot, + types_->assign_at(mm, i_slot, obj(tname)); } } diff --git a/src/expression2/DLocalSymtab.cpp b/src/expression2/DLocalSymtab.cpp index c5bf6e1e..c8b5b1fd 100644 --- a/src/expression2/DLocalSymtab.cpp +++ b/src/expression2/DLocalSymtab.cpp @@ -70,8 +70,8 @@ namespace xo { DVariable * var = DVariable::make(mm, name, typeref, binding); - auto gc = mm.try_to_facet(); - vars_->push_back(gc, obj(var)); + //auto gc = mm.try_to_facet(); + vars_->push_back(mm, obj(var)); return binding; } @@ -89,8 +89,8 @@ namespace xo { } else { obj tname = DTypename::make(mm, name, type); - auto gc = mm.try_to_facet(); - types_->push_back(gc, tname); + //auto gc = mm.try_to_facet(); + types_->push_back(mm, tname); } } diff --git a/src/expression2/DSequenceExpr.cpp b/src/expression2/DSequenceExpr.cpp index bfece9e6..bdff6270 100644 --- a/src/expression2/DSequenceExpr.cpp +++ b/src/expression2/DSequenceExpr.cpp @@ -5,8 +5,7 @@ #include "DSequenceExpr.hpp" #include "detail/IExpression_DSequenceExpr.hpp" -#include -#include +#include #include #include #include @@ -15,7 +14,6 @@ #include namespace xo { - using xo::mm::ACollector; using xo::mm::AGCObject; using xo::print::APrintable; using xo::facet::FacetRegistry; @@ -75,7 +73,7 @@ namespace xo { obj expr) { // null gc -> no write barrier - obj gc = mm.try_to_facet(); + //obj gc = mm.try_to_facet(); if (expr_v_->size() == expr_v_->capacity()) { /* reallocate+expand */ @@ -84,7 +82,7 @@ namespace xo { = DArray::_empty(mm, 2 * expr_v_->capacity()); for (size_type i = 0, z = expr_v_->size(); i < z; ++i) { - expr_2x_v->push_back(gc, (*expr_2x_v)[i]); + expr_2x_v->push_back(mm, (*expr_2x_v)[i]); } this->expr_v_ = expr_2x_v; @@ -92,7 +90,7 @@ namespace xo { obj expr_gco = expr.to_facet(); - this->expr_v_->push_back(gc, expr_gco); + this->expr_v_->push_back(mm, expr_gco); } void