Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/wtf/StdLibExtras.h |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | template<typename Type> | - | ||||||||||||
2 | bool isPointerTypeAlignmentOkay(Type*) | - | ||||||||||||
3 | { | - | ||||||||||||
4 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||
5 | } | - | ||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | namespace WTF { | - | ||||||||||||
10 | - | |||||||||||||
11 | static const size_t KB = 1024; | - | ||||||||||||
12 | static const size_t MB = 1024 * 1024; | - | ||||||||||||
13 | - | |||||||||||||
14 | inline bool isPointerAligned(void* p) | - | ||||||||||||
15 | { | - | ||||||||||||
16 | return never executed: !((intptr_t)(p) & (sizeof(char*) - 1));return !((intptr_t)(p) & (sizeof(char*) - 1)); never executed: return !((intptr_t)(p) & (sizeof(char*) - 1)); | 0 | ||||||||||||
17 | } | - | ||||||||||||
18 | - | |||||||||||||
19 | inline bool is8ByteAligned(void* p) | - | ||||||||||||
20 | { | - | ||||||||||||
21 | return never executed: !((uintptr_t)(p) & (sizeof(double) - 1));return !((uintptr_t)(p) & (sizeof(double) - 1)); never executed: return !((uintptr_t)(p) & (sizeof(double) - 1)); | 0 | ||||||||||||
22 | } | - | ||||||||||||
23 | - | |||||||||||||
24 | - | |||||||||||||
25 | - | |||||||||||||
26 | - | |||||||||||||
27 | template<typename TO, typename FROM> | - | ||||||||||||
28 | inline TO bitwise_cast(FROM from) | - | ||||||||||||
29 | { | - | ||||||||||||
30 | static_assert((sizeof(TO) == sizeof(FROM)), "WTF_bitwise_cast_sizeof_casted_types_is_equal"); | - | ||||||||||||
31 | union { | - | ||||||||||||
32 | FROM from; | - | ||||||||||||
33 | TO to; | - | ||||||||||||
34 | } u; | - | ||||||||||||
35 | u.from = from; | - | ||||||||||||
36 | return never executed: u.to;return u.to; never executed: return u.to; | 0 | ||||||||||||
37 | } | - | ||||||||||||
38 | - | |||||||||||||
39 | template<typename To, typename From> | - | ||||||||||||
40 | inline To safeCast(From value) | - | ||||||||||||
41 | { | - | ||||||||||||
42 | (!(isInBounds<To>(value)) ? (qmlWTFReportAssertionFailure(__FILE__, 146, __PRETTY_FUNCTION__, "isInBounds<To>(value)"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
43 | return never executed: static_cast<To>(value);return static_cast<To>(value); never executed: return static_cast<To>(value); | 0 | ||||||||||||
44 | } | - | ||||||||||||
45 | - | |||||||||||||
46 | - | |||||||||||||
47 | inline size_t bitCount(unsigned bits) | - | ||||||||||||
48 | { | - | ||||||||||||
49 | bits = bits - ((bits >> 1) & 0x55555555); | - | ||||||||||||
50 | bits = (bits & 0x33333333) + ((bits >> 2) & 0x33333333); | - | ||||||||||||
51 | return never executed: (((bits + (bits >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24;return (((bits + (bits >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; never executed: return (((bits + (bits >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; | 0 | ||||||||||||
52 | } | - | ||||||||||||
53 | - | |||||||||||||
54 | - | |||||||||||||
55 | template<typename T, size_t Size> char (&ArrayLengthHelperFunction(T (&)[Size]))[Size]; | - | ||||||||||||
56 | - | |||||||||||||
57 | - | |||||||||||||
58 | template<typename T> char (&ArrayLengthHelperFunction(T (&)[0]))[0]; | - | ||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | - | |||||||||||||
62 | - | |||||||||||||
63 | inline size_t roundUpToMultipleOf(size_t divisor, size_t x) | - | ||||||||||||
64 | { | - | ||||||||||||
65 | ((divisor && !(divisor & (divisor - 1))) ? static_cast<void>(0) : qt_assert("divisor && !(divisor & (divisor - 1))", __FILE__, 169)); | - | ||||||||||||
66 | size_t remainderMask = divisor - 1; | - | ||||||||||||
67 | return executed 3626840 times by 153 tests: (x + remainderMask) & ~remainderMask;return (x + remainderMask) & ~remainderMask; Executed by:
executed 3626840 times by 153 tests: return (x + remainderMask) & ~remainderMask; Executed by:
| 3626840 | ||||||||||||
68 | } | - | ||||||||||||
69 | template<size_t divisor> inline size_t roundUpToMultipleOf(size_t x) | - | ||||||||||||
70 | { | - | ||||||||||||
71 | static_assert((divisor && !(divisor & (divisor - 1))), "divisor_is_a_power_of_two"); | - | ||||||||||||
72 | return never executed: roundUpToMultipleOf(divisor, x);return roundUpToMultipleOf(divisor, x); never executed: return roundUpToMultipleOf(divisor, x); | 0 | ||||||||||||
73 | } | - | ||||||||||||
74 | - | |||||||||||||
75 | enum BinarySearchMode { | - | ||||||||||||
76 | KeyMustBePresentInArray, | - | ||||||||||||
77 | KeyMightNotBePresentInArray, | - | ||||||||||||
78 | ReturnAdjacentElementIfKeyIsNotPresent | - | ||||||||||||
79 | }; | - | ||||||||||||
80 | - | |||||||||||||
81 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey, BinarySearchMode mode> | - | ||||||||||||
82 | inline ArrayElementType* binarySearchImpl(ArrayType& array, size_t size, KeyType key, const ExtractKey& extractKey = ExtractKey()) | - | ||||||||||||
83 | { | - | ||||||||||||
84 | size_t offset = 0; | - | ||||||||||||
85 | while (size > 1
| 0 | ||||||||||||
86 | size_t pos = (size - 1) >> 1; | - | ||||||||||||
87 | KeyType val = extractKey(&array[offset + pos]); | - | ||||||||||||
88 | - | |||||||||||||
89 | if (val == key
| 0 | ||||||||||||
90 | return never executed: &array[offset + pos];return &array[offset + pos]; never executed: return &array[offset + pos]; | 0 | ||||||||||||
91 | - | |||||||||||||
92 | - | |||||||||||||
93 | if (key < val
| 0 | ||||||||||||
94 | size = pos; never executed: size = pos; | 0 | ||||||||||||
95 | - | |||||||||||||
96 | else { | - | ||||||||||||
97 | size -= (pos + 1); | - | ||||||||||||
98 | offset += (pos + 1); | - | ||||||||||||
99 | } never executed: end of block | 0 | ||||||||||||
100 | - | |||||||||||||
101 | (!(mode != KeyMustBePresentInArray || size) ? (qmlWTFReportAssertionFailure(__FILE__, 205, __PRETTY_FUNCTION__, "mode != KeyMustBePresentInArray || size"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
102 | } never executed: end of block | 0 | ||||||||||||
103 | - | |||||||||||||
104 | if (mode == KeyMightNotBePresentInArray
| 0 | ||||||||||||
105 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
106 | - | |||||||||||||
107 | ArrayElementType* result = &array[offset]; | - | ||||||||||||
108 | - | |||||||||||||
109 | if (mode == KeyMightNotBePresentInArray
| 0 | ||||||||||||
110 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
111 | - | |||||||||||||
112 | if (mode == KeyMustBePresentInArray
| 0 | ||||||||||||
113 | (!(size == 1) ? (qmlWTFReportAssertionFailure(__FILE__, 217, __PRETTY_FUNCTION__, "size == 1"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
114 | (!(key == extractKey(result)) ? (qmlWTFReportAssertionFailure(__FILE__, 218, __PRETTY_FUNCTION__, "key == extractKey(result)"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
115 | } never executed: end of block | 0 | ||||||||||||
116 | - | |||||||||||||
117 | return never executed: result;return result; never executed: return result; | 0 | ||||||||||||
118 | } | - | ||||||||||||
119 | - | |||||||||||||
120 | - | |||||||||||||
121 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
122 | inline ArrayElementType* binarySearch(ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
123 | { | - | ||||||||||||
124 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(array, size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(array, size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(array, size, key, extractKey); | 0 | ||||||||||||
125 | } | - | ||||||||||||
126 | - | |||||||||||||
127 | - | |||||||||||||
128 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
129 | inline ArrayElementType* tryBinarySearch(ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
130 | { | - | ||||||||||||
131 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(array, size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(array, size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(array, size, key, extractKey); | 0 | ||||||||||||
132 | } | - | ||||||||||||
133 | - | |||||||||||||
134 | - | |||||||||||||
135 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
136 | inline ArrayElementType* approximateBinarySearch(ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
137 | { | - | ||||||||||||
138 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(array, size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(array, size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(array, size, key, extractKey); | 0 | ||||||||||||
139 | } | - | ||||||||||||
140 | - | |||||||||||||
141 | - | |||||||||||||
142 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
143 | inline ArrayElementType* binarySearch(const ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
144 | { | - | ||||||||||||
145 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMustBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey); | 0 | ||||||||||||
146 | } | - | ||||||||||||
147 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
148 | inline ArrayElementType* tryBinarySearch(const ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
149 | { | - | ||||||||||||
150 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, KeyMightNotBePresentInArray>(const_cast<ArrayType&>(array), size, key, extractKey); | 0 | ||||||||||||
151 | } | - | ||||||||||||
152 | template<typename ArrayElementType, typename KeyType, typename ArrayType, typename ExtractKey> | - | ||||||||||||
153 | inline ArrayElementType* approximateBinarySearch(const ArrayType& array, size_t size, KeyType key, ExtractKey extractKey = ExtractKey()) | - | ||||||||||||
154 | { | - | ||||||||||||
155 | return never executed: binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(const_cast<ArrayType&>(array), size, key, extractKey);return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(const_cast<ArrayType&>(array), size, key, extractKey); never executed: return binarySearchImpl<ArrayElementType, KeyType, ArrayType, ExtractKey, ReturnAdjacentElementIfKeyIsNotPresent>(const_cast<ArrayType&>(array), size, key, extractKey); | 0 | ||||||||||||
156 | } | - | ||||||||||||
157 | - | |||||||||||||
158 | } | - | ||||||||||||
159 | - | |||||||||||||
160 | - | |||||||||||||
161 | enum NotNullTag { NotNull }; | - | ||||||||||||
162 | inline void* operator new(size_t, NotNullTag, void* location) | - | ||||||||||||
163 | { | - | ||||||||||||
164 | (!(location) ? (qmlWTFReportAssertionFailure(__FILE__, 268, __PRETTY_FUNCTION__, "location"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
165 | return never executed: location;return location; never executed: return location; | 0 | ||||||||||||
166 | } | - | ||||||||||||
167 | - | |||||||||||||
168 | using WTF::KB; | - | ||||||||||||
169 | using WTF::MB; | - | ||||||||||||
170 | using WTF::isPointerAligned; | - | ||||||||||||
171 | using WTF::is8ByteAligned; | - | ||||||||||||
172 | using WTF::binarySearch; | - | ||||||||||||
173 | using WTF::tryBinarySearch; | - | ||||||||||||
174 | using WTF::approximateBinarySearch; | - | ||||||||||||
175 | using WTF::bitwise_cast; | - | ||||||||||||
176 | using WTF::safeCast; | - | ||||||||||||
Switch to Source code | Preprocessed file |