diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-01-12 19:46:40 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-01-12 19:48:51 +0000 |
| commit | e8b80705363e736940b2487f7158b4a5d21ddd55 (patch) | |
| tree | 73afa3f2ad4ddbf8f4c3c99b8e4fd44d71bd8dbe /src/memory.hh | |
| parent | 19797ae8d6c29b1b89f78e826b05789d356336d6 (diff) | |
refactor slighly memory domain handling
Diffstat (limited to 'src/memory.hh')
| -rw-r--r-- | src/memory.hh | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/memory.hh b/src/memory.hh index 670da739..7da3486e 100644 --- a/src/memory.hh +++ b/src/memory.hh @@ -20,17 +20,32 @@ enum class MemoryDomain Mapping, Commands, Hooks, - WordDB + WordDB, + Count }; -template<MemoryDomain domain> -struct UsedMemory +inline const char* domain_name(MemoryDomain domain) { - static size_t byte_count; -}; + switch (domain) + { + case MemoryDomain::Undefined: return "Undefined"; + case MemoryDomain::String: return "String"; + case MemoryDomain::InternedString: return "InternedString"; + case MemoryDomain::BufferContent: return "BufferContent"; + case MemoryDomain::BufferMeta: return "BufferMeta"; + case MemoryDomain::Options: return "Options"; + case MemoryDomain::Highlight: return "Highlight"; + case MemoryDomain::Mapping: return "Mapping"; + case MemoryDomain::Commands: return "Commands"; + case MemoryDomain::Hooks: return "Hooks"; + case MemoryDomain::WordDB: return "WordDB"; + case MemoryDomain::Count: break; + } + kak_assert(false); + return ""; +} -template<MemoryDomain domain> -size_t UsedMemory<domain>::byte_count = 0; +extern size_t domain_allocated_bytes[(size_t)MemoryDomain::Count]; template<typename T, MemoryDomain domain> struct Allocator @@ -54,15 +69,15 @@ struct Allocator T* allocate(size_t n) { size_t size = sizeof(T) * n; - UsedMemory<domain>::byte_count += size; + domain_allocated_bytes[(int)domain] += size; return reinterpret_cast<T*>(malloc(size)); } void deallocate(T* ptr, size_t n) { size_t size = sizeof(T) * n; - kak_assert(UsedMemory<domain>::byte_count >= size); - UsedMemory<domain>::byte_count -= size; + kak_assert(domain_allocated_bytes[(int)domain] >= size); + domain_allocated_bytes[(int)domain] -= size; free(ptr); } }; |
