diff --git a/common/hashmap.h b/common/hashmap.h index f794fbe4056..36e032625ea 100644 --- a/common/hashmap.h +++ b/common/hashmap.h @@ -107,19 +107,19 @@ public: #ifdef USE_HASHMAP_MEMORY_POOL - MemoryPool _nodePool; + MemoryPool _nodePool; Node *allocNode(const Key& key) { - void* mem = _nodePool.malloc(); - return new (mem) Node(key); + void* mem = _nodePool.malloc(); + return new (mem) Node(key); } void freeNode(Node* node) { - node->~Node(); - _nodePool.free(node); + node->~Node(); + _nodePool.free(node); } #else - Node* allocNode(const Key& key) { + Node* allocNode(const Key& key) { return new Node(key); } @@ -352,9 +352,9 @@ public: template HashMap::HashMap() : #ifdef USE_HASHMAP_MEMORY_POOL - _nodePool(sizeof(Node)), + _nodePool(sizeof(Node)), #endif - _defaultVal() { + _defaultVal() { _arrsize = nextTableSize(0); _arr = new Node *[_arrsize]; assert(_arr != NULL); @@ -376,9 +376,9 @@ HashMap::HashMap() : template HashMap::HashMap(const HM_t& map) : #ifdef USE_HASHMAP_MEMORY_POOL - _nodePool(sizeof(Node)), + _nodePool(sizeof(Node)), #endif - _defaultVal() { + _defaultVal() { assign(map); } diff --git a/common/memorypool.cpp b/common/memorypool.cpp index efce832e3d2..6eab758c113 100644 --- a/common/memorypool.cpp +++ b/common/memorypool.cpp @@ -32,92 +32,91 @@ namespace Common static const size_t CHUNK_PAGE_SIZE = 32; void* MemoryPool::allocPage() { - void* result = ::malloc(CHUNK_PAGE_SIZE * _chunkSize); - _pages.push_back(result); - void* current = result; - for(size_t i=1; i= page) && (ptr < (char*)page + CHUNK_PAGE_SIZE * _chunkSize); + return (ptr >= page) && (ptr < (char*)page + CHUNK_PAGE_SIZE * _chunkSize); } void MemoryPool::freeUnusedPages() { - //std::sort(_pages.begin(), _pages.end()); - Array numberOfFreeChunksPerPage; - numberOfFreeChunksPerPage.resize(_pages.size()); - for(size_t i=0; i numberOfFreeChunksPerPage; + numberOfFreeChunksPerPage.resize(_pages.size()); + for(size_t i=0; i +#include "common/scummsys.h" #include "common/array.h" namespace Common @@ -34,24 +34,24 @@ namespace Common class MemoryPool { - private: - MemoryPool(const MemoryPool&); - MemoryPool& operator=(const MemoryPool&); +private: + MemoryPool(const MemoryPool&); + MemoryPool& operator=(const MemoryPool&); - size_t _chunkSize; - Array _pages; - void* _next; + size_t _chunkSize; + Array _pages; + void* _next; - void* allocPage(); - bool isPointerInPage(void* ptr, void* page); - public: - MemoryPool(size_t chunkSize); - ~MemoryPool(); + void* allocPage(); + bool isPointerInPage(void* ptr, void* page); +public: + MemoryPool(size_t chunkSize); + ~MemoryPool(); - void* malloc(); - void free(void* ptr); + void* malloc(); + void free(void* ptr); - void freeUnusedPages(); + void freeUnusedPages(); }; }