aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-08-04 17:30:43 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-08-04 18:02:15 +0200
commitb3e24353733f613df3465f20c520d5b055c4483c (patch)
tree5c100dc9b9580c9be166194fe70d3efaff56bb88 /src/lib/corelib/language
parent1b3713039c04b3aaa5e2071d38f0b2da96555775 (diff)
Be smarter about storing property maps.
The current code just dumps such maps into the file via the ">>" operator, so no strings are shared. This patch fixes that. Example results for building Qt Creator: Size of build graph on disk: ~65 MB -> ~34 MB. Size of build graph in memory: ~250MB -> ~150 MB. Change-Id: Ic89d0f6c37ba1cd7b3aa8a35517bb6a6a37061c2 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/language.cpp8
-rw-r--r--src/lib/corelib/language/propertymapinternal.cpp4
2 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index 20ef70b52..5c5fac445 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -468,7 +468,7 @@ void ResolvedProduct::load(PersistentPool &pool)
>> sourceDirectory
>> destinationDirectory
>> location;
- pool.stream() >> productProperties;
+ productProperties = pool.loadVariantMap();
moduleProperties = pool.idLoadS<PropertyMapInternal>();
pool.loadContainerS(rules);
pool.loadContainerS(dependencies);
@@ -493,7 +493,7 @@ void ResolvedProduct::store(PersistentPool &pool) const
<< destinationDirectory
<< location;
- pool.stream() << productProperties;
+ pool.store(productProperties);
pool.store(moduleProperties);
pool.storeContainer(rules);
pool.storeContainer(dependencies);
@@ -837,7 +837,7 @@ void ResolvedProject::load(PersistentPool &pool)
subProjects.append(p);
}
- pool.stream() >> m_projectProperties;
+ m_projectProperties = pool.loadVariantMap();
}
void ResolvedProject::store(PersistentPool &pool) const
@@ -852,7 +852,7 @@ void ResolvedProject::store(PersistentPool &pool) const
pool.stream() << subProjects.count();
foreach (const ResolvedProjectConstPtr &project, subProjects)
pool.store(project);
- pool.stream() << m_projectProperties;
+ pool.store(m_projectProperties);
}
diff --git a/src/lib/corelib/language/propertymapinternal.cpp b/src/lib/corelib/language/propertymapinternal.cpp
index 89515e74e..31da2dcd3 100644
--- a/src/lib/corelib/language/propertymapinternal.cpp
+++ b/src/lib/corelib/language/propertymapinternal.cpp
@@ -93,12 +93,12 @@ QString PropertyMapInternal::toJSLiteral() const
void PropertyMapInternal::load(PersistentPool &pool)
{
- pool.stream() >> m_value;
+ m_value = pool.loadVariantMap();
}
void PropertyMapInternal::store(PersistentPool &pool) const
{
- pool.stream() << m_value;
+ pool.store(m_value);
}
} // namespace Internal