Changeset View
Changeset View
Standalone View
Standalone View
src/lib/caching/kshareddatacache.cpp
Show First 20 Lines • Show All 72 Lines • ▼ Show 20 Line(s) | 64 | { | |||
---|---|---|---|---|---|
73 | 73 | | |||
74 | if (align && len >= 4) { | 74 | if (align && len >= 4) { | ||
75 | // Pre-load the temp registers | 75 | // Pre-load the temp registers | ||
76 | 76 | | |||
77 | unsigned int t = 0, d = 0; | 77 | unsigned int t = 0, d = 0; | ||
78 | 78 | | |||
79 | switch (align) { | 79 | switch (align) { | ||
80 | case 1: t |= data[2] << 16; | 80 | case 1: t |= data[2] << 16; | ||
81 | Q_FALLTHROUGH(); | ||||
81 | case 2: t |= data[1] << 8; | 82 | case 2: t |= data[1] << 8; | ||
83 | Q_FALLTHROUGH(); | ||||
82 | case 3: t |= data[0]; | 84 | case 3: t |= data[0]; | ||
83 | } | 85 | } | ||
84 | 86 | | |||
85 | t <<= (8 * align); | 87 | t <<= (8 * align); | ||
86 | 88 | | |||
87 | data += 4 - align; | 89 | data += 4 - align; | ||
88 | len -= 4 - align; | 90 | len -= 4 - align; | ||
89 | 91 | | |||
Show All 17 Lines | |||||
107 | // Handle leftover data in temp registers | 109 | // Handle leftover data in temp registers | ||
108 | 110 | | |||
109 | int pack = len < align ? len : align; | 111 | int pack = len < align ? len : align; | ||
110 | 112 | | |||
111 | d = 0; | 113 | d = 0; | ||
112 | 114 | | |||
113 | switch (pack) { | 115 | switch (pack) { | ||
114 | case 3: d |= data[2] << 16; | 116 | case 3: d |= data[2] << 16; | ||
117 | Q_FALLTHROUGH(); | ||||
115 | case 2: d |= data[1] << 8; | 118 | case 2: d |= data[1] << 8; | ||
119 | Q_FALLTHROUGH(); | ||||
116 | case 1: d |= data[0]; | 120 | case 1: d |= data[0]; | ||
121 | Q_FALLTHROUGH(); | ||||
117 | case 0: h += (t >> sr) | (d << sl); | 122 | case 0: h += (t >> sr) | (d << sl); | ||
118 | h *= m; | 123 | h *= m; | ||
119 | h ^= h >> r; | 124 | h ^= h >> r; | ||
120 | } | 125 | } | ||
121 | 126 | | |||
122 | data += pack; | 127 | data += pack; | ||
123 | len -= pack; | 128 | len -= pack; | ||
124 | } else { | 129 | } else { | ||
125 | while (len >= 4) { | 130 | while (len >= 4) { | ||
126 | h += *reinterpret_cast<const unsigned int *>(data); | 131 | h += *reinterpret_cast<const unsigned int *>(data); | ||
127 | h *= m; | 132 | h *= m; | ||
128 | h ^= h >> r; | 133 | h ^= h >> r; | ||
129 | 134 | | |||
130 | data += 4; | 135 | data += 4; | ||
131 | len -= 4; | 136 | len -= 4; | ||
132 | } | 137 | } | ||
133 | } | 138 | } | ||
134 | 139 | | |||
135 | //---------- | 140 | //---------- | ||
136 | // Handle tail bytes | 141 | // Handle tail bytes | ||
137 | 142 | | |||
138 | switch (len) { | 143 | switch (len) { | ||
139 | case 3: h += data[2] << 16; | 144 | case 3: h += data[2] << 16; | ||
145 | Q_FALLTHROUGH(); | ||||
140 | case 2: h += data[1] << 8; | 146 | case 2: h += data[1] << 8; | ||
147 | Q_FALLTHROUGH(); | ||||
141 | case 1: h += data[0]; | 148 | case 1: h += data[0]; | ||
142 | h *= m; | 149 | h *= m; | ||
143 | h ^= h >> r; | 150 | h ^= h >> r; | ||
144 | }; | 151 | }; | ||
145 | 152 | | |||
146 | h *= m; | 153 | h *= m; | ||
147 | h ^= h >> 10; | 154 | h ^= h >> 10; | ||
148 | h *= m; | 155 | h *= m; | ||
▲ Show 20 Lines • Show All 1574 Lines • Show Last 20 Lines |