summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-05-05 14:25:19 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-05-15 15:51:00 +0200
commit59c686080dfa77be2dbc434b6ff6f362b5a02d25 (patch)
treefbfaa7a511cc14000299ab1bab408dd7a9152d31
parente95f03f989b73bddb52a54fed6a89428de151b09 (diff)
downloadqtbase-59c686080dfa77be2dbc434b6ff6f362b5a02d25.tar.gz
Darwin: Disable QMacAutoReleasePool tracker in release builds
It adds overhead that is noticeable, especially in tight loops that rely on an auto-release pool. For example, this improves the QLocale date to string transformations an order of a magnitude. Task-number: QTBUG-104785 Pick-to: 6.5 Change-Id: I246dc4e114bd75dd4e3e9e42b061c4c20c94d522 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
-rw-r--r--src/corelib/kernel/qcore_mac.mm7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/kernel/qcore_mac.mm b/src/corelib/kernel/qcore_mac.mm
index ab7a711516..9ef0c0ad1b 100644
--- a/src/corelib/kernel/qcore_mac.mm
+++ b/src/corelib/kernel/qcore_mac.mm
@@ -214,21 +214,24 @@ QT_FOR_EACH_MUTABLE_CORE_GRAPHICS_TYPE(QT_DECLARE_WEAK_QDEBUG_OPERATOR_FOR_CF_TY
QT_END_NAMESPACE
QT_USE_NAMESPACE
+
+#ifdef QT_DEBUG
@interface QT_MANGLE_NAMESPACE(QMacAutoReleasePoolTracker) : NSObject
@end
@implementation QT_MANGLE_NAMESPACE(QMacAutoReleasePoolTracker)
@end
QT_NAMESPACE_ALIAS_OBJC_CLASS(QMacAutoReleasePoolTracker);
+#endif // QT_DEBUG
QT_BEGIN_NAMESPACE
QMacAutoReleasePool::QMacAutoReleasePool()
: pool([[NSAutoreleasePool alloc] init])
{
+#ifdef QT_DEBUG
Class trackerClass = [QMacAutoReleasePoolTracker class];
-#ifdef QT_DEBUG
void *poolFrame = nullptr;
void *frames[2];
if (backtrace_from_fp(__builtin_frame_address(0), frames, 2))
@@ -258,9 +261,9 @@ QMacAutoReleasePool::QMacAutoReleasePool()
free((char*)symbolName);
}
}
-#endif
[[trackerClass new] autorelease];
+#endif // QT_DEBUG
}
QMacAutoReleasePool::~QMacAutoReleasePool()