mirror of
https://github.com/NixOS/nix.git
synced 2025-11-15 23:12:44 +01:00
Keep some stats
This commit is contained in:
parent
80accdcebe
commit
14f7a60755
2 changed files with 10 additions and 1 deletions
|
|
@ -44,7 +44,10 @@ GC::GC()
|
||||||
|
|
||||||
GC::~GC()
|
GC::~GC()
|
||||||
{
|
{
|
||||||
debug("allocated %d bytes in total", totalSize * WORD_SIZE);
|
printInfo("%d bytes in arenas, %d bytes allocated, %d bytes reclaimed by GC",
|
||||||
|
totalSize * WORD_SIZE,
|
||||||
|
allTimeWordsAllocated * WORD_SIZE,
|
||||||
|
allTimeWordsFreed * WORD_SIZE);
|
||||||
|
|
||||||
size_t n = 0;
|
size_t n = 0;
|
||||||
for (Ptr<Object> * p = frontPtrSentinel->next; p != backPtrSentinel; p = p->next)
|
for (Ptr<Object> * p = frontPtrSentinel->next; p != backPtrSentinel; p = p->next)
|
||||||
|
|
@ -250,6 +253,8 @@ void GC::gc()
|
||||||
|
|
||||||
debug("freed %d bytes in %d dead objects, keeping %d objects",
|
debug("freed %d bytes in %d dead objects, keeping %d objects",
|
||||||
totalWordsFreed * WORD_SIZE, totalObjectsFreed, marked);
|
totalWordsFreed * WORD_SIZE, totalObjectsFreed, marked);
|
||||||
|
|
||||||
|
allTimeWordsFreed += totalWordsFreed;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<size_t, size_t> GC::freeUnmarked(Arena & arena)
|
std::pair<size_t, size_t> GC::freeUnmarked(Arena & arena)
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,9 @@ private:
|
||||||
|
|
||||||
std::array<FreeList, 8> freeLists;
|
std::array<FreeList, 8> freeLists;
|
||||||
|
|
||||||
|
size_t allTimeWordsAllocated = 0;
|
||||||
|
size_t allTimeWordsFreed = 0;
|
||||||
|
|
||||||
Object * allocObject(size_t size)
|
Object * allocObject(size_t size)
|
||||||
{
|
{
|
||||||
assert(size >= 2);
|
assert(size >= 2);
|
||||||
|
|
@ -255,6 +258,7 @@ public:
|
||||||
Ptr<T> alloc(size_t size, const Args & ... args)
|
Ptr<T> alloc(size_t size, const Args & ... args)
|
||||||
{
|
{
|
||||||
auto raw = allocObject(size);
|
auto raw = allocObject(size);
|
||||||
|
allTimeWordsAllocated += size;
|
||||||
return new (raw) T(args...);
|
return new (raw) T(args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue