Branch Coverage

Object.xs
Criterion Covered Total %
branch 283 416 68.0


line true false branch
94 215 67 if (!pb->sv)
105 81 57 for (; iter != last; ++iter)
107 81 0 if (*iter)
109 10 71 if (*iter == sv)
116 57 0 if (!hole)
118 0 57 Renew(pb->sv, pb->n + 1, SV*);
135 160 457 if (!s->flat) {
140 19 598 if (!SvOK(sv))
19 0 if (!SvOK(sv))
19 0 if (!SvOK(sv))
143 471 127 key = SvPV(sv, len);
147 579 19 if (!hv_exists(s->flat, key, len)) {
148 0 579 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 247 if (!SvROK(rv))
224 79 168 if (!s->buckets)
233 237 10 if (insert_in_bucket(s->bucket + index, el))
237 13 224 if (s->is_weak) {
246 4 243 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 16 32 if (!bucket_iter->sv)
276 52 32 for (; el_iter != el_last; ++el_iter)
282 17 35 if (index == i)
296 19 13 if (!new_bucket_size)
303 4 9 else if (new_bucket_size < bucket_iter->n)
305 0 4 Renew(bucket_iter->sv, new_bucket_size, SV*);
320 680 4284 for (; bucket_iter != bucket_last; ++bucket_iter)
324 484 196 if (!bucket_iter->sv)
330 237 196 for (; el_iter != el_last; ++el_iter)
332 210 27 if (*el_iter)
339 6 204 if (s->is_weak) {
365 13 18 if (SvMAGICAL(sv))
377 7 0 if (mg) {
385 7 7 while (i >= 0) {
386 7 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
7 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
7 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
1 6 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
387 1 0 ISET* o = INT2PTR(ISET*, SvIV(svp[i]));
388 1 0 if (s == o) {
401 7 0 if (!c) {
415 48 19 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 18 18 while (i >= 0) {
461 18 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
18 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
18 0 if (svp[i] && SvIOK(svp[i]) && SvIV(svp[i])) {
11 7 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 18 if (mg) {
515 0 18 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 18 0 if (free == -1) {
552 59 11 if (!spell_in_progress && !SvOK(el))
2 57 if (!spell_in_progress && !SvOK(el))
2 0 if (!spell_in_progress && !SvOK(el))
2 0 if (!spell_in_progress && !SvOK(el))
555 11 57 if (SvOK(el) && !SvROK(el)) {
11 0 if (SvOK(el) && !SvROK(el)) {
0 11 if (SvOK(el) && !SvROK(el)) {
37 20 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 20 11 referant = (spell_in_progress ? el : SvRV(el));
570 1 30 if (s->buckets == 0)
573 2 28 if (!bucket->sv)
582 28 1 for (; el_iter != el_last; ++el_iter) {
583 27 1 if (*el_iter == referant) {
584 11 16 if (s->is_weak) {
586 0 11 if (!spell_in_progress) {
645 745 2267 for (item = 1; item < items; ++item) {
647 1 744 SvGETMAGIC(el);
0 1 SvGETMAGIC(el);
648 195 550 ISET_INSERT(s, el);
662 58 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
666 106 58 for (item = 1; item < items; ++item)
669 0 106 if ((SV*)s == el) {
672 0 106 SvGETMAGIC(el);
0 0 SvGETMAGIC(el);
673 45 61 if ISET_INSERT(s, el)
87 19 if ISET_INSERT(s, el)
686 37 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
692 59 37 for (item = 1; item < items; ++item)
695 0 59 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 20 80 if (!bucket->sv)
795 82 0 for (; el_iter != el_last; ++el_iter)
796 80 2 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 493 195 if (!bucket_iter->sv)
829 217 195 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 4275 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
870 4272 3 if ( s ) {
874 160 4112 if (s->flat) {
886 2005 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
897 19 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
899 1 18 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 2 0 ISET* s = INT2PTR(ISET*, SvIV(SvRV(sv)));
998 1 1 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);