37#ifndef OGDF_MEMORY_POOL_NTS
118#ifndef OGDF_MEMORY_POOL_NTS
124#ifndef OGDF_MEMORY_POOL_NTS
160#ifdef OGDF_MEMORY_POOL_NTS
Decalration of System class which provides unified access to system information.
Allocates memory in large chunks for better runtime.
static size_t memoryAllocatedInBlocks()
Returns the total amount of memory (in bytes) allocated from the system.
static void deallocateList(size_t nBytes, void *pHead, void *pTail)
Deallocate a complete list starting at pHead and ending at pTail.
static constexpr size_t TABLE_SIZE
static size_t unguardedMemGlobalFreelist()
static size_t memoryInGlobalFreeList()
Returns the total amount of memory (in bytes) available in the global free lists.
static std::mutex s_mutex
static void defrag()
Defragments the global free lists.
static void * allocate(size_t nBytes)
Allocates memory of size nBytes.
static constexpr size_t MIN_BYTES
static void deallocate(size_t nBytes, void *p)
Deallocates memory at address p which is of size nBytes.
static constexpr size_t BLOCK_SIZE
static PoolElement s_pool[TABLE_SIZE]
Contains allocated but free memory that may be used by all threads. Filled upon exiting a thread that...
static thread_local MemElemPtr s_tp[TABLE_SIZE]
Contains the allocated but free memory for a single thread.
static void cleanup()
Frees all allocated memory.
static void * fillPool(MemElemPtr &pFreeBytes, uint16_t nBytes)
static int slicesPerBlock(uint16_t nBytes, int &nWords)
static MemElemPtr allocateBlock()
static bool checkSize(size_t nBytes)
Returns true iff allocate can be invoked with nBytes.
static size_t memoryInThreadFreeList()
Returns the total amount of memory (in bytes) available in the thread's free lists.
static void makeSlices(MemElemPtr p, int nWords, int nSlices)
static void flushPool()
Flushes all free but allocated bytes (s_tp) to the thread-global list (s_pool) of allocated bytes.
static int slicesPerBlock(uint16_t nBytes)
static BlockChain * s_blocks
Holds all allocated memory independently of whether it is cleared in chunks of size BLOCK_SIZE.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
#define OGDF_SIZEOF_POINTER
The size of a pointer.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.
Basic memory element used to realize a linked list of deallocated memory segments.