From 4fdaa64085b22bbfea1d86a26b3c0ef86e2771ad Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 10 Apr 2026 01:10:03 -0400 Subject: [PATCH] xo-interpreter2 stack: + reason arg to visit_gco_children() Helps streamline DX1Collector in xo-gc/. Want both forward and verify entry points for the same representation. --- include/xo/object2/DArray.hpp | 4 +++- include/xo/object2/DBoolean.hpp | 3 ++- include/xo/object2/DDictionary.hpp | 4 +++- include/xo/object2/DFloat.hpp | 5 ++--- include/xo/object2/DInteger.hpp | 3 ++- include/xo/object2/DList.hpp | 3 ++- include/xo/object2/DRuntimeError.hpp | 3 ++- include/xo/object2/array/IGCObject_DArray.hpp | 3 ++- .../xo/object2/boolean/IGCObject_DBoolean.hpp | 3 ++- .../dictionary/IGCObject_DDictionary.hpp | 3 ++- .../object2/error/IGCObject_DRuntimeError.hpp | 3 ++- include/xo/object2/list/IGCObject_DList.hpp | 3 ++- include/xo/object2/number/IGCObject_DFloat.hpp | 3 ++- .../xo/object2/number/IGCObject_DInteger.hpp | 3 ++- src/object2/DArray.cpp | 8 ++------ src/object2/DBoolean.cpp | 2 +- src/object2/DDictionary.cpp | 6 +++--- src/object2/DFloat.cpp | 2 +- src/object2/DInteger.cpp | 2 +- src/object2/DList.cpp | 8 +++----- src/object2/DRuntimeError.cpp | 17 +++-------------- src/object2/IGCObject_DArray.cpp | 4 ++-- src/object2/IGCObject_DBoolean.cpp | 4 ++-- src/object2/IGCObject_DDictionary.cpp | 4 ++-- src/object2/IGCObject_DFloat.cpp | 4 ++-- src/object2/IGCObject_DInteger.cpp | 4 ++-- src/object2/IGCObject_DList.cpp | 4 ++-- src/object2/IGCObject_DRuntimeError.cpp | 4 ++-- 28 files changed, 58 insertions(+), 61 deletions(-) diff --git a/include/xo/object2/DArray.hpp b/include/xo/object2/DArray.hpp index cd2bab29..27b0961d 100644 --- a/include/xo/object2/DArray.hpp +++ b/include/xo/object2/DArray.hpp @@ -38,6 +38,8 @@ namespace xo { using AGCObject = xo::mm::AGCObject; /** gc-centric object visitor **/ using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + /** hint for object visitor **/ + using VisitReason = xo::mm::VisitReason; /** pretty-printer state for APrintable **/ using ppindentinfo = xo::print::ppindentinfo; @@ -150,7 +152,7 @@ namespace xo { /** move to new address, mandated by @p gc **/ DArray * gco_shallow_move(obj gc) noexcept; /** forward elements to @p gc to-space; replace originals with forarding pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} private: diff --git a/include/xo/object2/DBoolean.hpp b/include/xo/object2/DBoolean.hpp index 53ee4b88..904503c3 100644 --- a/include/xo/object2/DBoolean.hpp +++ b/include/xo/object2/DBoolean.hpp @@ -19,6 +19,7 @@ namespace xo { //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AGCObject = xo::mm::AGCObject; + using VisitReason = xo::mm::VisitReason; using ppindentinfo = xo::print::ppindentinfo; using value_type = long; @@ -40,7 +41,7 @@ namespace xo { // GCObject facet DBoolean * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; private: /** boxed boolean value **/ diff --git a/include/xo/object2/DDictionary.hpp b/include/xo/object2/DDictionary.hpp index cda1d6f7..beda6600 100644 --- a/include/xo/object2/DDictionary.hpp +++ b/include/xo/object2/DDictionary.hpp @@ -40,6 +40,8 @@ namespace xo { using AGCObjectVisitor = xo::mm::AGCObjectVisitor; /** gc-aware object facet **/ using AGCObject = xo::mm::AGCObject; + /** color for gco visitor **/ + using VisitReason = xo::mm::VisitReason; /** pretty-printer state for APrintable **/ using ppindentinfo = xo::print::ppindentinfo; /** canonical type representing a key-value pair **/ @@ -206,7 +208,7 @@ namespace xo { /** return shallow copy of this array, using memory from @p mm **/ DDictionary * gco_shallow_move(obj gc) noexcept; /** forward elements to @p gc to-space; replace originals with forwarding pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} private: diff --git a/include/xo/object2/DFloat.hpp b/include/xo/object2/DFloat.hpp index edd4f1ec..54ffe41f 100644 --- a/include/xo/object2/DFloat.hpp +++ b/include/xo/object2/DFloat.hpp @@ -6,7 +6,6 @@ #pragma once #include -//#include #include #include #include @@ -15,8 +14,8 @@ namespace xo { namespace scm { struct DFloat { using AAllocator = xo::mm::AAllocator; - //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using ppindentinfo = xo::print::ppindentinfo; using value_type = double; @@ -37,7 +36,7 @@ namespace xo { // GCObject facet DFloat * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; private: diff --git a/include/xo/object2/DInteger.hpp b/include/xo/object2/DInteger.hpp index d82d9890..ddcd9ba1 100644 --- a/include/xo/object2/DInteger.hpp +++ b/include/xo/object2/DInteger.hpp @@ -19,6 +19,7 @@ namespace xo { //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AGCObject = xo::mm::AGCObject; + using VisitReason = xo::mm::VisitReason; using ppindentinfo = xo::print::ppindentinfo; using value_type = long; @@ -42,7 +43,7 @@ namespace xo { // GCObject facet DInteger * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; private: /** boxed integer value **/ diff --git a/include/xo/object2/DList.hpp b/include/xo/object2/DList.hpp index c61b2978..608f82b4 100644 --- a/include/xo/object2/DList.hpp +++ b/include/xo/object2/DList.hpp @@ -22,6 +22,7 @@ namespace xo { using AAllocator = xo::mm::AAllocator; using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using ppindentinfo = xo::print::ppindentinfo; public: @@ -75,7 +76,7 @@ namespace xo { /** @defgroup xo-scm-list-gcobject-facet gcobject facet **/ ///@{ DList * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} /** first member of list **/ diff --git a/include/xo/object2/DRuntimeError.hpp b/include/xo/object2/DRuntimeError.hpp index 43fe4a03..e65b2883 100644 --- a/include/xo/object2/DRuntimeError.hpp +++ b/include/xo/object2/DRuntimeError.hpp @@ -19,6 +19,7 @@ namespace xo { using AGCObject = xo::mm::AGCObject; //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using ppindentinfo = xo::print::ppindentinfo; @@ -51,7 +52,7 @@ namespace xo { ///@{ DRuntimeError * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/object2/array/IGCObject_DArray.hpp b/include/xo/object2/array/IGCObject_DArray.hpp index 75399cf3..4cd5f026 100644 --- a/include/xo/object2/array/IGCObject_DArray.hpp +++ b/include/xo/object2/array/IGCObject_DArray.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DArray & self, obj fn) noexcept; + static void visit_gco_children(DArray & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/boolean/IGCObject_DBoolean.hpp b/include/xo/object2/boolean/IGCObject_DBoolean.hpp index 30fc70fe..8ab00b09 100644 --- a/include/xo/object2/boolean/IGCObject_DBoolean.hpp +++ b/include/xo/object2/boolean/IGCObject_DBoolean.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DBoolean & self, obj fn) noexcept; + static void visit_gco_children(DBoolean & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/dictionary/IGCObject_DDictionary.hpp b/include/xo/object2/dictionary/IGCObject_DDictionary.hpp index 5d45179b..52d093bb 100644 --- a/include/xo/object2/dictionary/IGCObject_DDictionary.hpp +++ b/include/xo/object2/dictionary/IGCObject_DDictionary.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DDictionary & self, obj fn) noexcept; + static void visit_gco_children(DDictionary & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/error/IGCObject_DRuntimeError.hpp b/include/xo/object2/error/IGCObject_DRuntimeError.hpp index a0039ad9..19e378b4 100644 --- a/include/xo/object2/error/IGCObject_DRuntimeError.hpp +++ b/include/xo/object2/error/IGCObject_DRuntimeError.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DRuntimeError & self, obj fn) noexcept; + static void visit_gco_children(DRuntimeError & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/list/IGCObject_DList.hpp b/include/xo/object2/list/IGCObject_DList.hpp index 4002106e..10463fef 100644 --- a/include/xo/object2/list/IGCObject_DList.hpp +++ b/include/xo/object2/list/IGCObject_DList.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DList & self, obj fn) noexcept; + static void visit_gco_children(DList & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/number/IGCObject_DFloat.hpp b/include/xo/object2/number/IGCObject_DFloat.hpp index eb50bb37..0d9042f6 100644 --- a/include/xo/object2/number/IGCObject_DFloat.hpp +++ b/include/xo/object2/number/IGCObject_DFloat.hpp @@ -44,6 +44,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -58,7 +59,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DFloat & self, obj fn) noexcept; + static void visit_gco_children(DFloat & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/object2/number/IGCObject_DInteger.hpp b/include/xo/object2/number/IGCObject_DInteger.hpp index fece77f5..5d6d944f 100644 --- a/include/xo/object2/number/IGCObject_DInteger.hpp +++ b/include/xo/object2/number/IGCObject_DInteger.hpp @@ -43,6 +43,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -57,7 +58,7 @@ Arguably abusing the word 'visitor' here **/ /** Invoke fn.visit_child(iface,data) for each child GCObject pointer. Context: provides address of data pointer so it can be updated in place when @p fn invokes garbage collector reentry point **/ - static void visit_gco_children(DInteger & self, obj fn) noexcept; + static void visit_gco_children(DInteger & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/src/object2/DArray.cpp b/src/object2/DArray.cpp index f6c16b79..c6e83ee6 100644 --- a/src/object2/DArray.cpp +++ b/src/object2/DArray.cpp @@ -198,16 +198,12 @@ namespace xo { } void - DArray::visit_gco_children(obj gc) noexcept + DArray::visit_gco_children(VisitReason reason, obj gc) noexcept { - scope log(XO_DEBUG(false)); - for (size_type i = 0; i < size_; ++i) { - log && log("DArray::visit_gco_children (loop)", xtag("i", i), xtag("z", size_)); - obj & elt = elts_[i]; - gc.visit_child(&elt); + gc.visit_child(reason, &elt); } } diff --git a/src/object2/DBoolean.cpp b/src/object2/DBoolean.cpp index 5d2de407..2e0bafa8 100644 --- a/src/object2/DBoolean.cpp +++ b/src/object2/DBoolean.cpp @@ -36,7 +36,7 @@ namespace xo { } void - DBoolean::visit_gco_children(obj) noexcept + DBoolean::visit_gco_children(VisitReason, obj) noexcept { // no-op. childless } diff --git a/src/object2/DDictionary.cpp b/src/object2/DDictionary.cpp index f7806b6a..7d838dd8 100644 --- a/src/object2/DDictionary.cpp +++ b/src/object2/DDictionary.cpp @@ -274,10 +274,10 @@ namespace xo { } void - DDictionary::visit_gco_children(obj gc) noexcept + DDictionary::visit_gco_children(VisitReason reason, obj gc) noexcept { - gc.visit_child(&keys_); - gc.visit_child(&values_); + gc.visit_child(reason, &keys_); + gc.visit_child(reason, &values_); } } /*namespace scm*/ diff --git a/src/object2/DFloat.cpp b/src/object2/DFloat.cpp index 99d8b23a..6141b283 100644 --- a/src/object2/DFloat.cpp +++ b/src/object2/DFloat.cpp @@ -34,7 +34,7 @@ namespace xo { } void - DFloat::visit_gco_children(obj) noexcept + DFloat::visit_gco_children(VisitReason, obj) noexcept { // noop -- childless! } diff --git a/src/object2/DInteger.cpp b/src/object2/DInteger.cpp index 1c17d9cf..03e6a5d0 100644 --- a/src/object2/DInteger.cpp +++ b/src/object2/DInteger.cpp @@ -34,7 +34,7 @@ namespace xo { } void - DInteger::visit_gco_children(obj) noexcept + DInteger::visit_gco_children(VisitReason, obj) noexcept { // no-op. childless } diff --git a/src/object2/DList.cpp b/src/object2/DList.cpp index fc2070ff..612ed98b 100644 --- a/src/object2/DList.cpp +++ b/src/object2/DList.cpp @@ -185,12 +185,10 @@ namespace xo { } void - DList::visit_gco_children(obj gc) noexcept + DList::visit_gco_children(VisitReason reason, obj gc) noexcept { - //scope log(XO_DEBUG(true)); - - gc.visit_child(&head_); - gc.visit_child(&rest_); + gc.visit_child(reason, &head_); + gc.visit_child(reason, &rest_); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/object2/DRuntimeError.cpp b/src/object2/DRuntimeError.cpp index 7edb6227..2d9518e6 100644 --- a/src/object2/DRuntimeError.cpp +++ b/src/object2/DRuntimeError.cpp @@ -59,21 +59,10 @@ namespace xo { } void - DRuntimeError::visit_gco_children(obj gc) noexcept + DRuntimeError::visit_gco_children(VisitReason reason, obj gc) noexcept { - { - gc.visit_child(&src_function_); - - //auto iface = xo::facet::impl_for(); - //gc.forward_inplace(&iface, (void **)(&src_function_)); - } - - { - gc.visit_child(&error_descr_); - - //auto iface = xo::facet::impl_for(); - //gc.forward_inplace(&iface, (void **)(&error_descr_)); - } + gc.visit_child(reason, &src_function_); + gc.visit_child(reason, &error_descr_); } // ----- Printable facet ----- diff --git a/src/object2/IGCObject_DArray.cpp b/src/object2/IGCObject_DArray.cpp index 6de8b94d..e771e335 100644 --- a/src/object2/IGCObject_DArray.cpp +++ b/src/object2/IGCObject_DArray.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DArray::visit_gco_children(DArray & self, obj fn) noexcept -> void + IGCObject_DArray::visit_gco_children(DArray & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DBoolean.cpp b/src/object2/IGCObject_DBoolean.cpp index d791116d..62b82ca7 100644 --- a/src/object2/IGCObject_DBoolean.cpp +++ b/src/object2/IGCObject_DBoolean.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DBoolean::visit_gco_children(DBoolean & self, obj fn) noexcept -> void + IGCObject_DBoolean::visit_gco_children(DBoolean & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DDictionary.cpp b/src/object2/IGCObject_DDictionary.cpp index 41d462c9..ae6da864 100644 --- a/src/object2/IGCObject_DDictionary.cpp +++ b/src/object2/IGCObject_DDictionary.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DDictionary::visit_gco_children(DDictionary & self, obj fn) noexcept -> void + IGCObject_DDictionary::visit_gco_children(DDictionary & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DFloat.cpp b/src/object2/IGCObject_DFloat.cpp index adcb9948..d6399b0b 100644 --- a/src/object2/IGCObject_DFloat.cpp +++ b/src/object2/IGCObject_DFloat.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DFloat::visit_gco_children(DFloat & self, obj fn) noexcept -> void + IGCObject_DFloat::visit_gco_children(DFloat & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DInteger.cpp b/src/object2/IGCObject_DInteger.cpp index b4b57fc6..1acd0455 100644 --- a/src/object2/IGCObject_DInteger.cpp +++ b/src/object2/IGCObject_DInteger.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DInteger::visit_gco_children(DInteger & self, obj fn) noexcept -> void + IGCObject_DInteger::visit_gco_children(DInteger & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DList.cpp b/src/object2/IGCObject_DList.cpp index 79ad3750..205c3e58 100644 --- a/src/object2/IGCObject_DList.cpp +++ b/src/object2/IGCObject_DList.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DList::visit_gco_children(DList & self, obj fn) noexcept -> void + IGCObject_DList::visit_gco_children(DList & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/object2/IGCObject_DRuntimeError.cpp b/src/object2/IGCObject_DRuntimeError.cpp index 800d72ba..3efa863d 100644 --- a/src/object2/IGCObject_DRuntimeError.cpp +++ b/src/object2/IGCObject_DRuntimeError.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DRuntimeError::visit_gco_children(DRuntimeError & self, obj fn) noexcept -> void + IGCObject_DRuntimeError::visit_gco_children(DRuntimeError & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/