| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
scm.dev.nokia.troll.no:qt/qt-file-engines-refactor into master-integration
* 'earth/file-engine-refactor' of scm.dev.nokia.troll.no:qt/qt-file-engines-refactor:
Fix qfile test crash with glibc
Fix qfile test errors
Update def files
Add autotests for AutoCloseHandle / DontCloseHandle and RFile adoption
QFile API: add API to specify if adopted file handles should be closed
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
scm.dev.nokia.troll.no:qt/qt-file-engines-refactor into master-integration
* 'earth/file-engine-refactor' of scm.dev.nokia.troll.no:qt/qt-file-engines-refactor:
Fix qfile test crash with glibc
Fix qfile test errors
Update def files
Add autotests for AutoCloseHandle / DontCloseHandle and RFile adoption
QFile API: add API to specify if adopted file handles should be closed
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The test was using a FILE* after closing it (which was a pointer to
deleted memory). glibc detects and asserts on this.
If the test failed, then file could be closed twice too, so I fixed that
at the same time. (would have caused a double free)
Reviewed-by: joao
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
scm.dev.nokia.troll.no:qt/qt-file-engines-refactor into master-integration
* 'earth/file-engine-refactor' of scm.dev.nokia.troll.no:qt/qt-file-engines-refactor:
Fix qfile test errors
Update def files
Add autotests for AutoCloseHandle / DontCloseHandle and RFile adoption
QFile API: add API to specify if adopted file handles should be closed
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fix compile error for non symbian targets
Fix MSVCRT assertion failure
Test file.handle() returns the right thing before and after file is
closed.
Reviewed-by: joao
|
| | | |\
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
scm.dev.nokia.troll.no:qt/qt-file-engines-refactor into master-integration
* 'earth/file-engine-refactor' of scm.dev.nokia.troll.no:qt/qt-file-engines-refactor:
Update def files
Add autotests for AutoCloseHandle / DontCloseHandle and RFile adoption
QFile API: add API to specify if adopted file handles should be closed
|
| | | | |\
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
scm.dev.nokia.troll.no:qt/qt-file-engines-refactor into master-integration
* 'earth/file-engine-refactor' of scm.dev.nokia.troll.no:qt/qt-file-engines-refactor:
Update def files
Add autotests for AutoCloseHandle / DontCloseHandle and RFile adoption
QFile API: add API to specify if adopted file handles should be closed
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Add the new APIs + all the unfrozen changes on master
Reviewed-by: Trust Me
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Extended the existing tests which open a file from a handle to use
symbian RFile as well (when testing on symbian).
Added a new test to check the file handle is open/closed after closing
a QFile, based on whether the file was opened with AutoCloseHandle or
not.
Reviewed-by: mread
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
QFile behaviour has been to not close file handles adopted by
open(FILE*, OpenMode) and open(int fd, OpenMode) functions. This is
inconvenient for frameworks which want to return an opened QFile to
the user. In this case it would be better to transfer ownership of the
handle to the QFile.
New overloads are added which take an additional parameter from the
QFile::FileHandleFlags flags. Currently only one bit is used to provide the
AutoCloseHandle option, but it is extensible.
The AutoCloseHandle option tells the QFile backend that it should
close the handle when close() is called, rather than the default
behaviour which remains to flush the handle and leave it open.
The DontCloseHandle option is the inverse of this, specifying the old
behaviour of flushing but not closing the file handle.
Symbian OS file handles are not compatible with int, they are an opaque
data type which contains two integers.
The first identifies to the kernel the file server session
The second identifies to the file server the subsession object (the file)
The reason for this is that it has a microkernel architecture, the
kernel has no support for files - all files and file systems are handled
by a user mode process called the "file server".
So for symbian, a new QFile::open() overload is added for adopting a
symbian RFile handle.
The API mirrors the existing API for POSIX file handles, but takes an
RFile reference rather than an integer file descriptor.
Task-number: QT-2924
Reviewed-by: joao
Reviewed-by: mread
Reviewed-by: Oswald Buddenhagen
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration:
WorkerScript could starve image loading of CPU.
More docs for FolderListModel
Improve docs on attached properties on view delegates.
Models which load incrementally via fetchMore() don't work.
Try fixing build error on Windows
Ensure PathView doesn't jump when starting to drag.
Nested flickables would react alternately to flicks.
Improve QDeclarativeComponent test coverage.
Add additional QDeclarativeProperty autotests.
Removing all visible items in ListView resulted in blank view.
XmlListModel requests should set 'Accept' header to 'application/xml'
|
| |\ \ \ \ \ \
| | |/ / / / /
| |/| | | | | |
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml:
WorkerScript could starve image loading of CPU.
More docs for FolderListModel
Improve docs on attached properties on view delegates.
Models which load incrementally via fetchMore() don't work.
Try fixing build error on Windows
Ensure PathView doesn't jump when starting to drag.
Nested flickables would react alternately to flicks.
Improve QDeclarativeComponent test coverage.
Add additional QDeclarativeProperty autotests.
Removing all visible items in ListView resulted in blank view.
XmlListModel requests should set 'Accept' header to 'application/xml'
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
We use idle priority for image loading and XmlListModel in order to
keep the UI responsive, but WorkerScript used LowPriority which would
significantly reduce CPU available for image loading.
Task-number: QTBUG-16167
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Clarify that the properties are attached to the root of the delegate,
and must be accessed as such by child items.
Task-number: QTBUG-16193
Reviewed-by: Bea Lam
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Call canFetchMore()/fetchMore() on setModel(), setRootIndex() and when
the last item is created.
Task-number: QTBUG-16039
Reviewed-by: Bea Lam
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Task-number: QTBUG-16133
Reviewed-by: Bea Lam
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The grab was not always kept by filtering Flickables, but would remain
set next flick, resulting in toggling of flicking.
Task-number: QTBUG-16177
Reviewed-by: Michael Brasser
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | |\ \ \ \ \
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml:
Removing all visible items in ListView resulted in blank view.
XmlListModel requests should set 'Accept' header to 'application/xml'
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
When delayRemove is true and all visible items are tagged to be
removed the visibleIndex became invalid and refill() began filling
from 0.
Task-number: QTBUG-16183
Reviewed-by: Michael Brasser
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
Task-number: QTBUG-15836
Reviewed-by: Michael Brasser
|
|\ \ \ \ \ \ \ \ \
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (39 commits)
Whitespace change
Fix for coding conventions.
Fix resource leak in QCLuceneStandardAnalyzer::QCLuceneStandardAnalyzer.
Fix resource leak in QCLuceneStopAnalyzer::QCLuceneStopAnalyzer.
Assistant: Get rid of bogus warning.
add missing license header
Add inter-process binary shader cache for MeeGo
Track average wait times under our maximum spin time threshold
Store and track spin times in nanosecond resolution
Optimize adaptive spinning mutex code
Improve QMutex contention performance on Linux
Improve QMutex contention performance on Mac OS X
Disable spinning under lock contention on single CPU machines
Remove unnecessary testAndSetAcquire from QMutex::lockInternal()
Move contender count maintenance to QMutexPrivate
test contention when using 2 mutexes
Ensure that every thread does contend in the contention tests
Add baseline test data to measure test overhead
Test contention performance for long (10ms) critical sections
Add a benchmark for contended and uncontended QMutex performance
...
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Since I can't touch merge requests, this is a separate commit to fix
whitespace errors in code.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Merge-request: 2534
Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
CID 22165.
Merge-request: 2534
Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
CID 22164.
Merge-request: 2534
Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
|
| |\ \ \ \ \ \ \ \ \
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (35 commits)
Assistant: Get rid of bogus warning.
add missing license header
Add inter-process binary shader cache for MeeGo
Track average wait times under our maximum spin time threshold
Store and track spin times in nanosecond resolution
Optimize adaptive spinning mutex code
Improve QMutex contention performance on Linux
Improve QMutex contention performance on Mac OS X
Disable spinning under lock contention on single CPU machines
Remove unnecessary testAndSetAcquire from QMutex::lockInternal()
Move contender count maintenance to QMutexPrivate
test contention when using 2 mutexes
Ensure that every thread does contend in the contention tests
Add baseline test data to measure test overhead
Test contention performance for long (10ms) critical sections
Add a benchmark for contended and uncontended QMutex performance
Removed QMutexPrivate::self() declaration
Add QElapsedTimer::nsecsElapsed() const
Delay creation of the process manager
Make the QRasterPaintEngineState copy constructor cheaper.
...
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
Task-number: QTBUG-16096
|
| | | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \
| | | |_|_|_|_|/ / / /
| | |/| | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (33 commits)
Add inter-process binary shader cache for MeeGo
Track average wait times under our maximum spin time threshold
Store and track spin times in nanosecond resolution
Optimize adaptive spinning mutex code
Improve QMutex contention performance on Linux
Improve QMutex contention performance on Mac OS X
Disable spinning under lock contention on single CPU machines
Remove unnecessary testAndSetAcquire from QMutex::lockInternal()
Move contender count maintenance to QMutexPrivate
test contention when using 2 mutexes
Ensure that every thread does contend in the contention tests
Add baseline test data to measure test overhead
Test contention performance for long (10ms) critical sections
Add a benchmark for contended and uncontended QMutex performance
Removed QMutexPrivate::self() declaration
Add QElapsedTimer::nsecsElapsed() const
Delay creation of the process manager
Make the QRasterPaintEngineState copy constructor cheaper.
Micro-optimization for QSpanData::setup()
define FSCTL_SET_REPARSE_POINT in test header
...
|
| | | |\ \ \ \ \ \ \ \
| | | | |_|_|_|_|/ / /
| | | |/| | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (33 commits)
Add inter-process binary shader cache for MeeGo
Track average wait times under our maximum spin time threshold
Store and track spin times in nanosecond resolution
Optimize adaptive spinning mutex code
Improve QMutex contention performance on Linux
Improve QMutex contention performance on Mac OS X
Disable spinning under lock contention on single CPU machines
Remove unnecessary testAndSetAcquire from QMutex::lockInternal()
Move contender count maintenance to QMutexPrivate
test contention when using 2 mutexes
Ensure that every thread does contend in the contention tests
Add baseline test data to measure test overhead
Test contention performance for long (10ms) critical sections
Add a benchmark for contended and uncontended QMutex performance
Removed QMutexPrivate::self() declaration
Add QElapsedTimer::nsecsElapsed() const
Delay creation of the process manager
Make the QRasterPaintEngineState copy constructor cheaper.
Micro-optimization for QSpanData::setup()
define FSCTL_SET_REPARSE_POINT in test header
...
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
This patch significantly reduces MeeGo app startup times by caching binary
shaders in a shared memory segment.
Reviewed-by: Robert Griebl
Reviewed-by: Samuel Rødal
|
| | | | |\ \ \ \ \ \ \
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (32 commits)
Track average wait times under our maximum spin time threshold
Store and track spin times in nanosecond resolution
Optimize adaptive spinning mutex code
Improve QMutex contention performance on Linux
Improve QMutex contention performance on Mac OS X
Disable spinning under lock contention on single CPU machines
Remove unnecessary testAndSetAcquire from QMutex::lockInternal()
Move contender count maintenance to QMutexPrivate
test contention when using 2 mutexes
Ensure that every thread does contend in the contention tests
Add baseline test data to measure test overhead
Test contention performance for long (10ms) critical sections
Add a benchmark for contended and uncontended QMutex performance
Removed QMutexPrivate::self() declaration
Add QElapsedTimer::nsecsElapsed() const
Delay creation of the process manager
Make the QRasterPaintEngineState copy constructor cheaper.
Micro-optimization for QSpanData::setup()
define FSCTL_SET_REPARSE_POINT in test header
add error handling to QXmlStreamWriter
...
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Further observation shows that spin times slightly over the average wait time
produce the best results. This change keeps a heavily weighted average
of the wait times under 1.5ms (1.5 times the max spin threshold), and adjusts
the spin time to be 150% of the average wait time.
Introduce spin time adjustments when spin locking works, and adjust to
between 150% of the average wait time and the maximum threshold.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Use the new QElapsedTimer::nsecsElapsed() and store all values in qint64
instead of int.
The maximum spin time threshold is now 1000000ns, or 1ms. Spinning for longer
than 1ms is just a waste of time, CPU, and battery.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Change the adaptive spinning code to be elapsed time based instead of
iteration based. The new approach will quickly reduce the amount of
allowed spinning time when it detects that lock contention is resolved
by waiting instead of spinning. We get better results by dynamically
adjusting for elapsed running time instead of trying to fine tune
iteration counts that won't work for all CPU types, speeds, etc.
From observation, lock performance suffers if the spin time is higher
than the minimum wait time. Because of this, QMutex never increases the
spin time, it only reduces the spin time to the minimum observed wait time.
For very long wait times, we disable spinning completely (and always resolve
contention by waiting).
Use QThread::yieldCurrentThread() when spinning on a contended mutex. Comment
from the code: be a good citizen... yielding lets something else run if
there is something to run, but may also relieve memory pressure if not.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Use futex(2) to implement QMutexPrivate::wait() and ::wakeup(). This
makes QMutex perform more or less identically the same as
pthread_mutex_t when contended.
We have to use the contender count in a different way due to the way
that futex() waiting works. Waiting on a futex atomically checks that
the value has not changed from the expected value and then puts the
thread to sleep. So, on Linux, the contender QAtomicInt will only ever
be one of three values: 0 for unlocked, 1 for locked, 2 for contended.
This does mean that there is a slight chance for unfairness due to the
fetch-and-store to zero in the wakeUp() function, but unfortunately this
cannot be avoid as the code is now.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Use a Mach semaphore to implement QMutexPrivate::wait() and ::wakeup(). This
makes QMutex perform more or less identically the same as pthread_mutex_t when
contended.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Spinning is just wasted time on these systems.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
QMutexPrivate::wait() will take care of doing another test for the lock
before putting the thread to sleep, so we can avoid another if().
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Make the cross-platform implementation of QMutex in qmutex.cpp only use
testAndSetAcquire(0, 1) and testAndSetRelease(1, 0) like in the new inline
functions in qmutex.h
This will allow us to open up for more platform-specific optimizations to
improve performance of contended QMutexes.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
add test data and adapt the test harness to allow testing contention
performance when using 2 mutexes (2 mutexes are often used inside of Qt,
so we want to ensure that this also performs well).
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
2 semaphore barrier is not enough to ensure that every thread does run
as part of the benchmark. It is possible that a single thread, given
enough time, could do all the work while the other threads remain
dormant. Prevent this by making sure that the each thread rendevous with
both the semaphore barriers at the start of their run(), yields after
unlocking, and then rendevous again at the end.
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Also give the existing test data meaningful names
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
The performance should be about the same for all cases (meaning that our
spinning overhead should not add too much overhead).
Reviewed-by: joao
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
This benchmark also includes the same benchmark for the native type for
comparison.
Reviewed-by: joao
|