Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | const QListData::Data QListData::shared_null = { { { (-1) } }, 0, 0, 0, { 0 } }; | - |
7 | | - |
8 | static int grow(int size) | - |
9 | { | - |
10 | | - |
11 | volatile int x = qAllocMore(size * sizeof(void *), QListData::DataHeaderSize) / sizeof(void *); | - |
12 | return x; executed: return x; Execution Count:1053559 | 1053559 |
13 | } | - |
14 | QListData::Data *QListData::detach_grow(int *idx, int num) | - |
15 | { | - |
16 | Data *x = d; | - |
17 | int l = x->end - x->begin; | - |
18 | int nl = l + num; | - |
19 | int alloc = grow(nl); | - |
20 | Data* t = static_cast<Data *>(::malloc(DataHeaderSize + alloc * sizeof(void *))); | - |
21 | do { if (!(t)) qBadAlloc(); } while (0); never executed: qBadAlloc(); executed: } Execution Count:817133 partially evaluated: !(t) no Evaluation Count:0 | yes Evaluation Count:817134 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:817126 |
| 0-817134 |
22 | | - |
23 | t->ref.initializeOwned(); | - |
24 | t->alloc = alloc; | - |
25 | | - |
26 | | - |
27 | | - |
28 | | - |
29 | | - |
30 | | - |
31 | int bg; | - |
32 | if (*idx < 0) { partially evaluated: *idx < 0 no Evaluation Count:0 | yes Evaluation Count:817126 |
| 0-817126 |
33 | *idx = 0; | - |
34 | bg = (alloc - nl) >> 1; | - |
35 | } else if (*idx > l) { evaluated: *idx > l yes Evaluation Count:761434 | yes Evaluation Count:55696 |
| 0-761434 |
36 | *idx = l; | - |
37 | bg = 0; | - |
38 | } else if (*idx < (l >> 1)) { executed: } Execution Count:761433 evaluated: *idx < (l >> 1) yes Evaluation Count:106 | yes Evaluation Count:55590 |
| 106-761433 |
39 | bg = (alloc - nl) >> 1; | - |
40 | } else { executed: } Execution Count:106 | 106 |
41 | bg = 0; | - |
42 | } executed: } Execution Count:55590 | 55590 |
43 | t->begin = bg; | - |
44 | t->end = bg + nl; | - |
45 | d = t; | - |
46 | | - |
47 | return x; executed: return x; Execution Count:817126 | 817126 |
48 | } | - |
49 | QListData::Data *QListData::detach(int alloc) | - |
50 | { | - |
51 | Data *x = d; | - |
52 | Data* t = static_cast<Data *>(::malloc(DataHeaderSize + alloc * sizeof(void *))); | - |
53 | do { if (!(t)) qBadAlloc(); } while (0); partially evaluated: !(t) no Evaluation Count:0 | yes Evaluation Count:83251 |
never executed: qBadAlloc(); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:83251 |
executed: } Execution Count:83251 | 0-83251 |
54 | | - |
55 | t->ref.initializeOwned(); | - |
56 | t->alloc = alloc; | - |
57 | if (!alloc) { evaluated: !alloc yes Evaluation Count:17658 | yes Evaluation Count:65593 |
| 17658-65593 |
58 | t->begin = 0; | - |
59 | t->end = 0; | - |
60 | } else { executed: } Execution Count:17658 | 17658 |
61 | t->begin = x->begin; | - |
62 | t->end = x->end; | - |
63 | } executed: } Execution Count:65593 | 65593 |
64 | d = t; | - |
65 | | - |
66 | return x; executed: return x; Execution Count:83251 | 83251 |
67 | } | - |
68 | | - |
69 | void QListData::realloc(int alloc) | - |
70 | { | - |
71 | qt_noop(); | - |
72 | Data *x = static_cast<Data *>(::realloc(d, DataHeaderSize + alloc * sizeof(void *))); | - |
73 | do { if (!(x)) qBadAlloc(); } while (0); never executed: qBadAlloc(); executed: } Execution Count:236434 partially evaluated: !(x) no Evaluation Count:0 | yes Evaluation Count:236434 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:236434 |
| 0-236434 |
74 | | - |
75 | d = x; | - |
76 | d->alloc = alloc; | - |
77 | if (!alloc) partially evaluated: !alloc no Evaluation Count:0 | yes Evaluation Count:236434 |
| 0-236434 |
78 | d->begin = d->end = 0; never executed: d->begin = d->end = 0; | 0 |
79 | } executed: } Execution Count:236434 | 236434 |
80 | | - |
81 | void QListData::dispose(Data *d) | - |
82 | { | - |
83 | qt_noop(); | - |
84 | free(d); | - |
85 | } executed: } Execution Count:901061 | 901061 |
86 | | - |
87 | | - |
88 | void **QListData::append(int n) | - |
89 | { | - |
90 | qt_noop(); | - |
91 | int e = d->end; | - |
92 | if (e + n > d->alloc) { evaluated: e + n > d->alloc yes Evaluation Count:282396 | yes Evaluation Count:6671648 |
| 282396-6671648 |
93 | int b = d->begin; | - |
94 | if (b - n >= 2 * d->alloc / 3) { evaluated: b - n >= 2 * d->alloc / 3 yes Evaluation Count:70983 | yes Evaluation Count:211413 |
| 70983-211413 |
95 | | - |
96 | e -= b; | - |
97 | ::memcpy(d->array, d->array + b, e * sizeof(void *)); | - |
98 | d->begin = 0; | - |
99 | } else { executed: } Execution Count:70982 | 70982 |
100 | realloc(grow(d->alloc + n)); | - |
101 | } executed: } Execution Count:211414 | 211414 |
102 | } | - |
103 | d->end = e + n; | - |
104 | return d->array + e; executed: return d->array + e; Execution Count:6954023 | 6954023 |
105 | } | - |
106 | | - |
107 | | - |
108 | void **QListData::append() | - |
109 | { | - |
110 | return append(1); executed: return append(1); Execution Count:6950936 | 6950936 |
111 | } | - |
112 | | - |
113 | | - |
114 | void **QListData::append(const QListData& l) | - |
115 | { | - |
116 | return append(l.d->end - l.d->begin); executed: return append(l.d->end - l.d->begin); Execution Count:1772 | 1772 |
117 | } | - |
118 | | - |
119 | void **QListData::prepend() | - |
120 | { | - |
121 | qt_noop(); | - |
122 | if (d->begin == 0) { evaluated: d->begin == 0 yes Evaluation Count:25372 | yes Evaluation Count:4248307 |
| 25372-4248307 |
123 | if (d->end >= d->alloc / 3) evaluated: d->end >= d->alloc / 3 yes Evaluation Count:24906 | yes Evaluation Count:466 |
| 466-24906 |
124 | realloc(grow(d->alloc + 1)); executed: realloc(grow(d->alloc + 1)); Execution Count:24906 | 24906 |
125 | | - |
126 | if (d->end < d->alloc / 3) evaluated: d->end < d->alloc / 3 yes Evaluation Count:18529 | yes Evaluation Count:6843 |
| 6843-18529 |
127 | d->begin = d->alloc - 2 * d->end; executed: d->begin = d->alloc - 2 * d->end; Execution Count:18529 | 18529 |
128 | else | - |
129 | d->begin = d->alloc - d->end; executed: d->begin = d->alloc - d->end; Execution Count:6843 | 6843 |
130 | | - |
131 | ::memmove(d->array + d->begin, d->array, d->end * sizeof(void *)); | - |
132 | d->end += d->begin; | - |
133 | } executed: } Execution Count:25372 | 25372 |
134 | return d->array + --d->begin; executed: return d->array + --d->begin; Execution Count:4273679 | 4273679 |
135 | } | - |
136 | | - |
137 | void **QListData::insert(int i) | - |
138 | { | - |
139 | qt_noop(); | - |
140 | if (i <= 0) evaluated: i <= 0 yes Evaluation Count:4223476 | yes Evaluation Count:1894015 |
| 1894015-4223476 |
141 | return prepend(); executed: return prepend(); Execution Count:4223476 | 4223476 |
142 | int size = d->end - d->begin; | - |
143 | if (i >= size) evaluated: i >= size yes Evaluation Count:1844889 | yes Evaluation Count:49126 |
| 49126-1844889 |
144 | return append(); executed: return append(); Execution Count:1844889 | 1844889 |
145 | | - |
146 | bool leftward = false; | - |
147 | | - |
148 | if (d->begin == 0) { evaluated: d->begin == 0 yes Evaluation Count:3199 | yes Evaluation Count:45927 |
| 3199-45927 |
149 | if (d->end == d->alloc) { evaluated: d->end == d->alloc yes Evaluation Count:114 | yes Evaluation Count:3085 |
| 114-3085 |
150 | | - |
151 | realloc(grow(d->alloc + 1)); | - |
152 | } else { executed: } Execution Count:114 | 114 |
153 | | - |
154 | } executed: } Execution Count:3085 | 3085 |
155 | } else { | - |
156 | if (d->end == d->alloc) { evaluated: d->end == d->alloc yes Evaluation Count:17815 | yes Evaluation Count:28112 |
| 17815-28112 |
157 | | - |
158 | leftward = true; | - |
159 | } else { executed: } Execution Count:17815 | 17815 |
160 | | - |
161 | leftward = (i < size - i); | - |
162 | } executed: } Execution Count:28112 | 28112 |
163 | } | - |
164 | | - |
165 | if (leftward) { evaluated: leftward yes Evaluation Count:19452 | yes Evaluation Count:29674 |
| 19452-29674 |
166 | --d->begin; | - |
167 | ::memmove(d->array + d->begin, d->array + d->begin + 1, i * sizeof(void *)); | - |
168 | } else { executed: } Execution Count:19452 | 19452 |
169 | ::memmove(d->array + d->begin + i + 1, d->array + d->begin + i, | - |
170 | (size - i) * sizeof(void *)); | - |
171 | ++d->end; | - |
172 | } executed: } Execution Count:29674 | 29674 |
173 | return d->array + d->begin + i; executed: return d->array + d->begin + i; Execution Count:49126 | 49126 |
174 | } | - |
175 | | - |
176 | void QListData::remove(int i) | - |
177 | { | - |
178 | qt_noop(); | - |
179 | i += d->begin; | - |
180 | if (i - d->begin < d->end - i) { evaluated: i - d->begin < d->end - i yes Evaluation Count:6749003 | yes Evaluation Count:670433 |
| 670433-6749003 |
181 | if (int offset = i - d->begin) evaluated: int offset = i - d->begin yes Evaluation Count:27254 | yes Evaluation Count:6721749 |
| 27254-6721749 |
182 | ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *)); executed: ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *)); Execution Count:27254 | 27254 |
183 | d->begin++; | - |
184 | } else { executed: } Execution Count:6749002 | 6749002 |
185 | if (int offset = d->end - i - 1) evaluated: int offset = d->end - i - 1 yes Evaluation Count:516649 | yes Evaluation Count:153784 |
| 153784-516649 |
186 | ::memmove(d->array + i, d->array + i + 1, offset * sizeof(void *)); executed: ::memmove(d->array + i, d->array + i + 1, offset * sizeof(void *)); Execution Count:516649 | 516649 |
187 | d->end--; | - |
188 | } executed: } Execution Count:670433 | 670433 |
189 | } | - |
190 | | - |
191 | void QListData::remove(int i, int n) | - |
192 | { | - |
193 | qt_noop(); | - |
194 | i += d->begin; | - |
195 | int middle = i + n/2; | - |
196 | if (middle - d->begin < d->end - middle) { evaluated: middle - d->begin < d->end - middle yes Evaluation Count:43 | yes Evaluation Count:109333 |
| 43-109333 |
197 | ::memmove(d->array + d->begin + n, d->array + d->begin, | - |
198 | (i - d->begin) * sizeof(void*)); | - |
199 | d->begin += n; | - |
200 | } else { executed: } Execution Count:43 | 43 |
201 | ::memmove(d->array + i, d->array + i + n, | - |
202 | (d->end - i - n) * sizeof(void*)); | - |
203 | d->end -= n; | - |
204 | } executed: } Execution Count:109332 | 109332 |
205 | } | - |
206 | | - |
207 | void QListData::move(int from, int to) | - |
208 | { | - |
209 | qt_noop(); | - |
210 | if (from == to) evaluated: from == to yes Evaluation Count:4329 | yes Evaluation Count:5950 |
| 4329-5950 |
211 | return; executed: return; Execution Count:4329 | 4329 |
212 | | - |
213 | from += d->begin; | - |
214 | to += d->begin; | - |
215 | void *t = d->array[from]; | - |
216 | | - |
217 | if (from < to) { evaluated: from < to yes Evaluation Count:4584 | yes Evaluation Count:1366 |
| 1366-4584 |
218 | if (d->end == d->alloc || 3 * (to - from) < 2 * (d->end - d->begin)) { evaluated: d->end == d->alloc yes Evaluation Count:1133 | yes Evaluation Count:3451 |
evaluated: 3 * (to - from) < 2 * (d->end - d->begin) yes Evaluation Count:2640 | yes Evaluation Count:811 |
| 811-3451 |
219 | ::memmove(d->array + from, d->array + from + 1, (to - from) * sizeof(void *)); | - |
220 | } else { executed: } Execution Count:3773 | 3773 |
221 | | - |
222 | if (int offset = from - d->begin) evaluated: int offset = from - d->begin yes Evaluation Count:474 | yes Evaluation Count:337 |
| 337-474 |
223 | ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *)); executed: ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *)); Execution Count:474 | 474 |
224 | if (int offset = d->end - (to + 1)) partially evaluated: int offset = d->end - (to + 1) no Evaluation Count:0 | yes Evaluation Count:811 |
| 0-811 |
225 | ::memmove(d->array + to + 2, d->array + to + 1, offset * sizeof(void *)); never executed: ::memmove(d->array + to + 2, d->array + to + 1, offset * sizeof(void *)); | 0 |
226 | ++d->begin; | - |
227 | ++d->end; | - |
228 | ++to; | - |
229 | } executed: } Execution Count:811 | 811 |
230 | } else { | - |
231 | if (d->begin == 0 || 3 * (from - to) < 2 * (d->end - d->begin)) { evaluated: d->begin == 0 yes Evaluation Count:899 | yes Evaluation Count:467 |
evaluated: 3 * (from - to) < 2 * (d->end - d->begin) yes Evaluation Count:35 | yes Evaluation Count:432 |
| 35-899 |
232 | ::memmove(d->array + to + 1, d->array + to, (from - to) * sizeof(void *)); | - |
233 | } else { executed: } Execution Count:934 | 934 |
234 | | - |
235 | if (int offset = to - d->begin) partially evaluated: int offset = to - d->begin no Evaluation Count:0 | yes Evaluation Count:432 |
| 0-432 |
236 | ::memmove(d->array + d->begin - 1, d->array + d->begin, offset * sizeof(void *)); never executed: ::memmove(d->array + d->begin - 1, d->array + d->begin, offset * sizeof(void *)); | 0 |
237 | if (int offset = d->end - (from + 1)) evaluated: int offset = d->end - (from + 1) yes Evaluation Count:388 | yes Evaluation Count:44 |
| 44-388 |
238 | ::memmove(d->array + from, d->array + from + 1, offset * sizeof(void *)); executed: ::memmove(d->array + from, d->array + from + 1, offset * sizeof(void *)); Execution Count:388 | 388 |
239 | --d->begin; | - |
240 | --d->end; | - |
241 | --to; | - |
242 | } executed: } Execution Count:432 | 432 |
243 | } | - |
244 | d->array[to] = t; | - |
245 | } executed: } Execution Count:5950 | 5950 |
246 | | - |
247 | void **QListData::erase(void **xi) | - |
248 | { | - |
249 | qt_noop(); | - |
250 | int i = xi - (d->array + d->begin); | - |
251 | remove(i); | - |
252 | return d->array + d->begin + i; executed: return d->array + d->begin + i; Execution Count:7164638 | 7164638 |
253 | } | - |
254 | | - |
255 | | - |
| | |