Memory pool vectors (DVector) have been enormously simplified in code, and renamed to PoolVector

This commit is contained in:
Juan Linietsky
2017-01-07 18:25:37 -03:00
parent 2a38a5eaa8
commit 2ab83e1abb
257 changed files with 2818 additions and 3130 deletions

View File

@ -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);
}