123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "dvector.h"
- 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);
- }
|