| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/yarr/YarrCanonicalizeUCS2.h |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | namespace JSC { namespace Yarr { | - | ||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | - | |||||||||||||
| 7 | enum UCS2CanonicalizationType { | - | ||||||||||||
| 8 | CanonicalizeUnique, | - | ||||||||||||
| 9 | CanonicalizeSet, | - | ||||||||||||
| 10 | CanonicalizeRangeLo, | - | ||||||||||||
| 11 | CanonicalizeRangeHi, | - | ||||||||||||
| 12 | CanonicalizeAlternatingAligned, | - | ||||||||||||
| 13 | CanonicalizeAlternatingUnaligned, | - | ||||||||||||
| 14 | }; | - | ||||||||||||
| 15 | struct UCS2CanonicalizationRange { uint16_t begin, end, value, type; }; | - | ||||||||||||
| 16 | extern const size_t UCS2_CANONICALIZATION_RANGES; | - | ||||||||||||
| 17 | extern uint16_t* characterSetInfo[]; | - | ||||||||||||
| 18 | extern UCS2CanonicalizationRange rangeInfo[]; | - | ||||||||||||
| 19 | - | |||||||||||||
| 20 | - | |||||||||||||
| 21 | - | |||||||||||||
| 22 | enum LatinCanonicalizationType { | - | ||||||||||||
| 23 | CanonicalizeLatinSelf, | - | ||||||||||||
| 24 | CanonicalizeLatinMask0x20, | - | ||||||||||||
| 25 | CanonicalizeLatinOther, | - | ||||||||||||
| 26 | CanonicalizeLatinInvalid, | - | ||||||||||||
| 27 | }; | - | ||||||||||||
| 28 | struct LatinCanonicalizationRange { uint16_t begin, end, value, type; }; | - | ||||||||||||
| 29 | extern const size_t LATIN_CANONICALIZATION_RANGES; | - | ||||||||||||
| 30 | extern LatinCanonicalizationRange latinRangeInfo[]; | - | ||||||||||||
| 31 | - | |||||||||||||
| 32 | - | |||||||||||||
| 33 | inline UCS2CanonicalizationRange* rangeInfoFor(UChar ch) | - | ||||||||||||
| 34 | { | - | ||||||||||||
| 35 | UCS2CanonicalizationRange* info = rangeInfo; | - | ||||||||||||
| 36 | size_t entries = UCS2_CANONICALIZATION_RANGES; | - | ||||||||||||
| 37 | - | |||||||||||||
| 38 | while (true) { | - | ||||||||||||
| 39 | size_t candidate = entries >> 1; | - | ||||||||||||
| 40 | UCS2CanonicalizationRange* candidateInfo = info + candidate; | - | ||||||||||||
| 41 | if (ch < candidateInfo->begin
| 118-660 | ||||||||||||
| 42 | entries = candidate; executed 660 times by 2 tests: entries = candidate;Executed by:
| 660 | ||||||||||||
| 43 | else if (ch <= candidateInfo->end
| 28-90 | ||||||||||||
| 44 | return executed 90 times by 2 tests: candidateInfo;return candidateInfo;Executed by:
executed 90 times by 2 tests: return candidateInfo;Executed by:
| 90 | ||||||||||||
| 45 | else { | - | ||||||||||||
| 46 | info = candidateInfo + 1; | - | ||||||||||||
| 47 | entries -= (candidate + 1); | - | ||||||||||||
| 48 | } executed 28 times by 1 test: end of blockExecuted by:
| 28 | ||||||||||||
| 49 | } | - | ||||||||||||
| 50 | } never executed: end of block | 0 | ||||||||||||
| 51 | - | |||||||||||||
| 52 | - | |||||||||||||
| 53 | inline UChar getCanonicalPair(UCS2CanonicalizationRange* info, UChar ch) | - | ||||||||||||
| 54 | { | - | ||||||||||||
| 55 | (!(ch >= info->begin && ch <= info->end) ? (qmlWTFReportAssertionFailure(__FILE__, 85, __PRETTY_FUNCTION__, "ch >= info->begin && ch <= info->end"), (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap())) : (void)0); | - | ||||||||||||
| 56 | switch (info->type) { | - | ||||||||||||
| 57 | case never executed: CanonicalizeRangeLo:case CanonicalizeRangeLo:never executed: case CanonicalizeRangeLo: | 0 | ||||||||||||
| 58 | return never executed: ch + info->value;return ch + info->value;never executed: return ch + info->value; | 0 | ||||||||||||
| 59 | case never executed: CanonicalizeRangeHi:case CanonicalizeRangeHi:never executed: case CanonicalizeRangeHi: | 0 | ||||||||||||
| 60 | return never executed: ch - info->value;return ch - info->value;never executed: return ch - info->value; | 0 | ||||||||||||
| 61 | case never executed: CanonicalizeAlternatingAligned:case CanonicalizeAlternatingAligned:never executed: case CanonicalizeAlternatingAligned: | 0 | ||||||||||||
| 62 | return never executed: ch ^ 1;return ch ^ 1;never executed: return ch ^ 1; | 0 | ||||||||||||
| 63 | case never executed: CanonicalizeAlternatingUnaligned:case CanonicalizeAlternatingUnaligned:never executed: case CanonicalizeAlternatingUnaligned: | 0 | ||||||||||||
| 64 | return never executed: ((ch - 1) ^ 1) + 1;return ((ch - 1) ^ 1) + 1;never executed: return ((ch - 1) ^ 1) + 1; | 0 | ||||||||||||
| 65 | default never executed: :default:never executed: default: | 0 | ||||||||||||
| 66 | do { qmlWTFReportAssertionFailure(__FILE__, 96, __PRETTY_FUNCTION__, 0); (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap()); } while (0); | - | ||||||||||||
| 67 | } never executed: end of block | 0 | ||||||||||||
| 68 | do { qmlWTFReportAssertionFailure(__FILE__, 98, __PRETTY_FUNCTION__, 0); (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap()); } while (0); | - | ||||||||||||
| 69 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 70 | } | - | ||||||||||||
| 71 | - | |||||||||||||
| 72 | - | |||||||||||||
| 73 | inline bool isCanonicallyUnique(UChar ch) | - | ||||||||||||
| 74 | { | - | ||||||||||||
| 75 | return executed 86 times by 2 tests: rangeInfoFor(ch)->type == CanonicalizeUnique;return rangeInfoFor(ch)->type == CanonicalizeUnique;Executed by:
executed 86 times by 2 tests: return rangeInfoFor(ch)->type == CanonicalizeUnique;Executed by:
| 86 | ||||||||||||
| 76 | } | - | ||||||||||||
| 77 | - | |||||||||||||
| 78 | - | |||||||||||||
| 79 | inline bool areCanonicallyEquivalent(UChar a, UChar b) | - | ||||||||||||
| 80 | { | - | ||||||||||||
| 81 | UCS2CanonicalizationRange* info = rangeInfoFor(a); | - | ||||||||||||
| 82 | switch (info->type) { | - | ||||||||||||
| 83 | case never executed: CanonicalizeUnique:case CanonicalizeUnique:never executed: case CanonicalizeUnique: | 0 | ||||||||||||
| 84 | return never executed: a == b;return a == b;never executed: return a == b; | 0 | ||||||||||||
| 85 | case never executed: CanonicalizeSet:case CanonicalizeSet:never executed: {case CanonicalizeSet: | 0 | ||||||||||||
| 86 | for (uint16_t* set = characterSetInfo[info->value]; (
| 0 | ||||||||||||
| 87 | if (a == b
| 0 | ||||||||||||
| 88 | return never executed: true;return true;never executed: return true; | 0 | ||||||||||||
| 89 | } never executed: end of block | 0 | ||||||||||||
| 90 | return never executed: false;return false;never executed: return false; | 0 | ||||||||||||
| 91 | } | - | ||||||||||||
| 92 | case never executed: CanonicalizeRangeLo:case CanonicalizeRangeLo:never executed: case CanonicalizeRangeLo: | 0 | ||||||||||||
| 93 | return never executed: (a == b) || (a + info->value == b);return (a == b) || (a + info->value == b);never executed: return (a == b) || (a + info->value == b); | 0 | ||||||||||||
| 94 | case never executed: CanonicalizeRangeHi:case CanonicalizeRangeHi:never executed: case CanonicalizeRangeHi: | 0 | ||||||||||||
| 95 | return never executed: (a == b) || (a - info->value == b);return (a == b) || (a - info->value == b);never executed: return (a == b) || (a - info->value == b); | 0 | ||||||||||||
| 96 | case never executed: CanonicalizeAlternatingAligned:case CanonicalizeAlternatingAligned:never executed: case CanonicalizeAlternatingAligned: | 0 | ||||||||||||
| 97 | return never executed: (a | 1) == (b | 1);return (a | 1) == (b | 1);never executed: return (a | 1) == (b | 1); | 0 | ||||||||||||
| 98 | case never executed: CanonicalizeAlternatingUnaligned:case CanonicalizeAlternatingUnaligned:never executed: case CanonicalizeAlternatingUnaligned: | 0 | ||||||||||||
| 99 | return never executed: ((a - 1) | 1) == ((b - 1) | 1);return ((a - 1) | 1) == ((b - 1) | 1);never executed: return ((a - 1) | 1) == ((b - 1) | 1); | 0 | ||||||||||||
| 100 | } | - | ||||||||||||
| 101 | - | |||||||||||||
| 102 | do { qmlWTFReportAssertionFailure(__FILE__, 132, __PRETTY_FUNCTION__, 0); (qmlWTFReportBacktrace(), qmlWTFInvokeCrashHook(), (*(int *)(uintptr_t)0xbbadbeef = 0), __builtin_trap()); } while (0); | - | ||||||||||||
| 103 | return never executed: false;return false;never executed: return false; | 0 | ||||||||||||
| 104 | } | - | ||||||||||||
| 105 | - | |||||||||||||
| 106 | } } | - | ||||||||||||
| Switch to Source code | Preprocessed file |