Implementation of Pool that uses a list of free chunks.
The first sizeof(void*) bytes of each free chunk is used to store a pointer to the next free chunk, or null for the last free chunk.
Public Member Functions | |
| ChunkPool (ByteSpan region, const Layout &layout) | |
Public Member Functions inherited from pw::allocator::Pool | |
| constexpr const Layout & | layout () const |
| void * | Allocate () |
| template<typename T , int &... kExplicitGuard, typename... Args> | |
| std::enable_if_t<!std::is_array_v< T >, T * > | New (Args &&... args) |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>> | |
| std::enable_if_t< pw::is_bounded_array_v< T >, ElementType * > | New () |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>> | |
| std::enable_if_t< pw::is_unbounded_array_v< T >, ElementType * > | New () |
| template<typename T , int &... kExplicitGuard, typename... Args> | |
| std::enable_if_t<!std::is_array_v< T >, UniquePtr< T > > | MakeUnique (Args &&... args) |
| template<typename T > | |
| std::enable_if_t< pw::is_bounded_array_v< T >, UniquePtr< T > > | MakeUnique () |
| template<typename T > | |
| std::enable_if_t< pw::is_unbounded_array_v< T >, UniquePtr< T > > | MakeUnique () |
Public Member Functions inherited from pw::Deallocator | |
| constexpr const Capabilities & | capabilities () const |
| constexpr bool | HasCapability (Capability capability) const |
| Returns whether a given capability is enabled for this object. | |
| void | Deallocate (void *ptr) |
| template<typename ElementType > | |
| void | DeleteArray (ElementType *ptr, size_t count) |
| StatusWithSize | GetCapacity () const |
| bool | IsEqual (const Deallocator &other) const |
| template<typename T , int &... kExplicitGuard, std::enable_if_t<!std::is_array_v< T >, int > = 0> | |
| void | Delete (T *ptr) |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_bounded_array_v< T >, int > = 0> | |
| void | Delete (ElementType *ptr) |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_unbounded_array_v< T >, int > = 0> | |
| void | Delete (ElementType *ptr, size_t count) |
Static Public Attributes | |
| static constexpr Capabilities | kCapabilities |
| static constexpr size_t | kMinSize = sizeof(void*) |
| static constexpr size_t | kMinAlignment = alignof(void*) |
Protected Member Functions | |
| void * | DoAllocate () override |
| void | DoDeallocate (void *ptr) override |
| Result< Layout > | DoGetInfo (InfoType info_type, const void *ptr) const override |
Protected Member Functions inherited from pw::allocator::Pool | |
| constexpr | Pool (const Capabilities &capabilities, const Layout &layout) |
| virtual void * | DoAllocate ()=0 |
Protected Member Functions inherited from pw::Deallocator | |
| constexpr | Deallocator ()=default |
| TODO(b/326509341): Remove when downstream consumers migrate. | |
| constexpr | Deallocator (const Capabilities &capabilities) |
Additional Inherited Members | |
Public Types inherited from pw::Deallocator | |
| using | Capabilities = allocator::Capabilities |
| using | Capability = allocator::Capability |
| using | Layout = allocator::Layout |
Static Protected Attributes inherited from pw::Deallocator | |
| template<typename T > | |
| static constexpr bool | is_bounded_array_v = ::pw::is_bounded_array_v<T> |
| template<typename T > | |
| static constexpr bool | is_unbounded_array_v = ::pw::is_unbounded_array_v<T> |
Construct a Pool that allocates from a region of memory.
| region | The memory to allocate from. Must be large enough to allocate at least one chunk with the given layout. |
| layout | The size and alignment of the memory to be returned from this pool. |
|
overrideprotectedvirtual |
Returns a chunk of memory with this object's fixed layout.
Like pw::allocator::Allocate, returns null if memory is exhausted.
| The | allocated memory. |
Implements pw::allocator::Pool.
|
overrideprotected |
Releases a previously-allocated block of memory.
The given pointer must have been previously provided by this memory resource; otherwise the behavior is undefined.
| [in] | ptr | Pointer to previously-allocated memory. |
|
overrideprotected |
|
staticconstexpr |