QByteArrayList: optimize 32-bit builds of legacy join() helper

On 32-bit machines, qsizetype is int, so we don't actually need to
QT_REMOVE_SINCE the QByteArrayList_join() helper, because it didn't
change.

Thanks to Thiago for showing me the QT_POINTER_SIZE trick in a similar
change to QVersionNumber.

Pick-to: 6.3
Change-Id: Iae6e315107e42da51fcb4e7325b6d40b9c3fe0bc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2022-01-22 01:03:19 +01:00
parent 902087a090
commit 3ec587666f
3 changed files with 9 additions and 7 deletions

View File

@ -108,10 +108,12 @@ QUuid QUuid::fromRfc4122(const QByteArray &bytes)
#include "qbytearraylist.h" #include "qbytearraylist.h"
# if QT_POINTER_SIZE != 4
QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, const char *sep, int seplen) QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, const char *sep, int seplen)
{ {
return QByteArrayList_join(that, {sep, seplen}); return QByteArrayList_join(that, sep, qsizetype(seplen));
} }
# endif
#endif // QT_REMOVED_SINCE(6, 3) #endif // QT_REMOVED_SINCE(6, 3)

View File

@ -138,15 +138,15 @@ static qsizetype QByteArrayList_joinedSize(const QByteArrayList *that, qsizetype
return totalLength; return totalLength;
} }
QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, QByteArrayView sep) QByteArray QtPrivate::QByteArrayList_join(const QByteArrayList *that, const char *sep, qsizetype seplen)
{ {
QByteArray res; QByteArray res;
if (const qsizetype joinedSize = QByteArrayList_joinedSize(that, sep.size())) if (const qsizetype joinedSize = QByteArrayList_joinedSize(that, seplen))
res.reserve(joinedSize); // don't call reserve(0) - it allocates one byte for the NUL res.reserve(joinedSize); // don't call reserve(0) - it allocates one byte for the NUL
const qsizetype size = that->size(); const qsizetype size = that->size();
for (qsizetype i = 0; i < size; ++i) { for (qsizetype i = 0; i < size; ++i) {
if (i) if (i)
res.append(sep); res.append(sep, seplen);
res += that->at(i); res += that->at(i);
} }
return res; return res;

View File

@ -58,10 +58,10 @@ typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator;
#ifndef Q_CLANG_QDOC #ifndef Q_CLANG_QDOC
namespace QtPrivate { namespace QtPrivate {
#if QT_REMOVED_SINCE(6, 3) #if QT_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength); QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength);
#endif #endif
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, QByteArrayView separator); QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *sep, qsizetype len);
} }
#endif #endif
@ -82,7 +82,7 @@ public:
QByteArray join(QByteArrayView sep = {}) const QByteArray join(QByteArrayView sep = {}) const
{ {
return QtPrivate::QByteArrayList_join(self(), sep); return QtPrivate::QByteArrayList_join(self(), sep.data(), sep.size());
} }
Q_WEAK_OVERLOAD Q_WEAK_OVERLOAD
inline QByteArray join(const QByteArray &sep) const inline QByteArray join(const QByteArray &sep) const