aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmllanguage
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2016-07-07 15:38:01 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2016-08-04 14:32:39 +0000
commit234e762265f0b538e65d610751b8488cb596824d (patch)
treea89a34a09de8ccc8ec87599257a11ec98da0a841 /tests/auto/qml/qqmllanguage
parent01575a22ea2d2e54ef1748733929243ca024234b (diff)
Use on-disk compilation unit if available
If we succeeded in saving the compilation unit to disk, then attempt to use it right away. This replaces the C++ heap usage for the compilation unit data as well as the anonymous allocated executable memory with file-backed mmap'ed memory. That means the memory can be discarded when overall availability is low and paged in on-demand. Change-Id: Ide1b1e11752d861eb049a99a26ca12cec5e2502e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmllanguage')
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
index 1a035be5e0..f32051a26a 100644
--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
+++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
@@ -2118,8 +2118,13 @@ void tst_qqmllanguage::scriptStringWithoutSourceCode()
QQmlTypeData *td = eng->typeLoader.getType(url);
Q_ASSERT(td);
- const QV4::CompiledData::Unit *qmlUnit = td->compilationUnit()->data;
- Q_ASSERT(qmlUnit);
+ const QV4::CompiledData::Unit *readOnlyQmlUnit = td->compilationUnit()->data;
+ Q_ASSERT(readOnlyQmlUnit);
+ QV4::CompiledData::Unit *qmlUnit = reinterpret_cast<QV4::CompiledData::Unit *>(malloc(readOnlyQmlUnit->unitSize));
+ memcpy(qmlUnit, readOnlyQmlUnit, readOnlyQmlUnit->unitSize);
+ qmlUnit->flags &= ~QV4::CompiledData::Unit::StaticData;
+ td->compilationUnit()->data = qmlUnit;
+
const QV4::CompiledData::Object *rootObject = qmlUnit->objectAt(qmlUnit->indexOfRootObject);
QCOMPARE(qmlUnit->stringAt(rootObject->inheritedTypeNameIndex), QString("MyTypeObject"));
quint32 i;