| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
That way, for future or old versions, we at least will know which
version it is. For example, for MSVC "14.0" (compiler version 19), it
produces "MSVC _MSC_VER 1900".
Change-Id: I86dcaea8e4b23bd052288cea5663b267da31c890
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It's still not a literal type because the destructor is not constexpr
Change-Id: If89bdfdd3f0ffe9bdd5a7953e872e520e92cfd66
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Interestingly, before that patch this compiled fine:
typedef Q{Explicitly,}SharedDataPointer<QSharedData> Ptr;
Ptr p(new QSharedData);
auto hash = qHash(p);
This was because both Q{Explicitly,}SharedDataPointer overload 'operator
bool()' => qHash(int) was accepted. This, however, doesn't make sense.
Someone should probably take care of applying the safe bool idiom to
these classes as well.
Change-Id: I8bb6b2aacaa6166da817a6f3847093fd20a05a67
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to properly use QAbstractTransition object in QML we need to
know when these properties are changed.
Change-Id: I5449ecf3fce33e164f645d7263f21b20abfcd026
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to properly use QSignalTransition object in QML we need to
know when these properties are changed.
Change-Id: I7ca318d50513086146b85eaeee4dabbcdef8c299
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It enables you to get a valid QSharedPointer instance to 'this',
when all you have is 'this'.
Task-number: QTBUG-7287
Change-Id: I3ed1c9c4d6b110fe02302312cc3c4a75e9d95a0c
Reviewed-by: Richard J. Moore <rich@kde.org>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Don't create a dispatcher for all adopted threads, only the main thread.
This was causing the GUI thread to skip platform dispatcher creation.
Change-Id: Id0de976f9def48e8d58efd20815b6fd18faebefa
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
[ChangeLog][QtCore][Logging] QT_MESSAGE_PATTERN can include a
timestamp using %{time} or %{time format}
Change-Id: I2aaa9c7a6fcb340b5ce9f1fe8a78002e5fc4e6fe
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This macro is equivalent to arg.toUtf8().constData().
It is usable for "%s" arguments of qDebug(), qWarning(), qFatal(),
qCritical().
Change-Id: I2d9956e6651271e1e2183dce9c835511cf923bf3
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
So let's define the version ourselves. This is done for all OS because
__VERSION__ doesn't include the actual compiler version...
Change-Id: Ida706a8f4bfe75af04ce8f11ea2124c1659c19ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Add detection of MIPS DSPr2 at run-time in qsimd.cpp. This makes it
possible to have generic Qt builds for MIPS that can enable the fast
code paths for processors with the DSP ASE at run-time. Also, this
makes it possible to manually disable them by setting the environment
variable "QT_NO_CPU_FEATURE=dspr2". Last, but not least, functions
requiring DSPr2 are not enabled when running in CPUs with version-1
DSP.
Change-Id: Ia5a01d84119553c22ab83386c74a6cb8ba5fee53
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It had been so far only supported by GNU-style compilers due to the
IA-64 portable C++ ABI. But it's mandated by C++11, so let's add the
macro and use it in Q_GLOBAL_STATIC.
Looks like Visual Studio "14" will support it.
Change-Id: I9710b5146606c7e494c43413f49900419396cfe0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: David Faure <david.faure@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-36682
Change-Id: I0fca746a7838cce49efc243a242bb9bb7119bd9e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It is needed to control a QStateMachine object from QML.
Change-Id: I19271d97718af2d688c477647d6341f70fdef3ea
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Qtbase contains four identical implementations of next power of two,
these should be shared and the implementation made available to other
qt modules, as it is also used many places outside of qtbase.
[ChangeLog][QtCore][QtMath] Introduced qNextPowerOfTwo methods.
Change-Id: Id23fbe5ad6bae647b30d5a4212c0330e48a50278
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is the only place in Qt source code we use FORCE_UREF, and can
be traced back to the very first qt.git commit. In any case, it's
broken: It returns a reference to a local variable, since the debug
argument is _not_ a reference.
Using a reference both for the argument and the return value would
be actually the canonical solution, but that breaks with
QDebug << operator(QDebug, const QVariant &),
exported in QtCore. The C++ lookup rules apparently prefer this
overload then to be used for outputting containers ...
Change-Id: Iaf5e5dd89d4f3ebe6454eba219046b4f25b0d717
Reviewed-by: hjk <hjk121@nokiamail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Looks like a few extra features have been supported for a while and we
had never noticed. That includes the C++98 template friends, C++11
extern templates and C++11 nullptr. They've been supported since at
least MSVC 2010, possibly even earlier, but I don't have MSVC 2008 to
test with.
Testing also indicates that MSVC 2012 and 2013 have a bug in their
support for the range for construct. The following code fails to
compile:
for (int i : l)
do { (void)0; } while (0);
test.cpp(2) : error C2059: syntax error : '}'
Reported as https://connect.microsoft.com/VisualStudio/feedback/details/903999/c-11-range-for-construct-fails-to-compile-when-body-is-a-do-while-block
Change-Id: I5d0156f4c847c45fa1f6f5b9ee4ddbdacb8ab59b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Don't define them if qcompilerdetection.h was compiled in C mode.
Change-Id: I080b62ef7c68bb582e55e9e3a1dff4e6c1bb48bd
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Add conversion methods similar to those in QString to QByteArray. This
is often more useful than the QString version since std::string like
QByteArray are byte arrays.
[ChangeLog][QtCore][QByteArray] Added convenience methods to convert
directly to and from std::string.
Change-Id: I92c29d4bb1d9e06a667dd9cdd936970e2d272006
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
With the previous solution, a thread pool timer callback fired
in the same thread as the dispatcher. Now that timers can be called
from the base thread pool, callbacks can come from alternate threads and
so the associated event dispatcher must be tracked. This change refactors
how timer info objects are created and tracked so that they can be
properly created/destroyed/queued inside the timer callbacks.
All QTimer tests pass.
Change-Id: I18a5573df2a8fa32d1982c61e665d5df664b6db0
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of using std::thread, use the WinRT ThreadPool to manage
threads. This allows for setting the scheduling priority, and provides
a path to enable XAML integration (which requires Qt run on a background
thread).
QThread::terminate() is still unsupported, and only the winmain thread
can be adopted due to the behavior of the thread pool when creating
tasks from the GUI thread. The associated tests are now skipped, and
all other QThread tests pass.
Task-number: QTBUG-31397
Change-Id: Ib512a328412e1dffecdc836bc39de3ccd37afa13
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As most of the Windows Runtime API is asynchronous, we have used various
methods for blocking in the calling thread waiting for the operation to
complete. This introduces an inline method, QWinRTFunctions::await(),
which performs the wait in a consistent and safe manner.
Task-number: QTBUG-39407
Change-Id: I54cd0e178aa560891ab92bfc5e7a6553e60e01b2
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Almost every native call in WinRT uses COM HRESULTS. Provide some
convenience macros for returning after failure.
Task-number: QTBUG-39407
Change-Id: Ia99b0acd771d53c52732f270e46dd6937538e131
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-38439
Change-Id: I26303d040cc4b958e6af90ea63e5b0d821e2bb74
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Forward canDropMimeData() and dropMimeData() to the source model.
[ChangeLog][QtCore][QAbstractProxyModel] QAbstractProxyModel now
forwards the drop-related API.
Task-number: QTBUG-39549
Change-Id: Ib81fcec862586e4ecfb99b9e0f4eb1a16eace762
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The elements should not be changeable.
Change-Id: I108cb42b1237cd61c4d8f2fbe13305fbbf4ef311
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to properly use QHistoryState object in QML we need to know
when these properties are changed.
Change-Id: I28c783436410c84bc64a919ac18c183f7a5eb9ad
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Volker Krause <volker.krause@kdab.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to properly use QState object in QML we need to know when these
properties are changed.
Change-Id: I37f8295e5201686a52d448cc42db331a8f8e792f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
QMetaObject::invokeMethod: No such method Object::someMethod(SomeType)
becomes:
QMetaObject::invokeMethod: No such method Object::someMethod(SomeType)
Candidates are:
someMethod(SomeOtherType)
someMethod(YetAnotherType)
Change-Id: I3566bca64423e2f8150d0d544fb4e35a5262b19e
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There's now a C++ standards Standing Document that defines preprocessor
macros in the same way that we used to. So we no longer need to define
them ourselves. The current macros are kept for compatibility purposes,
for the compilers where they used to be defined.
The list will not be extended with new macros or for new compiler
versions.
[ChangeLog][Deprecation Notice] The Q_COMPILER_xxx macros for C++14
compiler features introduced in Qt 5.3 are deprecated and will not be
updated for new compilers either. User code should be changed to use the
macros from Standing Document 6 instead:
http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations.
This does not affect C++11 feature macros.
Change-Id: I246afb84263f3d7ff72ccc0bc44bf86a6fc7cd96
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
ICC 14 (Intel Composer XE 2013) already supported range for and explicit
conversions, but looks like we missed adding them.
ICC 15 (Intel Composer XE 2015) is C++11 language feature complete.
Change-Id: I6eb8a3059f5df3604716666311aa01a6cf01918d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-39558
Task-number: QTBUG-39559
Change-Id: I2634c5ac16f19251628228c9d60011a355846a79
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If -qreal float is passed, fullCpuArchitecture() will now include
"-qreal_float". If something else other than "float" is passed to
-qreal, we'll try to encode it (e.g., -qreal "fixed<int, 7>").
Change-Id: Ie33fd1a643f4376e6f01a7966e01c7c34e6fcffd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I542af3a77b0a139e137a5a736b74042a8c25eb95
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It causes a clang warning (unused variable).
Change-Id: If3d0ec0a0b493a9b1d36e7a07db6cbe29bf789cb
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Currently QJsonValue and QJsonValueRef behave differently in
regard to the default values leading to confusion compile errors
depending on which of the two types one is actually using. Before
this change it was possible to write:
QJsonValue value = jsonObject["item"];
QString name = value.toString(QStringLiteral("default"));
but not:
QString name = jsonObject["item"].toString(QStringLiteral("default"));
Change-Id: Id1185acf339aa3a91e97848e85d068f84552df71
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
refs/staging/dev
|
| |\| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
mkspecs/features/qt.prf
src/plugins/platforms/xcb/qxcbwindow.h
src/tools/qdoc/qdocindexfiles.cpp
src/widgets/kernel/qwidget_qpa.cpp
Change-Id: I214f57b03bc2ff86cf3b7dfe2966168af93a5a67
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Task-number: QTBUG-38871
Change-Id: I5b7aef58c652d13110aa73b7856927b5ba6fea50
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |/ /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Detected by clang's -fsanitize=thread in tst_qcoreapplication.
Task-number: QTBUG-39024
Change-Id: I60b7cece0384f89dc62ac5128faf39a4084e72e2
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Some codecs can't handle the range outside ascii properly and would then
fail to read the data back in correctly.
Task-number: QTBUG-15543
Change-Id: I4c02921e787a939eeec0c7a11603b5896d756aef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
HSTRING needs to be released or handles will be leaked.
Instead use HString which takes care of resource management
on its own.
Task-Number: QTBUG-38115
Change-Id: I2c767776c1f22f45acd8dd77b693f30d63d894b9
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Id8aa549e4ba5d8b550405823e26bb68da9403ced
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
gestaltSystemVersion's encoding only has room for a single version
digit. Thus, OS X 10.10 would previously have been detected as OS X 10.9
(Apple's comments in the header even warn against this).
Change-Id: I41c35b1507d39e2958a9aaffaa8c48ac380f61d9
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
QSignalBlocker resets to the previous state, which might have already
been a blocked signal state.
Task-number: QTBUG-39352
Change-Id: I918cc6ea346755b940e027cee5d6704824fbba32
Reviewed-by: David Faure <david.faure@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Qt5 allows QAIM subclasses to reimplement the sibling() method. Unfortunately,
the default QAbstractProxyModel's reimplementation differs in behavior to what
the Qt4 version was doing. In particular, the Qt4 version used to use the row
and column as positions within the proxy model, while the Qt5 version mistakenly
does this at the level of source model. This is arguably broken; the caller asks
for a sibling of the proxy index, not for a sibling within the proxy model.
This change makes the QAPM::sibling work explicitly in the same way as the Qt4
code behaved.
The reimplementation of QAbstractProxyModel::sibling was introduced in
9dfba89c28bbff3316cb7aed6c07f90c0f2d5a22. It was subsequently fixed with commit
999109866dbd350a29cc70815d0c772545c85746 not to return indexes from the source
model, but the logic was still different from the Qt4 version.
[ChangeLog][QtCore][QAbstractProxyModel] Fixed QAbstractProxyModel::sibling to
work in the same manner as the Qt4 code used to behave. Previously, Qt5's
implementation would treat the row and column as positions in the source model
instead of a position in the proxy itself.
Followup-to 9dfba89c28bbff3316cb7aed6c07f90c0f2d5a22 and
999109866dbd350a29cc70815d0c772545c85746
Change-Id: Ia25027b2ad9e4777ba28de2d2226d48f8cccf587
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These functions are not used anywhere. Since the classes are not
documented, we're free to remove the inline functions.
The implementation of the const function in QMapNode is also bogus: it
discards a const qualifier.
Task-number: QTBUG-39301
Change-Id: Ib8fd10a4da4b58a62cef17017ea6127c4d964325
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For ASCII content, this improves the throughput because the conditional
is no longer on the codepath to storing, so the processor can perform
the store at the same time as it's doing the movemask
operation. However, the gain is mostly theoretical: benchmarking with
mostly ASCII content shows the algorithm running within 0.5% of the
previous result (which is noise).
For non-ASCII content, we're comparing the cost of doing a 16-byte store
(which may be completely overwritten) with the loop copying and shifting
left. Benchmarking shows a slight gain of a few percent.
Change-Id: I28ef0021dffc725a922c539cc5976db367f36e78
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I782b18b9f82a72a29371564838252e1838faf86c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: If223dd73b9558a0f5144be38f19a61316f8c807b
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
|