| line |
true |
false |
branch |
|
40
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
57
|
57 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
59
|
57 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
|
0 |
57 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
62
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
64
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
68
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
86
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_lim > 0); |
|
87
|
0 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
91
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
94
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
99
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
103
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
|
0 |
0 |
while (node_id && (cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
106
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
112
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
129
|
122 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
132
|
122 |
0 |
if (!node_id) { |
|
142
|
0 |
0 |
if (!(cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
146
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
149
|
0 |
0 |
} while (node_id); |
|
152
|
0 |
0 |
if (!(rbhash_w[path.refs[p_i-1]] & 1)) { |
|
160
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
163
|
0 |
0 |
if (!node_id) { |
|
173
|
0 |
0 |
if (!(cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) |
|
177
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
180
|
0 |
0 |
} while (node_id); |
|
183
|
0 |
0 |
if (!(rbhash_w[path.refs[p_i-1]] & 1)) { |
|
191
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
206
|
0 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
208
|
0 |
0 |
if ((cur= rbhash_w[ref])) { |
|
215
|
0 |
0 |
while ((cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
219
|
0 |
0 |
if (!cur) |
|
222
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
229
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
231
|
0 |
0 |
if ((cur= rbhash_w[ref])) { |
|
238
|
0 |
0 |
while ((cmp= search_fd - ((struct pollfd*)rbhash)[(int)node_id-1-(int)capacity].fd)) { |
|
242
|
0 |
0 |
if (!cur) |
|
245
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
252
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
273
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && new_node_id); |
|
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && new_node_id); |
|
274
|
0 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
277
|
0 |
0 |
POLLFD_RBHASH_ASSERT(((uint16_t*) rbhash)[new_node_id] == 0); |
|
287
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
290
|
0 |
0 |
POLLFD_RBHASH_ASSERT(((uint32_t*) rbhash)[new_node_id] == 0); |
|
300
|
0 |
0 |
POLLFD_RBHASH_ASSERT(capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16); |
|
338
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && rbhash[path->refs[p_i]] == 0); |
|
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && rbhash[path->refs[p_i]] == 0); |
|
343
|
0 |
0 |
while (p_i > 0) { |
|
348
|
0 |
0 |
if (!(pos & 1)) |
|
353
|
0 |
0 |
if (!(rbhash[pos_ref^1]&1)) { |
|
361
|
0 |
0 |
if (child&1) { |
|
389
|
0 |
0 |
if (rbhash[path->refs[0]] & 1) |
|
421
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && rbhash[path->refs[p_i]] == 0); |
|
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len > 0 && rbhash[path->refs[p_i]] == 0); |
|
426
|
0 |
0 |
while (p_i > 0) { |
|
431
|
0 |
0 |
if (!(pos & 1)) |
|
436
|
0 |
0 |
if (!(rbhash[pos_ref^1]&1)) { |
|
444
|
0 |
0 |
if (child&1) { |
|
472
|
0 |
0 |
if (rbhash[path->refs[0]] & 1) |
|
501
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len >= 1); |
|
506
|
0 |
0 |
POLLFD_RBHASH_ASSERT(pos != 0); |
|
512
|
0 |
0 |
if (ch1 || ch2) { |
|
|
0 |
0 |
if (ch1 || ch2) { |
|
513
|
0 |
0 |
if (ch1 && ch2) { |
|
|
0 |
0 |
if (ch1 && ch2) { |
|
520
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
524
|
0 |
0 |
while ((alt= rbhash[ref= alt | 1])) { |
|
526
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
532
|
0 |
0 |
if ((alt2= rbhash[(alt >> 1 << 1)])) { |
|
533
|
0 |
0 |
POLLFD_RBHASH_ASSERT(alt2 & 1); |
|
564
|
0 |
0 |
if (!(pos & 1)) { |
|
573
|
0 |
0 |
while (p_i >= 0) { |
|
581
|
0 |
0 |
if (sibling & 1) { |
|
591
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
601
|
0 |
0 |
if (!((near_nephew|rbhash[near_nephew_ref ^ 1]) & 1)) { |
|
602
|
0 |
0 |
POLLFD_RBHASH_ASSERT(sibling > 1); |
|
605
|
0 |
0 |
if (p_i < 1) |
|
608
|
0 |
0 |
if (rbhash[pos_ref] & 1) { |
|
627
|
0 |
0 |
if (near_nephew & 1) { |
|
639
|
0 |
0 |
POLLFD_RBHASH_ASSERT(sibling > 1); |
|
651
|
0 |
0 |
if (rbhash[parent_refs[0]] & 1) |
|
667
|
0 |
0 |
POLLFD_RBHASH_ASSERT(path->len >= 1); |
|
672
|
0 |
0 |
POLLFD_RBHASH_ASSERT(pos != 0); |
|
678
|
0 |
0 |
if (ch1 || ch2) { |
|
|
0 |
0 |
if (ch1 || ch2) { |
|
679
|
0 |
0 |
if (ch1 && ch2) { |
|
|
0 |
0 |
if (ch1 && ch2) { |
|
686
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
690
|
0 |
0 |
while ((alt= rbhash[ref= alt | 1])) { |
|
692
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
698
|
0 |
0 |
if ((alt2= rbhash[(alt >> 1 << 1)])) { |
|
699
|
0 |
0 |
POLLFD_RBHASH_ASSERT(alt2 & 1); |
|
730
|
0 |
0 |
if (!(pos & 1)) { |
|
739
|
0 |
0 |
while (p_i >= 0) { |
|
747
|
0 |
0 |
if (sibling & 1) { |
|
757
|
0 |
0 |
POLLFD_RBHASH_ASSERT(p_i < p_lim); |
|
767
|
0 |
0 |
if (!((near_nephew|rbhash[near_nephew_ref ^ 1]) & 1)) { |
|
768
|
0 |
0 |
POLLFD_RBHASH_ASSERT(sibling > 1); |
|
771
|
0 |
0 |
if (p_i < 1) |
|
774
|
0 |
0 |
if (rbhash[pos_ref] & 1) { |
|
793
|
0 |
0 |
if (near_nephew & 1) { |
|
805
|
0 |
0 |
POLLFD_RBHASH_ASSERT(sibling > 1); |
|
817
|
0 |
0 |
if (rbhash[parent_refs[0]] & 1) |
|
836
|
0 |
0 |
if (!node) { |
|
842
|
0 |
0 |
while (node && pos) { |
|
|
0 |
0 |
while (node && pos) { |
|
847
|
0 |
0 |
for (i= 1; i < pos; i++) |
|
848
|
0 |
0 |
if ((node_path[i]>>1) == (node_path[pos]>>1)) |
|
852
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_8 |
|
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_8 |
|
853
|
0 |
0 |
&& node <= max_node && rbhash[(node<<1)|1] |
|
|
0 |
0 |
&& node <= max_node && rbhash[(node<<1)|1] |
|
861
|
0 |
0 |
for (i= 2; i < pos; i++) |
|
862
|
0 |
0 |
fputs((node_path[i]&1) == (node_path[i+1]&1)? " " : " |", out); |
|
863
|
0 |
0 |
if (pos > 1) |
|
864
|
0 |
0 |
fputs((node_path[pos]&1)? " `" : " ,", out); |
|
867
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
869
|
0 |
0 |
(node > max_node? '!' : (rbhash[ (node_path[pos-1]|1) ^ (node_path[pos]&1) ]&1)? 'R':'B'), |
|
874
|
0 |
0 |
: node > max_node? " VALUE OUT OF BOUNDS" |
|
875
|
0 |
0 |
: "" |
|
877
|
0 |
0 |
if (print_node) print_node(userdata, node, out); |
|
882
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_8 |
|
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_8 |
|
883
|
0 |
0 |
&& node <= max_node && rbhash[node<<1] |
|
|
0 |
0 |
&& node <= max_node && rbhash[node<<1] |
|
908
|
0 |
0 |
if (!node) { |
|
914
|
0 |
0 |
while (node && pos) { |
|
|
0 |
0 |
while (node && pos) { |
|
919
|
0 |
0 |
for (i= 1; i < pos; i++) |
|
920
|
0 |
0 |
if ((node_path[i]>>1) == (node_path[pos]>>1)) |
|
924
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_16 |
|
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_16 |
|
925
|
0 |
0 |
&& node <= max_node && rbhash[(node<<1)|1] |
|
|
0 |
0 |
&& node <= max_node && rbhash[(node<<1)|1] |
|
933
|
0 |
0 |
for (i= 2; i < pos; i++) |
|
934
|
0 |
0 |
fputs((node_path[i]&1) == (node_path[i+1]&1)? " " : " |", out); |
|
935
|
0 |
0 |
if (pos > 1) |
|
936
|
0 |
0 |
fputs((node_path[pos]&1)? " `" : " ,", out); |
|
939
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
|
0 |
0 |
fprintf(out, "--%c%c%c #%ld%s ", |
|
941
|
0 |
0 |
(node > max_node? '!' : (rbhash[ (node_path[pos-1]|1) ^ (node_path[pos]&1) ]&1)? 'R':'B'), |
|
946
|
0 |
0 |
: node > max_node? " VALUE OUT OF BOUNDS" |
|
947
|
0 |
0 |
: "" |
|
949
|
0 |
0 |
if (print_node) print_node(userdata, node, out); |
|
954
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_16 |
|
|
0 |
0 |
if (!cycle && pos < POLLFD_RBHASH_MAX_TREE_HEIGHT_16 |
|
955
|
0 |
0 |
&& node <= max_node && rbhash[node<<1] |
|
|
0 |
0 |
&& node <= max_node && rbhash[node<<1] |
|
979
|
0 |
0 |
(long) capacity, (long) n_buckets, (long) POLLFD_RBHASH_SIZEOF(capacity, n_buckets)); |
|
980
|
0 |
0 |
if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_8) { |
|
983
|
0 |
0 |
for (i= 0; i < n_buckets; i++) { |
|
984
|
0 |
0 |
if (table[i]) { |
|
985
|
0 |
0 |
if (empty) { |
|
994
|
0 |
0 |
if (empty) { |
|
999
|
0 |
0 |
else if (capacity <= POLLFD_RBHASH_MAX_ELEMENTS_16) { |
|
1002
|
0 |
0 |
for (i= 0; i < n_buckets; i++) { |
|
1003
|
0 |
0 |
if (table[i]) { |
|
1004
|
0 |
0 |
if (empty) { |
|
1013
|
0 |
0 |
if (empty) { |