diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-09 07:17:15 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-09 07:17:15 (GMT) |
commit | 6919e1e9d36d83958750a42e1f8d567f2f74299e (patch) | |
tree | ccbf58400efc7546fd0f5bd58c3855180146934f /src/corelib/tools | |
parent | a9dc52d88fd40f55acfcbb64131291dea18d8ccc (diff) | |
parent | d030e69cbabfcae81054e5b8c893b28b2d9de38b (diff) | |
download | Qt-6919e1e9d36d83958750a42e1f8d567f2f74299e.zip Qt-6919e1e9d36d83958750a42e1f8d567f2f74299e.tar.gz Qt-6919e1e9d36d83958750a42e1f8d567f2f74299e.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (27 commits)
Work around a compiler bug on 64-bit.
Fix handling of braces/no-braces in QUrl::host / setHost.
Changes (and minor corrections) to QByteArray documentation.
QtWebKit: Update tag files to match the same content on qtwebkit.git
QtWebKit: Downstream patch 2 fixing a crash on MSVC 64bit.
QtWebKit: Downstream patch 1 fixing a crash on MSVC 64bit.
uic: Fix compile breakage in case QT_NO_QT3_SUPPORT.
uic: Improve messages.
Tools (uic/rcc): Improve warning messages.
QDir: Removed checks for existance of fileEngine
QDir and QFileInfo shouldn't lose properties when detaching
Another bug-o introduced in fixing QDirPrivate refactoring
Reverting QDir::detach introduced earlier
QFileInfo: Prepare for engine-less implementation
Removed QFileInfoPrivate::initFileEngine
Simplify QDir::cd
QDir::makeAbsolute could self-destruct on failure
QDir::operator= simplification
QDirPrivate refactoring
QDirPrivate refactoring
...
Diffstat (limited to 'src/corelib/tools')
-rw-r--r-- | src/corelib/tools/qbytearray.cpp | 41 | ||||
-rw-r--r-- | src/corelib/tools/qsimd.cpp | 9 |
2 files changed, 35 insertions, 15 deletions
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index 8d38e4c..033da90 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -850,7 +850,7 @@ QByteArray::Data QByteArray::shared_empty = { Q_BASIC_ATOMIC_INITIALIZER(1), This operation takes \l{constant time}, because QByteArray is \l{implicitly shared}. This makes returning a QByteArray from a function very fast. If a shared instance is modified, it will be - copied (copy-on-write), and that takes \l{linear time}. + copied (copy-on-write), taking \l{linear time}. \sa operator=() */ @@ -1186,10 +1186,18 @@ void QByteArray::chop(int n) Example: \snippet doc/src/snippets/code/src_corelib_tools_qbytearray.cpp 12 - This operation is typically very fast (\l{constant time}), - because QByteArray preallocates extra space at the end of the - character data so it can grow without reallocating the entire - data each time. + Note: QByteArray is an \l{implicitly shared} class. Consequently, + if \e this is an empty QByteArray, then \e this will just share + the data held in \a ba. In this case, no copying of data is done, + taking \l{constant time}. If a shared instance is modified, it will + be copied (copy-on-write), taking \l{linear time}. + + If \e this is not an empty QByteArray, a deep copy of the data is + performed, taking \l{linear time}. + + This operation typically does not suffer from allocation overhead, + because QByteArray preallocates extra space at the end of the data + so that it may grow without reallocating for each append operation. \sa append(), prepend() */ @@ -1474,7 +1482,12 @@ QByteArray QByteArray::nulTerminated() const Note: QByteArray is an \l{implicitly shared} class. Consequently, if \e this is an empty QByteArray, then \e this will just share - the data held in \a ba. In this case, no copying of data is done. + the data held in \a ba. In this case, no copying of data is done, + taking \l{constant time}. If a shared instance is modified, it will + be copied (copy-on-write), taking \l{linear time}. + + If \e this is not an empty QByteArray, a deep copy of the data is + performed, taking \l{linear time}. \sa append(), insert() */ @@ -1547,14 +1560,18 @@ QByteArray &QByteArray::prepend(char ch) This is the same as insert(size(), \a ba). - This operation is typically very fast (\l{constant time}), - because QByteArray preallocates extra space at the end of the - character data so it can grow without reallocating the entire - data each time. - Note: QByteArray is an \l{implicitly shared} class. Consequently, if \e this is an empty QByteArray, then \e this will just share - the data held in \a ba. In this case, no copying of data is done. + the data held in \a ba. In this case, no copying of data is done, + taking \l{constant time}. If a shared instance is modified, it will + be copied (copy-on-write), taking \l{linear time}. + + If \e this is not an empty QByteArray, a deep copy of the data is + performed, taking \l{linear time}. + + This operation typically does not suffer from allocation overhead, + because QByteArray preallocates extra space at the end of the data + so that it may grow without reallocating for each append operation. \sa operator+=(), prepend(), insert() */ diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index a9c33f1..7babf3a 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -286,10 +286,13 @@ static inline uint detectProcessorFeatures() uint feature_result = 0; #if defined(Q_CC_GNU) - asm ("cpuid" - : "=c" (feature_result) + long tmp; + asm ("xchg %%rbx, %1\n" + "cpuid\n" + "xchg %%rbx, %1\n" + : "=c" (feature_result), "=&r" (tmp) : "a" (1) - : "%ebx", "%edx" + : "%edx" ); #elif defined (Q_OS_WIN64) { |