xo-gc stack: coverage improvement + related tidying
This commit is contained in:
parent
9b84ef8a7f
commit
42e09dd21e
8 changed files with 130 additions and 47 deletions
|
|
@ -35,6 +35,8 @@ namespace xo {
|
|||
|
||||
// builtin methods
|
||||
typeseq _typeseq() const noexcept override { return s_typeseq; }
|
||||
|
||||
// LCOV_EXCL_START
|
||||
void _drop(Opaque) const noexcept override { _fatal(); }
|
||||
|
||||
// const methods
|
||||
|
|
@ -58,9 +60,6 @@ namespace xo {
|
|||
[[noreturn]] value_type alloc(Opaque, typeseq, std::size_t) const override { _fatal(); }
|
||||
[[noreturn]] value_type super_alloc(Opaque, typeseq, std::size_t) const override { _fatal(); }
|
||||
[[noreturn]] value_type sub_alloc(Opaque, std::size_t, bool) const override { _fatal(); }
|
||||
#ifdef OBSOLETE
|
||||
[[noreturn]] value_type alloc_copy(Opaque, value_type) const override { _fatal(); }
|
||||
#endif
|
||||
[[noreturn]] void clear(Opaque) const override { _fatal(); }
|
||||
[[noreturn]] void barrier_assign_aux(Opaque,
|
||||
void *,
|
||||
|
|
@ -69,6 +68,7 @@ namespace xo {
|
|||
|
||||
private:
|
||||
[[noreturn]] static void _fatal();
|
||||
// LCOV_EXCL_STOP
|
||||
|
||||
public:
|
||||
static typeseq s_typeseq;
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ namespace xo {
|
|||
void * parent,
|
||||
AGCObject * lhs_iface, void ** lhs_data,
|
||||
AGCObject * rhs_iface, void * rhs_data);
|
||||
static void destruct_data(DArena &);
|
||||
//static void destruct_data(DArena &);
|
||||
};
|
||||
|
||||
// template <>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public:
|
|||
void * alloc_copy_for(const T * src) noexcept {
|
||||
return O::iface()->alloc_copy(O::data(), (std::byte *)const_cast<T *>(src));
|
||||
}
|
||||
|
||||
|
||||
/** convenience template for move-constructible T (this is common) **/
|
||||
template <typename T>
|
||||
T * std_move_for(T * src) noexcept {
|
||||
|
|
@ -62,28 +62,28 @@ public:
|
|||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
/** forward faceted object pointer in place. Defined in GCObject.hpp to avoid #include cycle **/
|
||||
template <typename DRepr>
|
||||
void forward_inplace(obj<AGCObject,DRepr> * p_obj);
|
||||
|
||||
|
||||
/** another convenience template for forwarding.
|
||||
* Defined in RGCObject.hpp to avoid #include cycle.
|
||||
**/
|
||||
template <typename DRepr>
|
||||
void forward_inplace(DRepr ** pp_repr);
|
||||
|
||||
|
||||
/** convenience template where pointer requires pivot **/
|
||||
template <typename AFacet, typename DRepr>
|
||||
requires (!std::is_same_v<AFacet, AGCObject>)
|
||||
void forward_pivot_inplace(obj<AFacet,DRepr> * p_obj);
|
||||
|
||||
|
||||
/** add root @p p_root **/
|
||||
template<typename DRepr>
|
||||
void add_gc_root(obj<AGCObject, DRepr> * p_root) {
|
||||
O::iface()->add_gc_root_poly(O::data(), (obj<AGCObject> *)p_root);
|
||||
}
|
||||
|
||||
|
||||
/** remove root @p p_root **/
|
||||
template <typename DRepr>
|
||||
void remove_gc_root(obj<AGCObject, DRepr> * p_root) {
|
||||
|
|
@ -91,6 +91,7 @@ public:
|
|||
}
|
||||
|
||||
// builtin methods
|
||||
bool _has_null_vptr() const noexcept { return O::iface()->_has_null_vptr(); }
|
||||
typeseq _typeseq() const noexcept { return O::iface()->_typeseq(); }
|
||||
void _drop() const noexcept { O::iface()->_drop(O::data()); }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue