diff --git a/idl/SyntaxStateMachine.json5 b/idl/SyntaxStateMachine.json5 index d47656b7..c2d8aff1 100644 --- a/idl/SyntaxStateMachine.json5 +++ b/idl/SyntaxStateMachine.json5 @@ -29,7 +29,7 @@ { name: "TypeDescr", doc: [ "reflected c++ type" ], definition: "xo::reflect::TypeDescr" }, { name: "AGCObjectVisitor", doc: [ "gc visitor interface" ], definition: "xo::mm::AGCObjectVisitor" }, { name: "AGCObject", doc: [ "gc-aware object" ], definition: "xo::mm::AGCObject" }, - // { name: string, doc: [ string ], definition: string }, + { name: "VisitReason", doc: [ "hint when traversing gco graph" ], definition: "xo::mm::VisitReason" }, ], const_methods: [ { @@ -151,6 +151,7 @@ doc: ["gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each"], return_type: "void", args: [ + {type: "VisitReason", name: "reason"}, {type: "obj", name: "gc"}, ], } diff --git a/include/xo/reader2/DDefineSsm.hpp b/include/xo/reader2/DDefineSsm.hpp index e31c3b2a..36afb4b4 100644 --- a/include/xo/reader2/DDefineSsm.hpp +++ b/include/xo/reader2/DDefineSsm.hpp @@ -74,6 +74,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -200,7 +201,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectExprSsm.hpp b/include/xo/reader2/DExpectExprSsm.hpp index e73e1f16..b0d4b5f3 100644 --- a/include/xo/reader2/DExpectExprSsm.hpp +++ b/include/xo/reader2/DExpectExprSsm.hpp @@ -18,6 +18,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -194,7 +195,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectFormalArglistSsm.hpp b/include/xo/reader2/DExpectFormalArglistSsm.hpp index 954cdc72..c321b135 100644 --- a/include/xo/reader2/DExpectFormalArglistSsm.hpp +++ b/include/xo/reader2/DExpectFormalArglistSsm.hpp @@ -56,6 +56,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -130,7 +131,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectQArraySsm.hpp b/include/xo/reader2/DExpectQArraySsm.hpp index 2ec32eb4..fcd1a14e 100644 --- a/include/xo/reader2/DExpectQArraySsm.hpp +++ b/include/xo/reader2/DExpectQArraySsm.hpp @@ -58,6 +58,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -123,7 +124,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectQListSsm.hpp b/include/xo/reader2/DExpectQListSsm.hpp index 3b9ab53d..8c9185ca 100644 --- a/include/xo/reader2/DExpectQListSsm.hpp +++ b/include/xo/reader2/DExpectQListSsm.hpp @@ -59,6 +59,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -124,7 +125,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectQLiteralSsm.hpp b/include/xo/reader2/DExpectQLiteralSsm.hpp index 2538fb6f..58d7a0b4 100644 --- a/include/xo/reader2/DExpectQLiteralSsm.hpp +++ b/include/xo/reader2/DExpectQLiteralSsm.hpp @@ -16,6 +16,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -129,7 +130,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DExpectSymbolSsm.hpp b/include/xo/reader2/DExpectSymbolSsm.hpp index f4c3c156..0acd75c3 100644 --- a/include/xo/reader2/DExpectSymbolSsm.hpp +++ b/include/xo/reader2/DExpectSymbolSsm.hpp @@ -22,6 +22,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; using ppindentinfo = xo::print::ppindentinfo; @@ -80,7 +81,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} }; diff --git a/include/xo/reader2/DExpectTypeSsm.hpp b/include/xo/reader2/DExpectTypeSsm.hpp index d405e916..fd65a3ec 100644 --- a/include/xo/reader2/DExpectTypeSsm.hpp +++ b/include/xo/reader2/DExpectTypeSsm.hpp @@ -29,6 +29,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -87,7 +88,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DGlobalEnv.hpp b/include/xo/reader2/DGlobalEnv.hpp index 6bb88f49..02a4679a 100644 --- a/include/xo/reader2/DGlobalEnv.hpp +++ b/include/xo/reader2/DGlobalEnv.hpp @@ -27,9 +27,9 @@ namespace xo { class DGlobalEnv { public: using TypeDescr = xo::reflect::TypeDescr; - //using ACollector = xo::mm::ACollector; using AGCObject = xo::mm::AGCObject; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using MemorySizeVisitor = xo::mm::MemorySizeVisitor; using ppindentinfo = xo::print::ppindentinfo; @@ -73,7 +73,7 @@ namespace xo { ///@{ DGlobalEnv * gco_shallow_move(obj gc) noexcept; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} /** @defgroup scm-globalenv-printable-facet **/ diff --git a/include/xo/reader2/DProgressSsm.hpp b/include/xo/reader2/DProgressSsm.hpp index 372b3af6..3abc38ea 100644 --- a/include/xo/reader2/DProgressSsm.hpp +++ b/include/xo/reader2/DProgressSsm.hpp @@ -90,6 +90,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -217,7 +218,8 @@ namespace xo { /** @defgroup scm-progressssm-gc-support gc support methods **/ ///@{ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DQuoteSsm.hpp b/include/xo/reader2/DQuoteSsm.hpp index 542342ef..0874b549 100644 --- a/include/xo/reader2/DQuoteSsm.hpp +++ b/include/xo/reader2/DQuoteSsm.hpp @@ -66,6 +66,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -150,7 +151,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} private: diff --git a/include/xo/reader2/DSequenceSsm.hpp b/include/xo/reader2/DSequenceSsm.hpp index a7819048..c153d76e 100644 --- a/include/xo/reader2/DSequenceSsm.hpp +++ b/include/xo/reader2/DSequenceSsm.hpp @@ -30,6 +30,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -97,7 +98,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/DToplevelSeqSsm.hpp b/include/xo/reader2/DToplevelSeqSsm.hpp index 4103f45a..5df90f4d 100644 --- a/include/xo/reader2/DToplevelSeqSsm.hpp +++ b/include/xo/reader2/DToplevelSeqSsm.hpp @@ -41,6 +41,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -161,7 +162,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/reader2/ParserResult.hpp b/include/xo/reader2/ParserResult.hpp index 823372da..c8976da4 100644 --- a/include/xo/reader2/ParserResult.hpp +++ b/include/xo/reader2/ParserResult.hpp @@ -33,6 +33,7 @@ namespace xo { class ParserResult { public: using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using ppindentinfo = xo::print::ppindentinfo; public: @@ -69,7 +70,7 @@ namespace xo { bool pretty(const ppindentinfo & ppii) const; /** gc support: forward gc-eligible children **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; public: /** none|expression|error_description diff --git a/include/xo/reader2/ParserStack.hpp b/include/xo/reader2/ParserStack.hpp index e4b414b4..fade2079 100644 --- a/include/xo/reader2/ParserStack.hpp +++ b/include/xo/reader2/ParserStack.hpp @@ -24,6 +24,7 @@ namespace xo { public: //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -56,7 +57,8 @@ namespace xo { /** pretty-printer support **/ bool pretty(const ppindentinfo & ppii) const; - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; private: /** stack pointer: top of stack just before this instance created **/ diff --git a/include/xo/reader2/ParserStateMachine.hpp b/include/xo/reader2/ParserStateMachine.hpp index fedd574d..b73eac0b 100644 --- a/include/xo/reader2/ParserStateMachine.hpp +++ b/include/xo/reader2/ParserStateMachine.hpp @@ -40,10 +40,11 @@ namespace xo { public: using TypeDescr = xo::reflect::TypeDescr; using ACollector = xo::mm::ACollector; + using AGCObject = xo::mm::AGCObject; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using ArenaConfig = xo::mm::ArenaConfig; - using AGCObject = xo::mm::AGCObject; using DArena = xo::mm::DArena; using MemorySizeVisitor = xo::mm::MemorySizeVisitor; using ArenaHashMapConfig = xo::map::ArenaHashMapConfig; @@ -354,7 +355,8 @@ namespace xo { ///@{ /** update gc-aware exit pointers from this ParserStateMachine **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/SchematikaReader.hpp b/include/xo/reader2/SchematikaReader.hpp index d70c2c04..fd2f5cc9 100644 --- a/include/xo/reader2/SchematikaReader.hpp +++ b/include/xo/reader2/SchematikaReader.hpp @@ -15,12 +15,14 @@ namespace xo { struct ReaderResult { using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using span_type = xo::mm::span; bool is_tk_error() const { return tk_error_.is_error(); } /** forward gc-aware pointers (called during gc cycle) **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; /** schematika expression parsed from input **/ obj expr_; @@ -43,6 +45,7 @@ namespace xo { public: using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using MemorySizeVisitor = xo::mm::MemorySizeVisitor; using span_type = xo::mm::span; @@ -110,7 +113,8 @@ namespace xo { void reset_to_idle_toplevel(); /** update gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; private: /** tokenizer converts a stream of chars diff --git a/include/xo/reader2/apply/DApplySsm.hpp b/include/xo/reader2/apply/DApplySsm.hpp index f7ee1cce..dd724066 100644 --- a/include/xo/reader2/apply/DApplySsm.hpp +++ b/include/xo/reader2/apply/DApplySsm.hpp @@ -8,7 +8,6 @@ #include "DSyntaxStateMachine.hpp" #include "syntaxstatetype.hpp" #include -//#include #include @@ -66,12 +65,11 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; - //using Apply = xo::scm::Apply; - public: /** @defgroup scm-applyssm-ctors constructors **/ ///@{ @@ -190,7 +188,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/apply/ISyntaxStateMachine_DApplySsm.hpp b/include/xo/reader2/apply/ISyntaxStateMachine_DApplySsm.hpp index db3a147d..a50740f5 100644 --- a/include/xo/reader2/apply/ISyntaxStateMachine_DApplySsm.hpp +++ b/include/xo/reader2/apply/ISyntaxStateMachine_DApplySsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DApplySsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DApplySsm & self, obj gc); + static void visit_gco_children(DApplySsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp b/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp index d5338cd5..35df5ded 100644 --- a/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp +++ b/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DDefineSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DDefineSsm & self, obj gc); + static void visit_gco_children(DDefineSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/deftype/DDeftypeSsm.hpp b/include/xo/reader2/deftype/DDeftypeSsm.hpp index b1a6d910..8bbe3ea1 100644 --- a/include/xo/reader2/deftype/DDeftypeSsm.hpp +++ b/include/xo/reader2/deftype/DDeftypeSsm.hpp @@ -67,6 +67,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -172,7 +173,7 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/reader2/deftype/ISyntaxStateMachine_DDeftypeSsm.hpp b/include/xo/reader2/deftype/ISyntaxStateMachine_DDeftypeSsm.hpp index 9bfdfba5..b984bc7d 100644 --- a/include/xo/reader2/deftype/ISyntaxStateMachine_DDeftypeSsm.hpp +++ b/include/xo/reader2/deftype/ISyntaxStateMachine_DDeftypeSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DDeftypeSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DDeftypeSsm & self, obj gc); + static void visit_gco_children(DDeftypeSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/env/IGCObject_DGlobalEnv.hpp b/include/xo/reader2/env/IGCObject_DGlobalEnv.hpp index f96deebc..8efa3c27 100644 --- a/include/xo/reader2/env/IGCObject_DGlobalEnv.hpp +++ b/include/xo/reader2/env/IGCObject_DGlobalEnv.hpp @@ -45,6 +45,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; ///@} @@ -59,7 +60,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(DGlobalEnv & self, obj fn) noexcept; + static void visit_gco_children(DGlobalEnv & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/reader2/expect_formal_arg/DExpectFormalArgSsm.hpp b/include/xo/reader2/expect_formal_arg/DExpectFormalArgSsm.hpp index 5c7e6dec..38a4bb3e 100644 --- a/include/xo/reader2/expect_formal_arg/DExpectFormalArgSsm.hpp +++ b/include/xo/reader2/expect_formal_arg/DExpectFormalArgSsm.hpp @@ -49,6 +49,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -126,7 +127,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/expect_formal_arg/ISyntaxStateMachine_DExpectFormalArgSsm.hpp b/include/xo/reader2/expect_formal_arg/ISyntaxStateMachine_DExpectFormalArgSsm.hpp index a880fad3..ccdfc0bd 100644 --- a/include/xo/reader2/expect_formal_arg/ISyntaxStateMachine_DExpectFormalArgSsm.hpp +++ b/include/xo/reader2/expect_formal_arg/ISyntaxStateMachine_DExpectFormalArgSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectFormalArgSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectFormalArgSsm & self, obj gc); + static void visit_gco_children(DExpectFormalArgSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/expect_listtype/DExpectListTypeSsm.hpp b/include/xo/reader2/expect_listtype/DExpectListTypeSsm.hpp index eeadd15c..ce69f929 100644 --- a/include/xo/reader2/expect_listtype/DExpectListTypeSsm.hpp +++ b/include/xo/reader2/expect_listtype/DExpectListTypeSsm.hpp @@ -63,6 +63,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -135,7 +136,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} private: diff --git a/include/xo/reader2/expect_listtype/ISyntaxStateMachine_DExpectListTypeSsm.hpp b/include/xo/reader2/expect_listtype/ISyntaxStateMachine_DExpectListTypeSsm.hpp index 9ed4214c..b320b9c9 100644 --- a/include/xo/reader2/expect_listtype/ISyntaxStateMachine_DExpectListTypeSsm.hpp +++ b/include/xo/reader2/expect_listtype/ISyntaxStateMachine_DExpectListTypeSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectListTypeSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectListTypeSsm & self, obj gc); + static void visit_gco_children(DExpectListTypeSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/expect_qdict/DExpectQDictSsm.hpp b/include/xo/reader2/expect_qdict/DExpectQDictSsm.hpp index 5ed40fab..18c52bac 100644 --- a/include/xo/reader2/expect_qdict/DExpectQDictSsm.hpp +++ b/include/xo/reader2/expect_qdict/DExpectQDictSsm.hpp @@ -64,6 +64,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -159,7 +160,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/expect_qdict/ISyntaxStateMachine_DExpectQDictSsm.hpp b/include/xo/reader2/expect_qdict/ISyntaxStateMachine_DExpectQDictSsm.hpp index c629e07b..006e43b1 100644 --- a/include/xo/reader2/expect_qdict/ISyntaxStateMachine_DExpectQDictSsm.hpp +++ b/include/xo/reader2/expect_qdict/ISyntaxStateMachine_DExpectQDictSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectQDictSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectQDictSsm & self, obj gc); + static void visit_gco_children(DExpectQDictSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ifelse/DIfElseSsm.hpp b/include/xo/reader2/ifelse/DIfElseSsm.hpp index fd7b8168..3b63cdb7 100644 --- a/include/xo/reader2/ifelse/DIfElseSsm.hpp +++ b/include/xo/reader2/ifelse/DIfElseSsm.hpp @@ -56,6 +56,7 @@ namespace xo { public: using Super = DSyntaxStateMachine; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -171,7 +172,8 @@ namespace xo { /** @defgroup scm-ifelsessm-gc-support gc support methods **/ ///@{ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/ifelse/ISyntaxStateMachine_DIfElseSsm.hpp b/include/xo/reader2/ifelse/ISyntaxStateMachine_DIfElseSsm.hpp index 17f6b4cd..a88e9af1 100644 --- a/include/xo/reader2/ifelse/ISyntaxStateMachine_DIfElseSsm.hpp +++ b/include/xo/reader2/ifelse/ISyntaxStateMachine_DIfElseSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DIfElseSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DIfElseSsm & self, obj gc); + static void visit_gco_children(DIfElseSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/lambda/DLambdaSsm.hpp b/include/xo/reader2/lambda/DLambdaSsm.hpp index 7b16503b..93642f5f 100644 --- a/include/xo/reader2/lambda/DLambdaSsm.hpp +++ b/include/xo/reader2/lambda/DLambdaSsm.hpp @@ -60,6 +60,7 @@ namespace xo { using Super = DSyntaxStateMachine; using DLocalSymtab = xo::scm::DLocalSymtab; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; @@ -189,7 +190,8 @@ namespace xo { ///@{ /** gc support: visit gc-aware child pointers **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/lambda/ISyntaxStateMachine_DLambdaSsm.hpp b/include/xo/reader2/lambda/ISyntaxStateMachine_DLambdaSsm.hpp index db67ee9a..baeb5af4 100644 --- a/include/xo/reader2/lambda/ISyntaxStateMachine_DLambdaSsm.hpp +++ b/include/xo/reader2/lambda/ISyntaxStateMachine_DLambdaSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DLambdaSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DLambdaSsm & self, obj gc); + static void visit_gco_children(DLambdaSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/paren/DParenSsm.hpp b/include/xo/reader2/paren/DParenSsm.hpp index e70ba255..9da3ba42 100644 --- a/include/xo/reader2/paren/DParenSsm.hpp +++ b/include/xo/reader2/paren/DParenSsm.hpp @@ -51,6 +51,7 @@ namespace xo { using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -136,7 +137,8 @@ namespace xo { ///@{ /** gc support: visit immediate gc-aware children **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, + obj gc) noexcept; ///@} diff --git a/include/xo/reader2/paren/ISyntaxStateMachine_DParenSsm.hpp b/include/xo/reader2/paren/ISyntaxStateMachine_DParenSsm.hpp index 4dd7ef74..dc1a826d 100644 --- a/include/xo/reader2/paren/ISyntaxStateMachine_DParenSsm.hpp +++ b/include/xo/reader2/paren/ISyntaxStateMachine_DParenSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DParenSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DParenSsm & self, obj gc); + static void visit_gco_children(DParenSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/parser/DSchematikaParser.hpp b/include/xo/reader2/parser/DSchematikaParser.hpp index 24e4b46a..f699c30b 100644 --- a/include/xo/reader2/parser/DSchematikaParser.hpp +++ b/include/xo/reader2/parser/DSchematikaParser.hpp @@ -164,9 +164,9 @@ namespace xo { using token_type = Token; using ArenaHashMapConfig = xo::map::ArenaHashMapConfig; using ArenaConfig = xo::mm::ArenaConfig; - //using ACollector = xo::mm::ACollector; using AGCObject = xo::mm::AGCObject; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using AAllocator = xo::mm::AAllocator; using MemorySizeVisitor = xo::mm::MemorySizeVisitor; using ppindentinfo = xo::print::ppindentinfo; @@ -297,7 +297,7 @@ namespace xo { /** not implemented (SchematikaParser not designed to be copyable) **/ DSchematikaParser * gco_shallow_move(obj gc) noexcept; /** forward gc-aware children **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} private: diff --git a/include/xo/reader2/parser/IGCObject_DSchematikaParser.hpp b/include/xo/reader2/parser/IGCObject_DSchematikaParser.hpp index 64394e65..586678cd 100644 --- a/include/xo/reader2/parser/IGCObject_DSchematikaParser.hpp +++ b/include/xo/reader2/parser/IGCObject_DSchematikaParser.hpp @@ -45,6 +45,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; ///@} @@ -59,7 +60,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(DSchematikaParser & self, obj fn) noexcept; + static void visit_gco_children(DSchematikaParser & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp b/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp index 35dc5da1..0f01d967 100644 --- a/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp +++ b/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DQuoteSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DQuoteSsm & self, obj gc); + static void visit_gco_children(DQuoteSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ASyntaxStateMachine.hpp b/include/xo/reader2/ssm/ASyntaxStateMachine.hpp index 07d992c1..fc71175b 100644 --- a/include/xo/reader2/ssm/ASyntaxStateMachine.hpp +++ b/include/xo/reader2/ssm/ASyntaxStateMachine.hpp @@ -50,6 +50,8 @@ public: using AGCObjectVisitor = xo::mm::AGCObjectVisitor; /** gc-aware object **/ using AGCObject = xo::mm::AGCObject; + /** hint when traversing gco graph **/ + using VisitReason = xo::mm::VisitReason; ///@} /** @defgroup scm-syntaxstatemachine-methods **/ @@ -91,7 +93,7 @@ public: /** update state machine for nested quoted literal @p lit **/ virtual void on_quoted_literal(Opaque data, obj lit, ParserStateMachine * p_psm) = 0; /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - virtual void visit_gco_children(Opaque data, obj gc) = 0; + virtual void visit_gco_children(Opaque data, VisitReason reason, obj gc) = 0; ///@} }; /*ASyntaxStateMachine*/ diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_Any.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_Any.hpp index 34e7ec84..88b0cde2 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_Any.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_Any.hpp @@ -47,6 +47,7 @@ namespace scm { using TypeDescr = ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = ASyntaxStateMachine::AGCObject; + using VisitReason = ASyntaxStateMachine::VisitReason; ///@} /** @defgroup scm-syntaxstatemachine-any-methods **/ @@ -75,7 +76,7 @@ namespace scm { [[noreturn]] void on_parsed_expression(Opaque, obj, ParserStateMachine *) override; [[noreturn]] void on_parsed_expression_with_token(Opaque, obj, const Token &, ParserStateMachine *) override; [[noreturn]] void on_quoted_literal(Opaque, obj, ParserStateMachine *) override; - [[noreturn]] void visit_gco_children(Opaque, obj) override; + [[noreturn]] void visit_gco_children(Opaque, VisitReason, obj) override; ///@} diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectExprSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectExprSsm.hpp index 5ca9f1c0..63210b94 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectExprSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectExprSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectExprSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectExprSsm & self, obj gc); + static void visit_gco_children(DExpectExprSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp index 04da69bd..8b9d4083 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectFormalArglistSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectFormalArglistSsm & self, obj gc); + static void visit_gco_children(DExpectFormalArglistSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQArraySsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQArraySsm.hpp index 7b345008..e4b15c21 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQArraySsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQArraySsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectQArraySsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectQArraySsm & self, obj gc); + static void visit_gco_children(DExpectQArraySsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQListSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQListSsm.hpp index ea0cb3c2..42fdc804 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQListSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQListSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectQListSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectQListSsm & self, obj gc); + static void visit_gco_children(DExpectQListSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQLiteralSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQLiteralSsm.hpp index 4a4bdbfb..5dc2130b 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQLiteralSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectQLiteralSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectQLiteralSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectQLiteralSsm & self, obj gc); + static void visit_gco_children(DExpectQLiteralSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectSymbolSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectSymbolSsm.hpp index e3cf7146..dfc0d6bb 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectSymbolSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectSymbolSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectSymbolSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectSymbolSsm & self, obj gc); + static void visit_gco_children(DExpectSymbolSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectTypeSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectTypeSsm.hpp index 965212d1..b8607deb 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectTypeSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DExpectTypeSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DExpectTypeSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DExpectTypeSsm & self, obj gc); + static void visit_gco_children(DExpectTypeSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DProgressSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DProgressSsm.hpp index 7c12ee39..3a2b3aaf 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DProgressSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DProgressSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DProgressSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DProgressSsm & self, obj gc); + static void visit_gco_children(DProgressSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp index b35d45a1..74183d99 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DSequenceSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DSequenceSsm & self, obj gc); + static void visit_gco_children(DSequenceSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DToplevelSeqSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DToplevelSeqSsm.hpp index 695da17c..55da530d 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DToplevelSeqSsm.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_DToplevelSeqSsm.hpp @@ -44,6 +44,7 @@ namespace xo { using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; + using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason; using Copaque = xo::scm::ASyntaxStateMachine::Copaque; using Opaque = xo::scm::ASyntaxStateMachine::Opaque; ///@} @@ -77,7 +78,7 @@ namespace xo { /** update state machine for nested quoted literal @p lit **/ static void on_quoted_literal(DToplevelSeqSsm & self, obj lit, ParserStateMachine * p_psm); /** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/ - static void visit_gco_children(DToplevelSeqSsm & self, obj gc); + static void visit_gco_children(DToplevelSeqSsm & self, VisitReason reason, obj gc); ///@} }; diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_Xfer.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_Xfer.hpp index df1a87f4..1d971d3b 100644 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_Xfer.hpp +++ b/include/xo/reader2/ssm/ISyntaxStateMachine_Xfer.hpp @@ -36,6 +36,7 @@ namespace scm { using TypeDescr = ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = ASyntaxStateMachine::AGCObject; + using VisitReason = ASyntaxStateMachine::VisitReason; ///@} /** @defgroup scm-syntaxstatemachine-xfer-methods **/ @@ -89,8 +90,8 @@ namespace scm { void on_quoted_literal(Opaque data, obj lit, ParserStateMachine * p_psm) override { return I::on_quoted_literal(_dcast(data), lit, p_psm); } - void visit_gco_children(Opaque data, obj gc) override { - return I::visit_gco_children(_dcast(data), gc); + void visit_gco_children(Opaque data, VisitReason reason, obj gc) override { + return I::visit_gco_children(_dcast(data), reason, gc); } ///@} diff --git a/include/xo/reader2/ssm/RSyntaxStateMachine.hpp b/include/xo/reader2/ssm/RSyntaxStateMachine.hpp index 9c8a8274..2f5b9fb0 100644 --- a/include/xo/reader2/ssm/RSyntaxStateMachine.hpp +++ b/include/xo/reader2/ssm/RSyntaxStateMachine.hpp @@ -34,6 +34,7 @@ public: using TypeDescr = ASyntaxStateMachine::TypeDescr; using AGCObjectVisitor = ASyntaxStateMachine::AGCObjectVisitor; using AGCObject = ASyntaxStateMachine::AGCObject; + using VisitReason = ASyntaxStateMachine::VisitReason; ///@} /** @defgroup scm-syntaxstatemachine-router-ctors **/ @@ -93,8 +94,8 @@ public: void on_quoted_literal(obj lit, ParserStateMachine * p_psm) { return O::iface()->on_quoted_literal(O::data(), lit, p_psm); } - void visit_gco_children(obj gc) { - return O::iface()->visit_gco_children(O::data(), gc); + void visit_gco_children(VisitReason reason, obj gc) { + return O::iface()->visit_gco_children(O::data(), reason, gc); } ///@} diff --git a/src/reader2/DApplySsm.cpp b/src/reader2/DApplySsm.cpp index 1787d560..ef84187b 100644 --- a/src/reader2/DApplySsm.cpp +++ b/src/reader2/DApplySsm.cpp @@ -397,10 +397,11 @@ namespace xo { } void - DApplySsm::visit_gco_children(obj gc) noexcept + DApplySsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&fn_expr_); - gc.visit_child(&args_expr_v_); + gc.visit_poly_child(reason, &fn_expr_); + gc.visit_child(reason, &args_expr_v_); } } /*namespace scm*/ diff --git a/src/reader2/DDefineSsm.cpp b/src/reader2/DDefineSsm.cpp index 1ee8e3aa..0e38f93d 100644 --- a/src/reader2/DDefineSsm.cpp +++ b/src/reader2/DDefineSsm.cpp @@ -692,9 +692,10 @@ namespace xo { // ----- gc support ----- void - DDefineSsm::visit_gco_children(obj gc) noexcept + DDefineSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&def_expr_.data_); + gc.visit_child(reason, &def_expr_.data_); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader2/DDeftypeSsm.cpp b/src/reader2/DDeftypeSsm.cpp index 0007d940..108f6be7 100644 --- a/src/reader2/DDeftypeSsm.cpp +++ b/src/reader2/DDeftypeSsm.cpp @@ -271,7 +271,7 @@ namespace xo { refrtag("expect", this->get_expect_str())); } void - DDeftypeSsm::visit_gco_children(obj) noexcept + DDeftypeSsm::visit_gco_children(VisitReason, obj) noexcept { static_assert(!DUniqueString::is_gc_eligible()); } diff --git a/src/reader2/DExpectExprSsm.cpp b/src/reader2/DExpectExprSsm.cpp index bce870f6..9526aaea 100644 --- a/src/reader2/DExpectExprSsm.cpp +++ b/src/reader2/DExpectExprSsm.cpp @@ -625,7 +625,8 @@ namespace xo { #endif void - DExpectExprSsm::visit_gco_children(obj) noexcept + DExpectExprSsm::visit_gco_children(VisitReason, + obj) noexcept { // all members POD, skip } diff --git a/src/reader2/DExpectFormalArgSsm.cpp b/src/reader2/DExpectFormalArgSsm.cpp index 7a529983..f1bdd81d 100644 --- a/src/reader2/DExpectFormalArgSsm.cpp +++ b/src/reader2/DExpectFormalArgSsm.cpp @@ -265,7 +265,8 @@ namespace xo { } void - DExpectFormalArgSsm::visit_gco_children(obj) noexcept + DExpectFormalArgSsm::visit_gco_children(VisitReason, + obj) noexcept { static_assert(!DUniqueString::is_gc_eligible()); } diff --git a/src/reader2/DExpectFormalArglistSsm.cpp b/src/reader2/DExpectFormalArglistSsm.cpp index 6cbf199a..6d68a610 100644 --- a/src/reader2/DExpectFormalArglistSsm.cpp +++ b/src/reader2/DExpectFormalArglistSsm.cpp @@ -358,9 +358,10 @@ namespace xo { } void - DExpectFormalArglistSsm::visit_gco_children(obj gc) noexcept + DExpectFormalArglistSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&argl_); + gc.visit_child(reason, &argl_); } } /*namespace scm*/ diff --git a/src/reader2/DExpectListTypeSsm.cpp b/src/reader2/DExpectListTypeSsm.cpp index 001ff254..e94e299b 100644 --- a/src/reader2/DExpectListTypeSsm.cpp +++ b/src/reader2/DExpectListTypeSsm.cpp @@ -204,9 +204,10 @@ namespace xo { } void - DExpectListTypeSsm::visit_gco_children(obj gc) noexcept + DExpectListTypeSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&elt_type_); + gc.visit_poly_child(reason, &elt_type_); } } /*namespace scm*/ diff --git a/src/reader2/DExpectQArraySsm.cpp b/src/reader2/DExpectQArraySsm.cpp index 9e281f8c..97e68228 100644 --- a/src/reader2/DExpectQArraySsm.cpp +++ b/src/reader2/DExpectQArraySsm.cpp @@ -220,9 +220,10 @@ namespace xo { refrtag("array", array_pr)); } void - DExpectQArraySsm::visit_gco_children(obj gc) noexcept + DExpectQArraySsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&array_); + gc.visit_child(reason, &array_); } } diff --git a/src/reader2/DExpectQDictSsm.cpp b/src/reader2/DExpectQDictSsm.cpp index 9839ffd2..4a34d19a 100644 --- a/src/reader2/DExpectQDictSsm.cpp +++ b/src/reader2/DExpectQDictSsm.cpp @@ -267,10 +267,11 @@ namespace xo { void - DExpectQDictSsm::visit_gco_children(obj gc) noexcept + DExpectQDictSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&key_); - gc.visit_child(&dict_); + gc.visit_child(reason, &key_); + gc.visit_child(reason, &dict_); } } /*namespace scm*/ diff --git a/src/reader2/DExpectQListSsm.cpp b/src/reader2/DExpectQListSsm.cpp index 965351c3..5a570caa 100644 --- a/src/reader2/DExpectQListSsm.cpp +++ b/src/reader2/DExpectQListSsm.cpp @@ -215,10 +215,11 @@ namespace xo { refrtag("list", list_pr)); } void - DExpectQListSsm::visit_gco_children(obj gc) noexcept + DExpectQListSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&start_); - gc.visit_child(&end_); + gc.visit_child(reason, &start_); + gc.visit_child(reason, &end_); } } diff --git a/src/reader2/DExpectQLiteralSsm.cpp b/src/reader2/DExpectQLiteralSsm.cpp index c49cf565..5265aeb7 100644 --- a/src/reader2/DExpectQLiteralSsm.cpp +++ b/src/reader2/DExpectQLiteralSsm.cpp @@ -256,7 +256,7 @@ namespace xo { refrtag("expect", this->get_expect_str())); } void - DExpectQLiteralSsm::visit_gco_children(obj) noexcept + DExpectQLiteralSsm::visit_gco_children(VisitReason, obj) noexcept { // cxl_on_rightparen_, cxl_on_rightbracket_: POD, skip } diff --git a/src/reader2/DExpectSymbolSsm.cpp b/src/reader2/DExpectSymbolSsm.cpp index fa1372b1..6847a776 100644 --- a/src/reader2/DExpectSymbolSsm.cpp +++ b/src/reader2/DExpectSymbolSsm.cpp @@ -146,7 +146,8 @@ namespace xo { ); } void - DExpectSymbolSsm::visit_gco_children(obj) noexcept + DExpectSymbolSsm::visit_gco_children(VisitReason, + obj) noexcept { // no gc-aware members } diff --git a/src/reader2/DExpectTypeSsm.cpp b/src/reader2/DExpectTypeSsm.cpp index 47cc5a6c..7a5d55a3 100644 --- a/src/reader2/DExpectTypeSsm.cpp +++ b/src/reader2/DExpectTypeSsm.cpp @@ -198,7 +198,8 @@ namespace xo { } void - DExpectTypeSsm::visit_gco_children(obj) noexcept + DExpectTypeSsm::visit_gco_children(VisitReason, + obj) noexcept { // corrected_: POD, skip } diff --git a/src/reader2/DGlobalEnv.cpp b/src/reader2/DGlobalEnv.cpp index 8491c60b..b1eecf37 100644 --- a/src/reader2/DGlobalEnv.cpp +++ b/src/reader2/DGlobalEnv.cpp @@ -114,10 +114,11 @@ namespace xo { } void - DGlobalEnv::visit_gco_children(obj gc) noexcept + DGlobalEnv::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&symtab_); - gc.visit_child(&values_); + gc.visit_child(reason, &symtab_); + gc.visit_child(reason, &values_); } // ----- APrintable facet ----- diff --git a/src/reader2/DIfElseSsm.cpp b/src/reader2/DIfElseSsm.cpp index f4fd4f88..5efd9289 100644 --- a/src/reader2/DIfElseSsm.cpp +++ b/src/reader2/DIfElseSsm.cpp @@ -510,9 +510,10 @@ namespace xo { } void - DIfElseSsm::visit_gco_children(obj gc) noexcept + DIfElseSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&if_expr_); + gc.visit_poly_child(reason, &if_expr_); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader2/DLambdaSsm.cpp b/src/reader2/DLambdaSsm.cpp index f0fed420..e39e530b 100644 --- a/src/reader2/DLambdaSsm.cpp +++ b/src/reader2/DLambdaSsm.cpp @@ -471,15 +471,16 @@ namespace xo { } void - DLambdaSsm::visit_gco_children(obj gc) noexcept + DLambdaSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&local_symtab_); + gc.visit_child(reason, &local_symtab_); // explicit_return_td not gcobject // lambda_td not gcobject - gc.visit_poly_child(&body_); - gc.visit_poly_child(&parent_symtab_); + gc.visit_poly_child(reason, &body_); + gc.visit_poly_child(reason, &parent_symtab_); } } /*namespace scm*/ diff --git a/src/reader2/DParenSsm.cpp b/src/reader2/DParenSsm.cpp index 82320cb6..a832bd15 100644 --- a/src/reader2/DParenSsm.cpp +++ b/src/reader2/DParenSsm.cpp @@ -459,9 +459,10 @@ namespace xo { } void - DParenSsm::visit_gco_children(obj gc) noexcept + DParenSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&expr_); + gc.visit_poly_child(reason, &expr_); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader2/DProgressSsm.cpp b/src/reader2/DProgressSsm.cpp index 04c87fac..00ce5f61 100644 --- a/src/reader2/DProgressSsm.cpp +++ b/src/reader2/DProgressSsm.cpp @@ -1244,10 +1244,11 @@ case optype::op_assign: } void - DProgressSsm::visit_gco_children(obj gc) noexcept + DProgressSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&lhs_); - gc.visit_poly_child(&rhs_); + gc.visit_poly_child(reason, &lhs_); + gc.visit_poly_child(reason, &rhs_); } } /*namespace scm*/ diff --git a/src/reader2/DQuoteSsm.cpp b/src/reader2/DQuoteSsm.cpp index cbbedc73..af5d08e3 100644 --- a/src/reader2/DQuoteSsm.cpp +++ b/src/reader2/DQuoteSsm.cpp @@ -212,9 +212,10 @@ namespace xo { } void - DQuoteSsm::visit_gco_children(obj gc) noexcept + DQuoteSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&expr_); + gc.visit_poly_child(reason, &expr_); } } /*namespace scm*/ diff --git a/src/reader2/DSchematikaParser.cpp b/src/reader2/DSchematikaParser.cpp index fc71d12f..c1a92c5b 100644 --- a/src/reader2/DSchematikaParser.cpp +++ b/src/reader2/DSchematikaParser.cpp @@ -197,9 +197,10 @@ namespace xo { } void - DSchematikaParser::visit_gco_children(obj gc) noexcept + DSchematikaParser::visit_gco_children(VisitReason reason, + obj gc) noexcept { - psm_.visit_gco_children(gc); + psm_.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/DSequenceSsm.cpp b/src/reader2/DSequenceSsm.cpp index a6d4013b..c3517065 100644 --- a/src/reader2/DSequenceSsm.cpp +++ b/src/reader2/DSequenceSsm.cpp @@ -258,9 +258,10 @@ namespace xo { } void - DSequenceSsm::visit_gco_children(obj gc) noexcept + DSequenceSsm::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_child(&seq_expr_); + gc.visit_child(reason, &seq_expr_); } } /*namespace scm*/ diff --git a/src/reader2/DToplevelSeqSsm.cpp b/src/reader2/DToplevelSeqSsm.cpp index e660f780..cab947b1 100644 --- a/src/reader2/DToplevelSeqSsm.cpp +++ b/src/reader2/DToplevelSeqSsm.cpp @@ -518,7 +518,7 @@ namespace xo { refrtag("seqtype", seqtype_)); } void - DToplevelSeqSsm::visit_gco_children(obj) noexcept + DToplevelSeqSsm::visit_gco_children(VisitReason, obj) noexcept { // seqtype_: POD, skip } diff --git a/src/reader2/ISyntaxStateMachine_Any.cpp b/src/reader2/ISyntaxStateMachine_Any.cpp index a260bdc9..e20b42f6 100644 --- a/src/reader2/ISyntaxStateMachine_Any.cpp +++ b/src/reader2/ISyntaxStateMachine_Any.cpp @@ -96,7 +96,7 @@ ISyntaxStateMachine_Any::on_quoted_literal(Opaque, obj, ParserStateMa } auto -ISyntaxStateMachine_Any::visit_gco_children(Opaque, obj) -> void +ISyntaxStateMachine_Any::visit_gco_children(Opaque, VisitReason, obj) -> void { _fatal(); } diff --git a/src/reader2/ISyntaxStateMachine_DExpectExprSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectExprSsm.cpp index 0ecc4e24..0d6146e4 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectExprSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectExprSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectExprSsm::visit_gco_children(DExpectExprSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectExprSsm::visit_gco_children(DExpectExprSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectFormalArglistSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectFormalArglistSsm.cpp index 4db6a480..77bf5f55 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectFormalArglistSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectFormalArglistSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectFormalArglistSsm::visit_gco_children(DExpectFormalArglistSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectFormalArglistSsm::visit_gco_children(DExpectFormalArglistSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectQArraySsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectQArraySsm.cpp index ea8b14cc..2eb6f6b5 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectQArraySsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectQArraySsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectQArraySsm::visit_gco_children(DExpectQArraySsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectQArraySsm::visit_gco_children(DExpectQArraySsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectQListSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectQListSsm.cpp index 363f9646..b0f89a2d 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectQListSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectQListSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectQListSsm::visit_gco_children(DExpectQListSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectQListSsm::visit_gco_children(DExpectQListSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectQLiteralSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectQLiteralSsm.cpp index 61e15926..69f17c50 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectQLiteralSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectQLiteralSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectQLiteralSsm::visit_gco_children(DExpectQLiteralSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectQLiteralSsm::visit_gco_children(DExpectQLiteralSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectSymbolSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectSymbolSsm.cpp index c1331ceb..ea2b7a0d 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectSymbolSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectSymbolSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectSymbolSsm::visit_gco_children(DExpectSymbolSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectSymbolSsm::visit_gco_children(DExpectSymbolSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DExpectTypeSsm.cpp b/src/reader2/ISyntaxStateMachine_DExpectTypeSsm.cpp index 8daed04c..e107f011 100644 --- a/src/reader2/ISyntaxStateMachine_DExpectTypeSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DExpectTypeSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectTypeSsm::visit_gco_children(DExpectTypeSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectTypeSsm::visit_gco_children(DExpectTypeSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DParenSsm.cpp b/src/reader2/ISyntaxStateMachine_DParenSsm.cpp index 42a199cb..f67e77c8 100644 --- a/src/reader2/ISyntaxStateMachine_DParenSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DParenSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DParenSsm::visit_gco_children(DParenSsm & self, obj gc) -> void + ISyntaxStateMachine_DParenSsm::visit_gco_children(DParenSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DProgressSsm.cpp b/src/reader2/ISyntaxStateMachine_DProgressSsm.cpp index 9c5ad07d..5ad51fe2 100644 --- a/src/reader2/ISyntaxStateMachine_DProgressSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DProgressSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DProgressSsm::visit_gco_children(DProgressSsm & self, obj gc) -> void + ISyntaxStateMachine_DProgressSsm::visit_gco_children(DProgressSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp b/src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp index a6375288..8dff7fa0 100644 --- a/src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DSequenceSsm::visit_gco_children(DSequenceSsm & self, obj gc) -> void + ISyntaxStateMachine_DSequenceSsm::visit_gco_children(DSequenceSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ISyntaxStateMachine_DToplevelSeqSsm.cpp b/src/reader2/ISyntaxStateMachine_DToplevelSeqSsm.cpp index 47788590..ba17482f 100644 --- a/src/reader2/ISyntaxStateMachine_DToplevelSeqSsm.cpp +++ b/src/reader2/ISyntaxStateMachine_DToplevelSeqSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DToplevelSeqSsm::visit_gco_children(DToplevelSeqSsm & self, obj gc) -> void + ISyntaxStateMachine_DToplevelSeqSsm::visit_gco_children(DToplevelSeqSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/ParserResult.cpp b/src/reader2/ParserResult.cpp index 609f204f..bb3d4034 100644 --- a/src/reader2/ParserResult.cpp +++ b/src/reader2/ParserResult.cpp @@ -106,12 +106,13 @@ namespace xo { } void - ParserResult::visit_gco_children(obj gc) noexcept + ParserResult::visit_gco_children(VisitReason reason, + obj gc) noexcept { // {result_type_, error_src_fn_}: pod, ignore - gc.visit_poly_child(&result_expr_); - gc.visit_child(&error_description_); + gc.visit_poly_child(reason, &result_expr_); + gc.visit_child(reason, &error_description_); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader2/ParserStack.cpp b/src/reader2/ParserStack.cpp index 721b19b4..83d21df1 100644 --- a/src/reader2/ParserStack.cpp +++ b/src/reader2/ParserStack.cpp @@ -90,14 +90,15 @@ namespace xo { } void - ParserStack::visit_gco_children(obj gc) noexcept + ParserStack::visit_gco_children(VisitReason reason, + obj gc) noexcept { for (ParserStack * target = this; target; target = target->parent_) { // ParserStack::ckp: skip, POD if (target->ssm_) - target->ssm_.visit_gco_children(gc); + target->ssm_.visit_gco_children(reason, gc); } } diff --git a/src/reader2/ParserStateMachine.cpp b/src/reader2/ParserStateMachine.cpp index 6bec1833..71028ebe 100644 --- a/src/reader2/ParserStateMachine.cpp +++ b/src/reader2/ParserStateMachine.cpp @@ -907,7 +907,8 @@ namespace xo { #endif void - ParserStateMachine::visit_gco_children(obj gc) noexcept + ParserStateMachine::visit_gco_children(VisitReason reason, + obj gc) noexcept { //scope log(XO_DEBUG(true)); @@ -916,23 +917,23 @@ namespace xo { //log && log("forward stack_", xtag("addr", stack_)); if (stack_) { - stack_->visit_gco_children(gc); + stack_->visit_gco_children(reason, gc); } // static_assert(!expr_alloc_.is_gc_eligible()); // static_assert(!aux_alloc_.is_gc_eligible()); //log && log("global_symtab_", xtag("addr", global_symtab_.data())); - gc.visit_child(&global_symtab_); + gc.visit_child(reason, &global_symtab_); //log && log("local_symtab_", xtag("addr", local_symtab_.data())); - gc.visit_child(&local_symtab_); + gc.visit_child(reason, &local_symtab_); //log && log("global_env_", xtag("addr", global_env_.data())); - gc.visit_child(&global_env_); + gc.visit_child(reason, &global_env_); //log && log("result_"); - result_.visit_gco_children(gc); + result_.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/SchematikaReader.cpp b/src/reader2/SchematikaReader.cpp index c9405916..168f562a 100644 --- a/src/reader2/SchematikaReader.cpp +++ b/src/reader2/SchematikaReader.cpp @@ -10,9 +10,10 @@ namespace xo { namespace scm { void - ReaderResult::visit_gco_children(obj gc) noexcept + ReaderResult::visit_gco_children(VisitReason reason, + obj gc) noexcept { - gc.visit_poly_child(&expr_); + gc.visit_poly_child(reason, &expr_); } // ----- SchematikaReader ----- @@ -208,12 +209,13 @@ namespace xo { } void - SchematikaReader::visit_gco_children(obj gc) noexcept + SchematikaReader::visit_gco_children(VisitReason reason, + obj gc) noexcept { // tokenizer doesn't contain any gc-aware pointers. - parser_.visit_gco_children(gc); - result_.visit_gco_children(gc); + parser_.visit_gco_children(reason, gc); + result_.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/IGCObject_DGlobalEnv.cpp b/src/reader2/facet/IGCObject_DGlobalEnv.cpp index 9a2802ae..72c9b065 100644 --- a/src/reader2/facet/IGCObject_DGlobalEnv.cpp +++ b/src/reader2/facet/IGCObject_DGlobalEnv.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DGlobalEnv::visit_gco_children(DGlobalEnv & self, obj fn) noexcept -> void + IGCObject_DGlobalEnv::visit_gco_children(DGlobalEnv & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/reader2/facet/IGCObject_DSchematikaParser.cpp b/src/reader2/facet/IGCObject_DSchematikaParser.cpp index f1778d5a..7586fc25 100644 --- a/src/reader2/facet/IGCObject_DSchematikaParser.cpp +++ b/src/reader2/facet/IGCObject_DSchematikaParser.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DSchematikaParser::visit_gco_children(DSchematikaParser & self, obj fn) noexcept -> void + IGCObject_DSchematikaParser::visit_gco_children(DSchematikaParser & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DApplySsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DApplySsm.cpp index 01f685fe..baba1c7f 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DApplySsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DApplySsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DApplySsm::visit_gco_children(DApplySsm & self, obj gc) -> void + ISyntaxStateMachine_DApplySsm::visit_gco_children(DApplySsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp index 886155c0..5fe37536 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DDefineSsm::visit_gco_children(DDefineSsm & self, obj gc) -> void + ISyntaxStateMachine_DDefineSsm::visit_gco_children(DDefineSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DDeftypeSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DDeftypeSsm.cpp index 874849ff..a88b1005 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DDeftypeSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DDeftypeSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DDeftypeSsm::visit_gco_children(DDeftypeSsm & self, obj gc) -> void + ISyntaxStateMachine_DDeftypeSsm::visit_gco_children(DDeftypeSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DExpectFormalArgSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DExpectFormalArgSsm.cpp index 85f8dd7a..c0adc804 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DExpectFormalArgSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DExpectFormalArgSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectFormalArgSsm::visit_gco_children(DExpectFormalArgSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectFormalArgSsm::visit_gco_children(DExpectFormalArgSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DExpectListTypeSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DExpectListTypeSsm.cpp index d3b292ad..1306e061 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DExpectListTypeSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DExpectListTypeSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectListTypeSsm::visit_gco_children(DExpectListTypeSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectListTypeSsm::visit_gco_children(DExpectListTypeSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DExpectQDictSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DExpectQDictSsm.cpp index 9f4d74cc..5cc75b00 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DExpectQDictSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DExpectQDictSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DExpectQDictSsm::visit_gco_children(DExpectQDictSsm & self, obj gc) -> void + ISyntaxStateMachine_DExpectQDictSsm::visit_gco_children(DExpectQDictSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DIfElseSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DIfElseSsm.cpp index 68034ba4..37a20363 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DIfElseSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DIfElseSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DIfElseSsm::visit_gco_children(DIfElseSsm & self, obj gc) -> void + ISyntaxStateMachine_DIfElseSsm::visit_gco_children(DIfElseSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DLambdaSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DLambdaSsm.cpp index 88e52100..08754857 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DLambdaSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DLambdaSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DLambdaSsm::visit_gco_children(DLambdaSsm & self, obj gc) -> void + ISyntaxStateMachine_DLambdaSsm::visit_gco_children(DLambdaSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/ diff --git a/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp index 39d26414..b4ee1261 100644 --- a/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp @@ -78,9 +78,9 @@ namespace xo { self.on_quoted_literal(lit, p_psm); } auto - ISyntaxStateMachine_DQuoteSsm::visit_gco_children(DQuoteSsm & self, obj gc) -> void + ISyntaxStateMachine_DQuoteSsm::visit_gco_children(DQuoteSsm & self, VisitReason reason, obj gc) -> void { - self.visit_gco_children(gc); + self.visit_gco_children(reason, gc); } } /*namespace scm*/