summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2015-01-25 00:10:43 +0100
committerMarc Mutz <marc.mutz@kdab.com>2015-02-12 19:39:35 +0000
commitdee800e9e9f37a1d7c81dd1814550bb167b09832 (patch)
tree073d698e70b27c4d17f9f35878de6553ce444e4c
parent2cb7f28ec9351af4440d9597eb3d053809141541 (diff)
QLogging: use return-by-value in qt_message
This also enables NRVO in almost all callers (a macro prevents it in one case), saving one default construction and one (move) assignment per call. Effects on Linux GCC 4.9 stripped release builds: text -896B data +-0B relocs +-0 Change-Id: Id3cde01057baaa408c4cbf95d8d15eaeeeec1604 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/global/qlogging.cpp56
1 files changed, 16 insertions, 40 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index ca27ba26ca..d8f5b59c63 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -249,11 +249,11 @@ static inline void convert_to_wchar_t_elided(wchar_t *d, size_t space, const cha
\internal
*/
Q_NEVER_INLINE
-static void qt_message(QtMsgType msgType, const QMessageLogContext &context, const char *msg,
- va_list ap, QString &buf)
+static QString qt_message(QtMsgType msgType, const QMessageLogContext &context, const char *msg, va_list ap)
{
- buf = QString::vasprintf(msg, ap);
+ QString buf = QString::vasprintf(msg, ap);
qt_message_print(msgType, context, buf);
+ return buf;
}
#undef qDebug
@@ -265,11 +265,9 @@ static void qt_message(QtMsgType msgType, const QMessageLogContext &context, con
*/
void QMessageLogger::debug(const char *msg, ...) const
{
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtDebugMsg, context, msg, ap, message);
+ const QString message = qt_message(QtDebugMsg, context, msg, ap);
va_end(ap);
if (isFatal(QtDebugMsg))
@@ -287,11 +285,9 @@ void QMessageLogger::debug(const char *msg, ...) const
*/
void QMessageLogger::info(const char *msg, ...) const
{
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtInfoMsg, context, msg, ap, message);
+ const QString message = qt_message(QtInfoMsg, context, msg, ap);
va_end(ap);
if (isFatal(QtInfoMsg))
@@ -328,11 +324,9 @@ void QMessageLogger::debug(const QLoggingCategory &cat, const char *msg, ...) co
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtDebugMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtDebugMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtDebugMsg))
@@ -357,11 +351,9 @@ void QMessageLogger::debug(QMessageLogger::CategoryFunction catFunc,
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtDebugMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtDebugMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtDebugMsg))
@@ -443,11 +435,9 @@ void QMessageLogger::info(const QLoggingCategory &cat, const char *msg, ...) con
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtInfoMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtInfoMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtInfoMsg))
@@ -472,11 +462,9 @@ void QMessageLogger::info(QMessageLogger::CategoryFunction catFunc,
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtInfoMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtInfoMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtInfoMsg))
@@ -540,11 +528,9 @@ QDebug QMessageLogger::info(QMessageLogger::CategoryFunction catFunc) const
*/
void QMessageLogger::warning(const char *msg, ...) const
{
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtWarningMsg, context, msg, ap, message);
+ const QString message = qt_message(QtWarningMsg, context, msg, ap);
va_end(ap);
if (isFatal(QtWarningMsg))
@@ -567,11 +553,9 @@ void QMessageLogger::warning(const QLoggingCategory &cat, const char *msg, ...)
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtWarningMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtWarningMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtWarningMsg))
@@ -596,11 +580,9 @@ void QMessageLogger::warning(QMessageLogger::CategoryFunction catFunc,
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtWarningMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtWarningMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtWarningMsg))
@@ -662,11 +644,9 @@ QDebug QMessageLogger::warning(QMessageLogger::CategoryFunction catFunc) const
*/
void QMessageLogger::critical(const char *msg, ...) const
{
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtCriticalMsg, context, msg, ap, message);
+ const QString message = qt_message(QtCriticalMsg, context, msg, ap);
va_end(ap);
if (isFatal(QtCriticalMsg))
@@ -689,11 +669,9 @@ void QMessageLogger::critical(const QLoggingCategory &cat, const char *msg, ...)
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtCriticalMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtCriticalMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtCriticalMsg))
@@ -718,11 +696,9 @@ void QMessageLogger::critical(QMessageLogger::CategoryFunction catFunc,
ctxt.copy(context);
ctxt.category = cat.categoryName();
- QString message;
-
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtCriticalMsg, ctxt, msg, ap, message);
+ const QString message = qt_message(QtCriticalMsg, ctxt, msg, ap);
va_end(ap);
if (isFatal(QtCriticalMsg))
@@ -788,7 +764,7 @@ void QMessageLogger::fatal(const char *msg, ...) const Q_DECL_NOTHROW
va_list ap;
va_start(ap, msg); // use variable arg list
- QT_TERMINATE_ON_EXCEPTION(qt_message(QtFatalMsg, context, msg, ap, message));
+ QT_TERMINATE_ON_EXCEPTION(message = qt_message(QtFatalMsg, context, msg, ap));
va_end(ap);
qt_message_fatal(QtFatalMsg, context, message);