| line |
true |
false |
branch |
|
259
|
2 |
88 |
switch (mode) |
|
272
|
0 |
117 |
if ((he = hv_fetch_ent(THIS->hv, key, 1, 0)) == NULL) |
|
279
|
88 |
29 |
if (SvTYPE(pair) == SVt_NULL) |
|
289
|
4 |
84 |
if (mode == SM_GET_NUM) |
|
295
|
0 |
84 |
if (mode == SM_GET && !value) |
|
|
0 |
0 |
if (mode == SM_GET && !value) |
|
307
|
12 |
17 |
if (mode < SM_GET) |
|
309
|
2 |
10 |
if (mode != SM_SET) |
|
326
|
15 |
15 |
for (cur = THIS->root->next; cur != THIS->root;) |
|
344
|
0 |
164 |
if ((he = hv_fetch_ent(THIS->hv, key, 0, 0)) == NULL) |
|
373
|
1 |
23 |
THI_CHECK_ITERATOR; |
|
375
|
23 |
0 |
if (GIMME_V == G_ARRAY && THIS->cur != THIS->end) |
|
|
7 |
16 |
if (GIMME_V == G_ARRAY && THIS->cur != THIS->end) |
|
|
6 |
1 |
if (GIMME_V == G_ARRAY && THIS->cur != THIS->end) |
|
377
|
0 |
6 |
EXTEND(SP, 2); |
|
383
|
6 |
17 |
THIS->cur = ix == THIS->reverse ? THIS->cur->next : THIS->cur->prev; |
|
390
|
18 |
0 |
RETVAL = SvIVX(THIS->serial) == THIS->orig_serial && |
|
|
15 |
3 |
RETVAL = SvIVX(THIS->serial) == THIS->orig_serial && |
|
402
|
0 |
30 |
THI_CHECK_ITERATOR; |
|
403
|
15 |
15 |
ST(0) = sv_mortalcopy(ix ? THIS->cur->val : THIS->cur->key); |
|
436
|
0 |
14 |
if (items % 2 == 0) |
|
449
|
14 |
14 |
for (cur = &ST(1); cur < end; cur += 2) |
|
475
|
0 |
22 |
THI_CHECK_OBJECT; |
|
|
0 |
22 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
22 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
22 |
THI_CHECK_OBJECT; |
|
479
|
133 |
22 |
for (cur = THIS->root->next; cur != THIS->root;) |
|
523
|
0 |
164 |
THI_CHECK_OBJECT; |
|
|
0 |
164 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
164 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
164 |
THI_CHECK_OBJECT; |
|
528
|
164 |
0 |
ST(0) = link == NULL ? &PL_sv_undef : sv_mortalcopy(link->val); |
|
555
|
0 |
69 |
THI_CHECK_OBJECT; |
|
|
0 |
69 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
69 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
69 |
THI_CHECK_OBJECT; |
|
559
|
10 |
59 |
bool has_rv = ix == 1 && GIMME_V != G_VOID; |
|
|
10 |
0 |
bool has_rv = ix == 1 && GIMME_V != G_VOID; |
|
|
3 |
7 |
bool has_rv = ix == 1 && GIMME_V != G_VOID; |
|
|
0 |
0 |
bool has_rv = ix == 1 && GIMME_V != G_VOID; |
|
561
|
3 |
66 |
if (has_rv) |
|
568
|
3 |
66 |
if (has_rv) |
|
591
|
0 |
34 |
THI_CHECK_OBJECT; |
|
|
0 |
34 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
34 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
34 |
THI_CHECK_OBJECT; |
|
595
|
2 |
32 |
if (THIS->iter->key == NULL) |
|
621
|
0 |
213 |
THI_CHECK_OBJECT; |
|
|
0 |
213 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
213 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
213 |
THI_CHECK_OBJECT; |
|
625
|
32 |
181 |
if (THIS->iter->key == NULL) |
|
655
|
0 |
14 |
THI_CHECK_OBJECT; |
|
|
0 |
14 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
14 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
14 |
THI_CHECK_OBJECT; |
|
658
|
8 |
6 |
if (hv_exists_ent(THIS->hv, key, 0)) |
|
692
|
0 |
11 |
THI_CHECK_OBJECT; |
|
|
0 |
11 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
11 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
11 |
THI_CHECK_OBJECT; |
|
695
|
4 |
7 |
if ((sv = hv_delete_ent(THIS->hv, key, 0, 0)) == NULL) |
|
707
|
4 |
3 |
if (THIS->iter == cur) |
|
741
|
0 |
14 |
THI_CHECK_OBJECT; |
|
|
0 |
14 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
14 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
14 |
THI_CHECK_OBJECT; |
|
747
|
2 |
12 |
if (ix == 1 && GIMME_V != G_VOID) |
|
|
2 |
0 |
if (ix == 1 && GIMME_V != G_VOID) |
|
|
1 |
1 |
if (ix == 1 && GIMME_V != G_VOID) |
|
768
|
0 |
5 |
THI_CHECK_OBJECT; |
|
|
0 |
5 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
5 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
5 |
THI_CHECK_OBJECT; |
|
773
|
3 |
2 |
if (HvFILL(THIS->hv)) |
|
808
|
0 |
35 |
THI_CHECK_OBJECT; |
|
|
0 |
35 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
35 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
35 |
THI_CHECK_OBJECT; |
|
810
|
8 |
27 |
num_keys = items > 1 ? (unsigned)(items - 1) : HvUSEDKEYS(THIS->hv); |
|
|
0 |
27 |
num_keys = items > 1 ? (unsigned)(items - 1) : HvUSEDKEYS(THIS->hv); |
|
811
|
14 |
21 |
num_items = (ix == 0 ? 2 : 1)*num_keys; |
|
813
|
35 |
0 |
if (GIMME_V == G_SCALAR) |
|
|
12 |
23 |
if (GIMME_V == G_SCALAR) |
|
819
|
17 |
6 |
if (items == 1) /* "vanilla" version */ |
|
823
|
17 |
0 |
EXTEND(SP, num_items); |
|
|
0 |
17 |
EXTEND(SP, num_items); |
|
825
|
58 |
17 |
for (cur = THIS->root->next; cur != THIS->root; cur = cur->next, num_keys--) |
|
827
|
54 |
4 |
if (ix != 2) PUSHs(sv_mortalcopy(cur->key)); |
|
828
|
35 |
23 |
if (ix != 1) PUSHs(sv_mortalcopy(cur->val)); |
|
840
|
6 |
0 |
EXTEND(SP, num_items); |
|
|
0 |
6 |
EXTEND(SP, num_items); |
|
846
|
0 |
6 |
Move(beg + 1, beg, items, SV *); |
|
848
|
15 |
6 |
for (; key >= beg; --key) |
|
850
|
9 |
6 |
if ((he = hv_fetch_ent(THIS->hv, *key, 0, 0)) != NULL) |
|
852
|
6 |
3 |
if (ix != 1) |
|
859
|
4 |
2 |
if (ix != 1) |
|
864
|
10 |
5 |
if (ix != 2) *end-- = *key; |
|
894
|
0 |
5 |
THI_CHECK_OBJECT; |
|
|
0 |
5 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
5 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
5 |
THI_CHECK_OBJECT; |
|
896
|
0 |
5 |
if (items % 2 == 0) |
|
910
|
1 |
4 |
if (mode == SM_UNSHIFT) |
|
913
|
2 |
1 |
for (cur = &ST(items - 1); cur > end; cur -= 2) |
|
921
|
11 |
4 |
for (cur = &ST(1); cur < end; cur += 2) |
|
927
|
5 |
0 |
if (GIMME_V != G_VOID) |
|
|
4 |
1 |
if (GIMME_V != G_VOID) |
|
929
|
0 |
4 |
XSRETURN_IV(HvUSEDKEYS(THIS->hv)); |
|
953
|
0 |
6 |
THI_CHECK_OBJECT; |
|
|
0 |
6 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
6 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
6 |
THI_CHECK_OBJECT; |
|
957
|
1 |
5 |
if (root->next == root) |
|
964
|
2 |
3 |
goner = ix == 0 ? root->prev : root->next; |
|
969
|
5 |
0 |
if (GIMME_V == G_ARRAY) |
|
|
2 |
3 |
if (GIMME_V == G_ARRAY) |
|
971
|
0 |
2 |
XPUSHs(sv_2mortal(goner->key)); |
|
978
|
0 |
5 |
XPUSHs(sv_2mortal(goner->val)); |
|
1004
|
3 |
1 |
it->cur = ix == 1 ? THIS->root->prev : THIS->root->next; |
|
1044
|
4 |
4 |
if (ix >= 2 && GIMME_V != G_VOID) |
|
|
4 |
0 |
if (ix >= 2 && GIMME_V != G_VOID) |
|
|
4 |
0 |
if (ix >= 2 && GIMME_V != G_VOID) |
|
1060
|
0 |
8 |
SvSETMAGIC(link->val); |
|
1062
|
8 |
0 |
if (GIMME_V == G_VOID) |
|
|
0 |
8 |
if (GIMME_V == G_VOID) |
|
1067
|
4 |
4 |
ST(0) = orig ? orig : sv_mortalcopy(link->val); |
|
1139
|
0 |
13 |
PUSHMARK(SP); |
|
1141
|
11 |
2 |
if (myop.op_type == OP_OR || myop.op_type == MY_OP_DOR) |
|
|
4 |
7 |
if (myop.op_type == OP_OR || myop.op_type == MY_OP_DOR) |
|
1143
|
0 |
6 |
XPUSHs(val); |
|
1144
|
0 |
6 |
XPUSHs(link->val); |
|
1148
|
0 |
7 |
XPUSHs(link->val); |
|
1149
|
0 |
7 |
XPUSHs(val); |
|
1163
|
11 |
2 |
if (myop.op_type == OP_OR || myop.op_type == MY_OP_DOR) |
|
|
4 |
7 |
if (myop.op_type == OP_OR || myop.op_type == MY_OP_DOR) |
|
1167
|
0 |
6 |
SvSETMAGIC(link->val); |
|
1171
|
1 |
12 |
FREETMPS; |
|
1175
|
13 |
0 |
if (GIMME_V != G_VOID) |
|
|
12 |
1 |
if (GIMME_V != G_VOID) |
|
1203
|
0 |
8 |
THI_CHECK_OBJECT; |
|
|
0 |
8 |
THI_CHECK_OBJECT; |
|
|
0 |
0 |
THI_CHECK_OBJECT; |
|
|
8 |
0 |
THI_CHECK_OBJECT; |
|
|
0 |
8 |
THI_CHECK_OBJECT; |
|
1209
|
0 |
8 |
XPUSHs(sv_2mortal(newSVpvn((char *)&s, sizeof(Serialized)))); |
|
1210
|
0 |
8 |
num_keys = HvUSEDKEYS(THIS->hv); |
|
1211
|
8 |
0 |
EXTEND(SP, 2*num_keys); |
|
|
0 |
8 |
EXTEND(SP, 2*num_keys); |
|
1212
|
72 |
8 |
for (cur = THIS->root->next; cur != THIS->root; cur = cur->next, num_keys--) |
|
1244
|
8 |
0 |
if (!sv_isobject(object) || SvTYPE(SvRV(object)) != SVt_PVMG) |
|
|
0 |
8 |
if (!sv_isobject(object) || SvTYPE(SvRV(object)) != SVt_PVMG) |
|
1248
|
8 |
0 |
ps = (Serialized *) SvPV(serialized, len); |
|
1250
|
8 |
0 |
if (len < sizeof(SerialRev) || |
|
|
0 |
8 |
if (len < sizeof(SerialRev) || |
|
1255
|
0 |
8 |
if (ps->rev.major != THI_SERIAL_REV_MAJOR) |
|
1270
|
0 |
8 |
if ((items-3) % 2) |
|
1273
|
72 |
8 |
for (i = 3; i < items; i+=2) |
|
1289
|
0 |
72 |
if (hv_store_ent(THIS->hv, key, val, 0) == NULL) |