aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4mm.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-06-12 14:33:05 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-06-12 18:13:45 +0200
commit4d68155848723a863e59d2ce99142b56c75ab3c6 (patch)
tree9471400f4f33c8aaa160f311874027f56606bc35 /src/qml/jsruntime/qv4mm.cpp
parent841f3e6ff78871e5d7fc90666f12756210c7435e (diff)
Properly initialize heap profiler when starting profiling
Change-Id: Ia994464b2150dc9a9185280ae0e2f8c615393310 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4mm.cpp')
-rw-r--r--src/qml/jsruntime/qv4mm.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4mm.cpp b/src/qml/jsruntime/qv4mm.cpp
index 472fa4071a..f3374d48e6 100644
--- a/src/qml/jsruntime/qv4mm.cpp
+++ b/src/qml/jsruntime/qv4mm.cpp
@@ -451,9 +451,7 @@ void MemoryManager::runGC()
mark();
sweep();
} else {
- int totalMem = 0;
- for (int i = 0; i < m_d->heapChunks.size(); ++i)
- totalMem += m_d->heapChunks.at(i).memory.size();
+ int totalMem = getAllocatedMem();
QTime t;
t.start();
@@ -479,10 +477,10 @@ void MemoryManager::runGC()
m_d->totalAlloc = 0;
}
-uint MemoryManager::getUsedMem()
+size_t MemoryManager::getUsedMem() const
{
- uint usedMem = 0;
- for (QVector<Data::Chunk>::iterator i = m_d->heapChunks.begin(), ei = m_d->heapChunks.end(); i != ei; ++i) {
+ size_t usedMem = 0;
+ for (QVector<Data::Chunk>::const_iterator i = m_d->heapChunks.begin(), ei = m_d->heapChunks.end(); i != ei; ++i) {
char *chunkStart = reinterpret_cast<char *>(i->memory.base());
char *chunkEnd = chunkStart + i->memory.size() - i->chunkSize;
for (char *chunk = chunkStart; chunk <= chunkEnd; chunk += i->chunkSize) {
@@ -495,6 +493,22 @@ uint MemoryManager::getUsedMem()
return usedMem;
}
+size_t MemoryManager::getAllocatedMem() const
+{
+ size_t total = 0;
+ for (int i = 0; i < m_d->heapChunks.size(); ++i)
+ total += m_d->heapChunks.at(i).memory.size();
+ return total;
+}
+
+size_t MemoryManager::getLargeItemsMem() const
+{
+ size_t total = 0;
+ for (const Data::LargeItem *i = m_d->largeItems; i != 0; i = i->next)
+ total += i->size;
+ return total;
+}
+
MemoryManager::~MemoryManager()
{
PersistentValuePrivate *persistent = m_persistentValues;