Branch Coverage

Object.xs
Criterion Covered Total %
branch 284 416 68.2


line true false branch
94 193 73 if (!pb->sv)
105 93 63 for (; iter != last; ++iter)
107 93 0 if (*iter)
109 10 83 if (*iter == sv)
116 63 0 if (!hole)
118 0 63 Renew(pb->sv, pb->n + 1, SV*);
135 162 465 if (!s->flat) {
140 19 608 if (!SvOK(sv))
19 0 if (!SvOK(sv))
19 0 if (!SvOK(sv))
143 476 132 key = SvPV(sv, len);
147 589 19 if (!hv_exists(s->flat, key, len)) {
148 0 589 if (!hv_store(s->flat, key, len, &PL_sv_undef, 0)) {
169 36 0 if (!s->flat || !HvKEYS(s->flat)) {
0 36 if (!s->flat || !HvKEYS(s->flat)) {
0 36 if (!s->flat || !HvKEYS(s->flat)) {
183 36 0 key = SvPV(sv, len);
186 36 0 if ( hv_delete(s->flat, key, len, 0) ) {
201 248 6 if (s->flat && HvKEYS(s->flat)) {
0 248 if (s->flat && HvKEYS(s->flat)) {
247 1 if (s->flat && HvKEYS(s->flat)) {
203 244 3 char* key = SvPV(sv, len);
219 0 253 if (!SvROK(rv))
224 83 170 if (!s->buckets)
233 243 10 if (insert_in_bucket(s->bucket + index, el))
237 15 228 if (s->is_weak) {
246 4 249 if (s->elems > s->buckets)
256 0 4 Renew(s->bucket, newn, BUCKET);
257 0 4 Zero(s->bucket + oldn, oldn, BUCKET);
264 48 4 for (i = 0; bucket_iter != bucket_last; ++bucket_iter, ++i)
269 17 31 if (!bucket_iter->sv)
276 52 31 for (; el_iter != el_last; ++el_iter)
282 39 13 if (index == i)
296 6 25 if (!new_bucket_size)
303 4 21 else if (new_bucket_size < bucket_iter->n)
305 0 4 Renew(bucket_iter->sv, new_bucket_size, SV*);
320 712 4288 for (; bucket_iter != bucket_last; ++bucket_iter)
324 525 187 if (!bucket_iter->sv)
330 243 187 for (; el_iter != el_last; ++el_iter)
332 212 31 if (*el_iter)
339 6 206 if (s->is_weak) {
365 15 20 if (SvMAGICAL(sv))
377 9 0 if (mg) {
385 9 9 while (i >= 0) {
386 9 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
9 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
9 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
3 6 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
387 3 0 ISET* o = INT2PTR(ISET*, SvIV(svp[i]));
388 3 0 if (s == o) {
401 9 0 if (!c) {
415 48 20 for (; bucket_iter != bucket_last; ++bucket_iter)
419 41 7 if (!bucket_iter->sv)
425 7 7 for (; el_iter != el_last; ++el_iter)
426 6 1 if (*el_iter) {
427 1 5 if (strong) {
437 5 0 if ( SvREFCNT(*el_iter) > 1 )
459 20 20 while (i >= 0) {
461 20 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
20 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
20 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
11 9 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
462 11 0 ISET* s = INT2PTR(ISET*, SvIV(svp[i]));
464 0 11 if (!s->is_weak)
469 0 11 if (iset_remove_one(s, sv, 1) != 1) {
492 0 20 if (mg) {
515 0 20 while (i >= 0) {
516 0 0 if (svp[i] && SvIV(svp[i])) {
0 0 if (svp[i] && SvIV(svp[i])) {
0 0 if (svp[i] && SvIV(svp[i])) {
0 0 if (svp[i] && SvIV(svp[i])) {
517 0 0 ISET* o = INT2PTR(ISET*, SvIV(svp[i]));
518 0 0 if (s == o)
521 0 0 if ( svp[i] ) SvREFCNT_dec(svp[i]);
528 20 0 if (free == -1) {
552 63 11 if (!spell_in_progress && !SvOK(el))
2 61 if (!spell_in_progress && !SvOK(el))
2 0 if (!spell_in_progress && !SvOK(el))
2 0 if (!spell_in_progress && !SvOK(el))
555 11 61 if (SvOK(el) && !SvROK(el)) {
11 0 if (SvOK(el) && !SvROK(el)) {
0 11 if (SvOK(el) && !SvROK(el)) {
37 24 if (SvOK(el) && !SvROK(el)) {
557 36 1 if (s->flat && HvKEYS(s->flat)) {
0 36 if (s->flat && HvKEYS(s->flat)) {
36 0 if (s->flat && HvKEYS(s->flat)) {
559 36 0 if (iset_remove_scalar(s, el))
565 24 11 referant = (spell_in_progress ? el : SvRV(el));
570 1 34 if (s->buckets == 0)
573 3 31 if (!bucket->sv)
582 35 0 for (; el_iter != el_last; ++el_iter) {
583 31 4 if (*el_iter == referant) {
584 13 18 if (s->is_weak) {
586 2 11 if (!spell_in_progress) {
645 745 2271 for (item = 1; item < items; ++item) {
647 1 744 SvGETMAGIC(el);
0 1 SvGETMAGIC(el);
648 195 550 ISET_INSERT(s, el);
662 69 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
666 122 69 for (item = 1; item < items; ++item)
669 0 122 if ((SV*)s == el) {
672 0 122 SvGETMAGIC(el);
0 0 SvGETMAGIC(el);
673 51 71 if ISET_INSERT(s, el)
103 19 if ISET_INSERT(s, el)
686 41 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
692 63 41 for (item = 1; item < items; ++item)
695 0 63 SvGETMAGIC(el);
0 0 SvGETMAGIC(el);
705 15 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
706 0 15 if (s->elems)
708 13 2 if (s->flat) {
709 0 13 if (HvKEYS(s->flat)) {
11 2 if (HvKEYS(s->flat)) {
722 170 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
723 59 111 RETVAL = s->elems + (s->flat ? HvKEYS(s->flat) : 0);
0 59 RETVAL = s->elems + (s->flat ? HvKEYS(s->flat) : 0);
742 0 0 if (SvROK(self)) {
756 384 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
761 397 188 for (item = 1; item < items; ++item)
766 2 395 if (!SvOK(el))
2 0 if (!SvOK(el))
2 0 if (!SvOK(el))
769 0 395 SvGETMAGIC(el);
0 0 SvGETMAGIC(el);
770 254 141 if (!SvROK(el)) {
772 133 121 if (!iset_includes_scalar(s, el))
779 41 100 if (!s->buckets)
789 12 88 if (!bucket->sv)
795 97 8 for (; el_iter != el_last; ++el_iter)
796 80 17 if (*el_iter == rv)
813 2422 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
817 300 2122 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
0 300 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
300 2122 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
0 300 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
0 2422 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
0 0 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
0 0 EXTEND(sp, s->elems + (s->flat ? HvKEYS(s->flat) : 0) );
819 688 2422 for (; bucket_iter != bucket_last; ++bucket_iter)
823 513 175 if (!bucket_iter->sv)
829 217 175 for (; el_iter != el_last; ++el_iter)
831 212 5 if (*el_iter) {
833 204 8 if (SvOBJECT(*el_iter)) {
841 300 2122 if (s->flat) {
844 998 300 while (i++ < num) {
847 998 0 PUSHs(HeSVKEY_force(he));
0 998 PUSHs(HeSVKEY_force(he));
0 998 PUSHs(HeSVKEY_force(he));
856 12 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
859 9 3 if (s->flat) {
869 4279 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
870 4276 3 if ( s ) {
874 162 4114 if (s->flat) {
886 2005 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
897 20 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
899 1 19 if (s->is_weak)
913 1 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
915 0 1 if (!s->is_weak)
932 0 22 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
933 15 7 if ( !SvIOKp(sv) )
945 0 9 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
946 5 4 if ( !SvPOKp(sv) )
958 0 14 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
959 5 9 if ( !SvNOKp(sv) )
973 0 6 if (! SvROK(sv)) {
978 3 3 if (! (mg = _detect_magic(SvRV(sv))) )
997 6 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(sv)));
998 3 3 if (s->flat) {
1012 0 12 if (SvMAGICAL(sv))
1014 2 10 if(!sv_isobject(sv)) {
1028 0 6 if (SvMAGICAL(sv))
1030 0 6 if(!SvROK(sv)) {
1044 5 0 if(SvROK(sv)) {
1069 1 25 if (SvMAGICAL(sv)) {
1074 3 22 if (SvAMAGIC(sv)) {
3 0 if (SvAMAGIC(sv)) {
3 0 if (SvAMAGIC(sv)) {
1080 16 6 if (SvNIOKp(sv)) {
1083 7 9 if (SvPOKp(sv)) {
1097 5 2 if (SvIOKp(sv)) {
1098 3 2 MH = newSViv(SvIV(sv));
1099 2 0 } else if (SvNOKp(sv)) {
1100 2 0 MH = newSVnv(SvNV(sv));
1105 3 4 if (sv_cmp(MH, sv) != 0) {
1110 9 4 if (SvNOKp(sv)) {
1112 9 0 dutch = SvNV(sv);
1113 1 8 if (SvIOKp(sv)) {
1114 1 0 innit = SvIV(sv);
1118 8 1 if (dutch - innit < (0.000000001)) {
1123 4 0 } else if (SvIOKp(sv)) {
1124 4 0 RETVAL = SvIV(sv);
1137 0 14 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
1138 7 7 if ( !SvAMAGIC(sv) )
5 2 if ( !SvAMAGIC(sv) )
0 5 if ( !SvAMAGIC(sv) )
1149 0 0 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
1150 0 0 if ( !SvOBJECT(sv) )
1174 0 2005 if (!SvROK(obj)) {
1189 13 2005 for (item = 3; item < items; ++item)
1192 0 13 SvGETMAGIC(el);
0 0 SvGETMAGIC(el);
1193 7 6 ISET_INSERT(s, el);