summaryrefslogtreecommitdiffstats
path: root/source/slang/memory_pool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/memory_pool.cpp')
-rw-r--r--source/slang/memory_pool.cpp52
1 files changed, 0 insertions, 52 deletions
diff --git a/source/slang/memory_pool.cpp b/source/slang/memory_pool.cpp
deleted file mode 100644
index 884c9cfe4..000000000
--- a/source/slang/memory_pool.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "memory_pool.h"
-
-namespace Slang
-{
- const size_t kPoolSegmentSize = 4 << 20; // use 4MB segments
-
- struct MemoryPoolSegment
- {
- unsigned char* data = nullptr;
- size_t allocPtr = 0;
- MemoryPoolSegment* nextSegment = nullptr;
- };
-
- MemoryPool::~MemoryPool()
- {
- while (curSegment)
- {
- auto nxtSegment = curSegment->nextSegment;
- free(curSegment->data);
- delete curSegment;
- curSegment = nxtSegment;
- }
- }
-
- void newSegment(MemoryPool* pool)
- {
- auto seg = new MemoryPoolSegment();
- seg->nextSegment = pool->curSegment;
- seg->data = (unsigned char*)malloc(kPoolSegmentSize);
- pool->curSegment = seg;
- }
-
- void * MemoryPool::alloc(size_t size)
- {
- assert(size < kPoolSegmentSize);
- // ensure there is a segment available
- if (!curSegment)
- newSegment(this);
- if (curSegment->allocPtr + size > kPoolSegmentSize)
- newSegment(this);
- // alloc memory from current segment
- void* rs = curSegment->data + curSegment->allocPtr;
- curSegment->allocPtr += size;
- return rs;
- }
- void * MemoryPool::allocZero(size_t size)
- {
- auto rs = alloc(size);
- memset(rs, 0, size);
- return rs;
- }
-}