Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/corelib/thread/qmutexpool.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | - | |||||||
2 | - | |||||||
3 | - | |||||||
4 | - | |||||||
5 | - | |||||||
6 | namespace { namespace Q_QGS_globalMutexPool { typedef QMutexPool Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
executed 16 times by 16 tests: }guard.store(QtGlobalStatic::Destroyed); Executed by:
executed 16 times by 16 tests: }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type (QMutex::Recursive))) : value (QMutex::Recursive) { guard.store(QtGlobalStatic::Initialized); } } holder; returnend of block Executed by:
executed 143976 times by 32 tests: &holder.value;return &holder.value; Executed by:
executed 143976 times by 32 tests: } } } static QGlobalStatic<QMutexPool, Q_QGS_globalMutexPool::innerFunction, Q_QGS_globalMutexPool::guard> globalMutexPool;return &holder.value; Executed by:
| 0-143976 | ||||||
7 | QMutexPool::QMutexPool(QMutex::RecursionMode recursionMode, int size) | - | ||||||
8 | : mutexes(size), recursionMode(recursionMode) | - | ||||||
9 | { | - | ||||||
10 | for (int index = 0; index < mutexes.count()
| 16-2096 | ||||||
11 | mutexes[index].store(0); | - | ||||||
12 | } executed 2096 times by 16 tests: end of block Executed by:
| 2096 | ||||||
13 | } executed 16 times by 16 tests: end of block Executed by:
| 16 | ||||||
14 | - | |||||||
15 | - | |||||||
16 | - | |||||||
17 | - | |||||||
18 | - | |||||||
19 | QMutexPool::~QMutexPool() | - | ||||||
20 | { | - | ||||||
21 | for (int index = 0; index < mutexes.count()
| 16-2096 | ||||||
22 | delete mutexes[index].load(); executed 2096 times by 16 tests: delete mutexes[index].load(); Executed by:
| 2096 | ||||||
23 | } executed 16 times by 16 tests: end of block Executed by:
| 16 | ||||||
24 | - | |||||||
25 | - | |||||||
26 | - | |||||||
27 | - | |||||||
28 | QMutexPool *QMutexPool::instance() | - | ||||||
29 | { | - | ||||||
30 | return never executed: globalMutexPool();return globalMutexPool(); never executed: return globalMutexPool(); | 0 | ||||||
31 | } | - | ||||||
32 | QMutex *QMutexPool::createMutex(int index) | - | ||||||
33 | { | - | ||||||
34 | - | |||||||
35 | QMutex *newMutex = new QMutex(recursionMode); | - | ||||||
36 | if (!mutexes[index].testAndSetRelease(0, newMutex)
| 0-340 | ||||||
37 | delete newMutex; never executed: delete newMutex; | 0 | ||||||
38 | return executed 340 times by 17 tests: mutexes[index].load();return mutexes[index].load(); Executed by:
executed 340 times by 17 tests: return mutexes[index].load(); Executed by:
| 340 | ||||||
39 | } | - | ||||||
40 | - | |||||||
41 | - | |||||||
42 | - | |||||||
43 | - | |||||||
44 | QMutex *QMutexPool::globalInstanceGet(const void *address) | - | ||||||
45 | { | - | ||||||
46 | QMutexPool * const globalInstance = globalMutexPool(); | - | ||||||
47 | if (globalInstance == 0
| 0-143976 | ||||||
48 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||
49 | return executed 143976 times by 32 tests: globalInstance->get(address);return globalInstance->get(address); Executed by:
executed 143976 times by 32 tests: return globalInstance->get(address); Executed by:
| 143976 | ||||||
50 | } | - | ||||||
51 | - | |||||||
52 | - | |||||||
Switch to Source code | Preprocessed file |