diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-06-24 02:04:09 +0200 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2016-02-10 16:00:46 +0000 |
commit | cc2938b5b6aa07210b04bd48ad8a2830701a06e5 (patch) | |
tree | 5e9719c9eace2947e542f2ee34c0f23589e3e7e6 /src/tools/moc/generator.cpp | |
parent | 3e63a58a96bc9d7fc6004f3a8eacc062bae953f9 (diff) |
moc: replace inefficient QLists with QVectors
These types are larger than a void*, so holding them in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking them movable, and holding them in a QVector instead.
Change-Id: I42f494ed87854eadc33d78db4479203ff5e0370f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/tools/moc/generator.cpp')
-rw-r--r-- | src/tools/moc/generator.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 587aa5971d..2b09cf873a 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -121,7 +121,7 @@ int Generator::stridx(const QByteArray &s) // Returns the sum of all parameters (including return type) for the given // \a list of methods. This is needed for calculating the size of the methods' // parameter type/name meta-data. -static int aggregateParameterCount(const QList<FunctionDef> &list) +static int aggregateParameterCount(const QVector<FunctionDef> &list) { int sum = 0; for (int i = 0; i < list.count(); ++i) @@ -194,7 +194,7 @@ void Generator::generateCode() // filter out undeclared enumerators and sets { - QList<EnumDef> enumList; + QVector<EnumDef> enumList; for (int i = 0; i < cdef->enumList.count(); ++i) { EnumDef def = cdef->enumList.at(i); if (cdef->enumDeclarations.contains(def.name)) { @@ -571,7 +571,7 @@ void Generator::generateCode() cname, cname, cdef->classname.constData()); } for (int i = 0; i < cdef->interfaceList.size(); ++i) { - const QList<ClassDef::Interface> &iface = cdef->interfaceList.at(i); + const QVector<ClassDef::Interface> &iface = cdef->interfaceList.at(i); for (int j = 0; j < iface.size(); ++j) { fprintf(out, " if (!strcmp(_clname, %s))\n return ", iface.at(j).interfaceId.constData()); for (int k = j; k >= 0; --k) @@ -628,7 +628,7 @@ void Generator::generateClassInfos() } } -void Generator::registerFunctionStrings(const QList<FunctionDef>& list) +void Generator::registerFunctionStrings(const QVector<FunctionDef>& list) { for (int i = 0; i < list.count(); ++i) { const FunctionDef &f = list.at(i); @@ -648,7 +648,7 @@ void Generator::registerFunctionStrings(const QList<FunctionDef>& list) } } -void Generator::generateFunctions(const QList<FunctionDef>& list, const char *functype, int type, int ¶msIndex) +void Generator::generateFunctions(const QVector<FunctionDef>& list, const char *functype, int type, int ¶msIndex) { if (list.isEmpty()) return; @@ -694,7 +694,7 @@ void Generator::generateFunctions(const QList<FunctionDef>& list, const char *fu } } -void Generator::generateFunctionRevisions(const QList<FunctionDef>& list, const char *functype) +void Generator::generateFunctionRevisions(const QVector<FunctionDef>& list, const char *functype) { if (list.count()) fprintf(out, "\n // %ss: revision\n", functype); @@ -704,7 +704,7 @@ void Generator::generateFunctionRevisions(const QList<FunctionDef>& list, const } } -void Generator::generateFunctionParameters(const QList<FunctionDef>& list, const char *functype) +void Generator::generateFunctionParameters(const QVector<FunctionDef>& list, const char *functype) { if (list.isEmpty()) return; @@ -917,7 +917,7 @@ void Generator::generateMetacall() fprintf(out, " "); bool needElse = false; - QList<FunctionDef> methodList; + QVector<FunctionDef> methodList; methodList += cdef->signalList; methodList += cdef->slotList; methodList += cdef->methodList; @@ -1079,7 +1079,7 @@ QMultiMap<QByteArray, int> Generator::automaticPropertyMetaTypesHelper() return automaticPropertyMetaTypes; } -QMap<int, QMultiMap<QByteArray, int> > Generator::methodsWithAutomaticTypesHelper(const QList<FunctionDef> &methodList) +QMap<int, QMultiMap<QByteArray, int> > Generator::methodsWithAutomaticTypesHelper(const QVector<FunctionDef> &methodList) { QMap<int, QMultiMap<QByteArray, int> > methodsWithAutomaticTypes; for (int i = 0; i < methodList.size(); ++i) { @@ -1133,7 +1133,7 @@ void Generator::generateStaticMetacall() isUsed_a = true; } - QList<FunctionDef> methodList; + QVector<FunctionDef> methodList; methodList += cdef->signalList; methodList += cdef->slotList; methodList += cdef->methodList; |