diff options
author | Jędrzej Nowacki <jedrzej.nowacki@nokia.com> | 2012-02-10 09:14:41 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-27 12:57:02 +0100 |
commit | beab403d9fcf1fb41f3c133fc6d58e1e864a8d56 (patch) | |
tree | fa72affa7967706066308bb1af45f9630e23703c /src/corelib/kernel/qmetatype.cpp | |
parent | df055acc81f555011524a79cae3509669bbd0b8b (diff) |
Reduce QtCore lib binary size by around ~3KB, by removing template code
Reusing a template is much better then creating a new one, even if it
should inline the same code.
For some reason replacing T* by void* force gcc to remove a few bytes
per template instantiation too, it is not really significant, but it
alows us to simplify the code.
Benchmarks don't show any regressions.
Change-Id: I4fdf1e4dc311b23021eb5758605602937d05b183
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qmetatype.cpp')
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 0021c0ced2..003ad1c32d 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -1290,7 +1290,7 @@ namespace { class TypeDestroyer { template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted> struct DestroyerImpl { - static void Destroy(const int /* type */, T *where) { delete where; } + static void Destroy(const int /* type */, void *where) { qMetaTypeDeleteHelper<T>(where); } }; template<typename T> struct DestroyerImpl<T, /* IsAcceptedType = */ false> { @@ -1354,11 +1354,11 @@ namespace { class TypeConstructor { template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted> struct ConstructorImpl { - static void *Construct(const int /*type*/, void *where, const T *copy) { return qMetaTypeConstructHelper(where, copy); } + static void *Construct(const int /*type*/, void *where, const void *copy) { return qMetaTypeConstructHelper<T>(where, copy); } }; template<typename T> struct ConstructorImpl<T, /* IsAcceptedType = */ false> { - static void *Construct(const int type, void *where, const T *copy) + static void *Construct(const int type, void *where, const void *copy) { if (QTypeModuleInfo<T>::IsGui) return Q_LIKELY(qMetaTypeGuiHelper) ? qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].constructor(where, copy) : 0; @@ -1440,7 +1440,7 @@ namespace { class TypeDestructor { template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted> struct DestructorImpl { - static void Destruct(const int /* type */, T *where) { qMetaTypeDestructHelper(where); } + static void Destruct(const int /* type */, void *where) { qMetaTypeDestructHelper<T>(where); } }; template<typename T> struct DestructorImpl<T, /* IsAcceptedType = */ false> { |