diff --git a/src/aal/aal.h b/src/aal/aal.h index 45669e5..5408723 100644 --- a/src/aal/aal.h +++ b/src/aal/aal.h @@ -200,7 +200,7 @@ namespace snmalloc static_assert(capptr::is_spatial_refinement()); UNUSED(size); - return CapPtr(a.template as_static().unsafe_capptr); + return CapPtr(a.template as_static().unsafe_ptr()); } }; } // namespace snmalloc diff --git a/src/ds/ptrwrap.h b/src/ds/ptrwrap.h index cec1874..8b91a01 100644 --- a/src/ds/ptrwrap.h +++ b/src/ds/ptrwrap.h @@ -235,10 +235,11 @@ namespace snmalloc * summary of its StrictProvenance metadata. */ template - struct CapPtr + class CapPtr { T* unsafe_capptr; + public: /** * nullptr is implicitly constructable at any bounds type */ @@ -358,7 +359,7 @@ namespace snmalloc inline SNMALLOC_FAST_PATH capptr::Alloc capptr_chunk_is_alloc(capptr::ChunkUser p) { - return capptr::Alloc(p.unsafe_capptr); + return capptr::Alloc(p.unsafe_ptr()); } /** @@ -368,7 +369,7 @@ namespace snmalloc */ inline SNMALLOC_FAST_PATH void* capptr_reveal(capptr::Alloc p) { - return p.unsafe_capptr; + return p.unsafe_ptr(); } /** @@ -378,7 +379,7 @@ namespace snmalloc */ inline SNMALLOC_FAST_PATH void* capptr_reveal_wild(capptr::AllocWild p) { - return p.unsafe_capptr; + return p.unsafe_ptr(); } /** @@ -403,7 +404,7 @@ namespace snmalloc return CapPtr< T, typename B::template with_wildness>( - p.unsafe_capptr); + p.unsafe_ptr()); } /** @@ -416,10 +417,11 @@ namespace snmalloc * will expose or consume only CapPtr with the same bounds annotation. */ template - struct AtomicCapPtr + class AtomicCapPtr { std::atomic unsafe_capptr; + public: /** * nullptr is constructable at any bounds type */ @@ -458,7 +460,7 @@ namespace snmalloc CapPtr desired, std::memory_order order = std::memory_order_seq_cst) noexcept { - this->unsafe_capptr.store(desired.unsafe_capptr, order); + this->unsafe_capptr.store(desired.unsafe_ptr(), order); } SNMALLOC_FAST_PATH CapPtr exchange( @@ -466,7 +468,7 @@ namespace snmalloc std::memory_order order = std::memory_order_seq_cst) noexcept { return CapPtr( - this->unsafe_capptr.exchange(desired.unsafe_capptr, order)); + this->unsafe_capptr.exchange(desired.unsafe_ptr(), order)); } SNMALLOC_FAST_PATH bool operator==(const AtomicCapPtr& rhs) const diff --git a/src/pal/pal.h b/src/pal/pal.h index 6e2ef2a..096df25 100644 --- a/src/pal/pal.h +++ b/src/pal/pal.h @@ -85,7 +85,7 @@ namespace snmalloc CapPtr>> capptr_to_user_address_control(CapPtr p) { - return CapPtr>(p.unsafe_capptr); + return CapPtr>(p.unsafe_ptr()); } template< @@ -118,7 +118,7 @@ namespace snmalloc { static_assert( !page_aligned || B::spatial >= capptr::dimension::Spatial::Chunk); - PAL::template zero(p.unsafe_capptr, sz); + PAL::template zero(p.unsafe_ptr(), sz); } static_assert(