16#ifndef COOK_MEM_ARENA_H
17#define COOK_MEM_ARENA_H
97 std::size_t
remain =
reinterpret_cast<std::uintptr_t
> (
ptr) &
mask;
101 m_page =
static_cast<char*
> (
ptr) +
inc;
103 size = (size >
inc) ? size -
inc : 0;
124 if (m_used || size > m_size)
145 if (!m_used ||
ptr != m_page || size != m_size)
182template<
class Arena,
class TreeType = PtrRBTree>
226 void*
seg = m_tree.remove(size);
231 return m_arena.getSegment(size);
249 m_tree.add (
ptr, size);
262 std::size_t size = 0;
263 void*
seg = m_tree.remove (size);
268 m_arena.freeSegment (
seg, size);
void * getSegment(std::size_t &size)
Definition arena.h:224
TreeType PtrTreeType
Definition arena.h:187
CachedArena(Arena &arena)
Definition arena.h:195
bool freeSegment(void *ptr, std::size_t size)
Definition arena.h:247
void releaseAll()
Definition arena.h:258
~CachedArena()
Definition arena.h:204
void releaseAll()
Definition arena.h:158
FixedArena(void *ptr, std::size_t size)
Definition arena.h:93
void * getSegment(std::size_t &size)
Definition arena.h:122
bool freeSegment(void *ptr, std::size_t size)
Definition arena.h:143
virtual bool freeSegment(void *ptr, std::size_t size)=0
virtual void releaseAll()=0
virtual void * getSegment(std::size_t &size)=0
Definition allocator.h:39
Definition allocator.h:29
const std::size_t ALLOCATION_ALIGNMENT
Definition config.h:36