QString: de-pessmize QString(QLatin1StringView)

Instead of default-construction followed by move-assignment, delegate
to the move ctor instead.

We can't expect the optimizer to do this transformation for us, since
fromLatin1() is out-of-line and compilers are not, yet, known for
optimizing atomics (ref-count) around out-of-line function calls.

Amends 6abdbb65e59779af56ae25372a853efca19eac59.

Pick-to: 6.7 6.5
Change-Id: I75b747c4d5269ae125bf12cda57a1f718aa7a467
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit f7853680ef68ce2495662ffc7c7a933655436f22)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2024-07-01 09:21:04 +02:00 committed by Qt Cherry-pick Bot
parent 8a17835180
commit 03f2dfca7c

View File

@ -1224,7 +1224,7 @@ QString QAnyStringView::toString() const
// QString inline members
//
QString::QString(QLatin1StringView latin1)
{ *this = QString::fromLatin1(latin1.data(), latin1.size()); }
: QString{QString::fromLatin1(latin1.data(), latin1.size())} {}
const QChar QString::at(qsizetype i) const
{ verify(i, 1); return QChar(d.data()[i]); }
const QChar QString::operator[](qsizetype i) const