Memory pool vectors (DVector) have been enormously simplified in code, and renamed to PoolVector
This commit is contained in:
@ -30,3 +30,44 @@
|
||||
|
||||
Mutex* dvector_lock=NULL;
|
||||
|
||||
PoolAllocator *MemoryPool::memory_pool=NULL;
|
||||
uint8_t *MemoryPool::pool_memory=NULL;
|
||||
size_t *MemoryPool::pool_size=NULL;
|
||||
|
||||
|
||||
MemoryPool::Alloc *MemoryPool::allocs=NULL;
|
||||
MemoryPool::Alloc *MemoryPool::free_list=NULL;
|
||||
uint32_t MemoryPool::alloc_count=0;
|
||||
uint32_t MemoryPool::allocs_used=0;
|
||||
Mutex *MemoryPool::alloc_mutex=NULL;
|
||||
|
||||
size_t MemoryPool::total_memory=0;
|
||||
size_t MemoryPool::max_memory=0;
|
||||
|
||||
|
||||
void MemoryPool::setup(uint32_t p_max_allocs) {
|
||||
|
||||
allocs = memnew_arr( Alloc, p_max_allocs);
|
||||
alloc_count = p_max_allocs;
|
||||
allocs_used=0;
|
||||
|
||||
for(uint32_t i=0;i<alloc_count-1;i++) {
|
||||
|
||||
allocs[i].free_list=&allocs[i+1];
|
||||
}
|
||||
|
||||
free_list=&allocs[0];
|
||||
|
||||
alloc_mutex = Mutex::create();
|
||||
|
||||
}
|
||||
|
||||
void MemoryPool::cleanup() {
|
||||
|
||||
memdelete_arr(allocs);
|
||||
memdelete(alloc_mutex);
|
||||
|
||||
ERR_EXPLAINC("There are still MemoryPool allocs in use at exit!");
|
||||
ERR_FAIL_COND(allocs_used>0);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user