Go to file
Marc Mutz 56603a8d83 QMetaTypeId: optimize qt_metatype_id()
The old code resulted in one memory fetch for the test plus another one
for the return value (at the assembler level). The new code reuses the
already-loaded value:

-       movl    _ZZN11QMetaTypeIdI12QDBusMessageE14qt_metatype_idEvE11metatype_id(%rip), %edx
-       testl   %edx, %edx
-       je      .L158
        movl    _ZZN11QMetaTypeIdI12QDBusMessageE14qt_metatype_idEvE11metatype_id(%rip), %eax
-       ret
+       testl   %eax, %eax
+       je      .L160
+       rep; ret

It also saves one load in the not-yet-initialised case:

-.L158:
+.L160:
        leaq    .LC7(%rip), %rdi
        subq    , %rsp
        .cfi_def_cfa_offset 16
        movq    himBH1, %rsi
        call    _Z17qRegisterMetaTypeI12QDBusMessageEiPKcPT_
        movl    %eax, _ZZN11QMetaTypeIdI12QDBusMessageE14qt_metatype_idEvE11metatype_id(%rip)
-       movl    _ZZN11QMetaTypeIdI12QDBusMessageE14qt_metatype_idEvE11metatype_id(%rip), %eax
        addq    , %rsp
        .cfi_def_cfa_offset 8
        ret

Change-Id: I769950449822f2b1587680e05518be0a4f3120a2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-08-26 16:54:23 +02:00
bin syncqt: parse classes that use Q_DECL_FINAL|final|sealed 2012-08-26 14:29:51 +02:00
config.tests introduce compileTest function 2012-08-14 12:49:37 +02:00
dist Make QAbstractItemModel::sibling virtual. 2012-08-23 15:54:02 +02:00
doc Sort qdoc ignores. 2012-08-21 16:20:25 +02:00
examples Doc: replace occurrence of \starslash in widget docs 2012-08-23 13:22:23 +02:00
lib Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
mkspecs Move the QT_COMPILER_SUPPORTS_xxx defines to qconfig.h 2012-08-22 21:58:45 +02:00
qmake qmake: fix manifest resource for non-trivial target names 2012-08-23 15:54:02 +02:00
src QMetaTypeId: optimize qt_metatype_id() 2012-08-26 16:54:23 +02:00
tests moc: test slots marked final/override in various ways 2012-08-26 14:29:52 +02:00
tools Fix bug in configure where Qt did not compile with QT_ICONV=no 2012-08-23 02:55:17 +02:00
util QUnicodeTables: some internal API renamings 2012-06-22 09:47:59 +02:00
.gitattributes Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
.gitignore Updated .gitignore 2012-08-18 13:59:11 +02:00
.tag Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
configure filter standard paths from mysql_config & pg_config 2012-08-25 17:03:17 +02:00
configure.bat Remove Q_BYTE_ORDER and -*-endian arguments from configures 2012-03-02 14:48:00 +01:00
header.BSD Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.FDL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL-ONLY Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
INSTALL Remove Symbian specific code from qtbase. 2012-01-31 07:08:31 +01:00
LGPL_EXCEPTION.txt Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.GPL Add the LICENSE.GPL file to the module referenced from license headers 2012-05-20 22:41:08 +02:00
LICENSE.LGPL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
LICENSE.PREVIEW.COMMERCIAL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
qtbase.pro Install right version of tools when x-compiling. 2012-07-17 12:52:48 +02:00
sync.profile Revert "Move QWindowSystemInterface out of qpa." 2012-08-03 00:38:09 +02:00