| 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 |