mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[kutil] Tracks allocated size in heap allocator
Add a member that keeps track of allocated size to the heap allocator. This isn't exposed, but is handy for debugging.
This commit is contained in:
@@ -64,7 +64,7 @@ private:
|
|||||||
heap_allocator::heap_allocator() : m_next(0), m_size(0) {}
|
heap_allocator::heap_allocator() : m_next(0), m_size(0) {}
|
||||||
|
|
||||||
heap_allocator::heap_allocator(uintptr_t start, size_t size) :
|
heap_allocator::heap_allocator(uintptr_t start, size_t size) :
|
||||||
m_next(start), m_size(size)
|
m_next(start), m_size(size), m_allocated_size(0)
|
||||||
{
|
{
|
||||||
kutil::memset(m_free, 0, sizeof(m_free));
|
kutil::memset(m_free, 0, sizeof(m_free));
|
||||||
}
|
}
|
||||||
@@ -82,6 +82,7 @@ heap_allocator::allocate(size_t length)
|
|||||||
|
|
||||||
mem_header *header = pop_free(size);
|
mem_header *header = pop_free(size);
|
||||||
header->set_used(true);
|
header->set_used(true);
|
||||||
|
m_allocated_size += (1 << size);
|
||||||
return header + 1;
|
return header + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +94,7 @@ heap_allocator::free(void *p)
|
|||||||
mem_header *header = reinterpret_cast<mem_header *>(p);
|
mem_header *header = reinterpret_cast<mem_header *>(p);
|
||||||
header -= 1; // p points after the header
|
header -= 1; // p points after the header
|
||||||
header->set_used(false);
|
header->set_used(false);
|
||||||
|
m_allocated_size -= (1 << header->size());
|
||||||
|
|
||||||
while (header->size() != max_size) {
|
while (header->size() != max_size) {
|
||||||
auto size = header->size();
|
auto size = header->size();
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ protected:
|
|||||||
uintptr_t m_next;
|
uintptr_t m_next;
|
||||||
size_t m_size;
|
size_t m_size;
|
||||||
mem_header *m_free[max_size - min_size + 1];
|
mem_header *m_free[max_size - min_size + 1];
|
||||||
|
size_t m_allocated_size;
|
||||||
|
|
||||||
heap_allocator(const heap_allocator &) = delete;
|
heap_allocator(const heap_allocator &) = delete;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user