diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-04-23 10:17:13 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-05-02 14:20:02 +0000 |
commit | eca0b30f22903443ac0ca5a91830a6762c546b43 (patch) | |
tree | b9c39d79d05abb04c381a62b5d66b75bdaf4c7aa /src/qml/memory | |
parent | d1047f4eba219e01fef6faf56dccd923fc0e3ce1 (diff) |
Make the statistics variables members of the memory manager
Otherwise this will show wrong stuff when running multiple engines
in different threads (and create noise in thread sanitizers)
Change-Id: Ia90054f5a54ee2c43870c8d839f25b195b09698c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/memory')
-rw-r--r-- | src/qml/memory/qv4mm.cpp | 27 | ||||
-rw-r--r-- | src/qml/memory/qv4mm_p.h | 3 |
2 files changed, 8 insertions, 22 deletions
diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp index 795fb84ec4..e98bd28a46 100644 --- a/src/qml/memory/qv4mm.cpp +++ b/src/qml/memory/qv4mm.cpp @@ -413,10 +413,6 @@ void Chunk::resetBlackBits() memset(blackBitmap, 0, sizeof(blackBitmap)); } -#ifdef MM_STATS -static uint nGrayItems = 0; -#endif - void Chunk::collectGrayItems(MarkStack *markStack) { // DEBUG << "sweeping chunk" << this << (*freeList); @@ -439,10 +435,6 @@ void Chunk::collectGrayItems(MarkStack *markStack) Heap::Base *b = *itemToFree; Q_ASSERT(b->inUse()); markStack->push(b); -#ifdef MM_STATS - ++nGrayItems; -// qDebug() << "adding gray item" << b << "to mark stack"; -#endif } grayBitmap[i] = 0; o += Chunk::Bits; @@ -460,7 +452,7 @@ void Chunk::sortIntoBins(HeapItem **bins, uint nBins) #else const int start = 1; #endif -#ifdef MM_STATS +#ifndef QT_NO_DEBUG uint freeSlots = 0; uint allocatedSlots = 0; #endif @@ -470,7 +462,7 @@ void Chunk::sortIntoBins(HeapItem **bins, uint nBins) if (!i) usedSlots |= (static_cast<quintptr>(1) << (HeaderSize/SlotSize)) - 1; #endif -#ifdef MM_STATS +#ifndef QT_NO_DEBUG allocatedSlots += qPopulationCount(usedSlots); // qDebug() << hex << " i=" << i << "used=" << usedSlots; #endif @@ -487,7 +479,7 @@ void Chunk::sortIntoBins(HeapItem **bins, uint nBins) break; } usedSlots = (objectBitmap[i]|extendsBitmap[i]); -#ifdef MM_STATS +#ifndef QT_NO_DEBUG allocatedSlots += qPopulationCount(usedSlots); // qDebug() << hex << " i=" << i << "used=" << usedSlots; #endif @@ -498,7 +490,7 @@ void Chunk::sortIntoBins(HeapItem **bins, uint nBins) usedSlots |= (quintptr(1) << index) - 1; uint freeEnd = i*Bits + index; uint nSlots = freeEnd - freeStart; -#ifdef MM_STATS +#ifndef QT_NO_DEBUG // qDebug() << hex << " got free slots from" << freeStart << "to" << freeEnd << "n=" << nSlots << "usedSlots=" << usedSlots; freeSlots += nSlots; #endif @@ -509,7 +501,7 @@ void Chunk::sortIntoBins(HeapItem **bins, uint nBins) bins[bin] = freeItem; } } -#ifdef MM_STATS +#ifndef QT_NO_DEBUG Q_ASSERT(freeSlots + allocatedSlots == (EntriesInBitmap - start) * 8 * sizeof(quintptr)); #endif } @@ -777,11 +769,6 @@ MemoryManager::MemoryManager(ExecutionEngine *engine) blockAllocator.allocationStats = statistics.allocations; } -#ifdef MM_STATS -static int allocationCount = 0; -static size_t lastAllocRequestedSlots = 0; -#endif - Heap::Base *MemoryManager::allocString(std::size_t unmanagedSize) { const size_t stringSize = align(sizeof(Heap::String)); @@ -1104,10 +1091,6 @@ void MemoryManager::runGC() qDebug(stats) << "Fragmented memory before GC" << (totalMem - usedBefore); dumpBins(&blockAllocator); -#ifdef MM_STATS - nGrayItems = 0; -#endif - QElapsedTimer t; t.start(); mark(); diff --git a/src/qml/memory/qv4mm_p.h b/src/qml/memory/qv4mm_p.h index d61655c38a..e3a011caf9 100644 --- a/src/qml/memory/qv4mm_p.h +++ b/src/qml/memory/qv4mm_p.h @@ -306,6 +306,9 @@ public: bool gcStats = false; bool gcCollectorStats = false; + int allocationCount = 0; + size_t lastAllocRequestedSlots = 0; + struct { size_t maxReservedMem = 0; size_t maxAllocatedMem = 0; |