Branch Coverage

Wanted.xs
Criterion Covered Total %
branch 210 316 66.4


line true false branch
123 0 9479 if (!cxstk) return -1;
124 12976 1513 for (i = startingblock; i >= 0; i--)
127 5010 7966 switch (CxTYPE(cx))
160 0 1737 if (!cxstack) return -1;
189 1009 0 if (!top_si || !ccstack || cxix < 0)
1009 0 if (!top_si || !ccstack || cxix < 0)
1009 0 if (!top_si || !ccstack || cxix < 0)
196 5 4264 while (cxix < 0 && top_si->si_type != PERLSI_MAIN)
0 5 while (cxix < 0 && top_si->si_type != PERLSI_MAIN)
199 0 0 if (!top_si)
206 5 4264 if (cxix < 0)
210 4264 0 if (PL_DBsub && cxix >= 0 &&
4264 0 if (PL_DBsub && cxix >= 0 &&
211 0 4264 ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
213 1004 3260 if (!count--)
218 0 1004 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
0 0 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
221 1004 0 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
128 876 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
0 128 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
256 728 0 if (!top_si || !ccstack || cxix < 0)
728 0 if (!top_si || !ccstack || cxix < 0)
0 728 if (!top_si || !ccstack || cxix < 0)
261 0 728 if (PL_op && (PL_op->op_type == OP_TIE || PL_op->op_type == OP_TIED))
728 0 if (PL_op && (PL_op->op_type == OP_TIE || PL_op->op_type == OP_TIED))
728 0 if (PL_op && (PL_op->op_type == OP_TIE || PL_op->op_type == OP_TIED))
264 0 0 for (i = cxix; i >= 0; i--)
267 0 0 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_BLOCK)
0 0 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_BLOCK)
269 0 0 OP *op = cx->blk_oldcop ? (OP*)cx->blk_oldcop : PL_op;
270 0 0 if (op && (op->op_type == OP_LIST || op->op_type == OP_AASSIGN))
0 0 if (op && (op->op_type == OP_LIST || op->op_type == OP_AASSIGN))
0 0 if (op && (op->op_type == OP_LIST || op->op_type == OP_AASSIGN))
282 2 3478 while (cxix < 0 && top_si->si_type != PERLSI_MAIN)
0 2 while (cxix < 0 && top_si->si_type != PERLSI_MAIN)
285 0 0 if (!top_si)
292 2 3478 if (cxix < 0)
296 3478 0 if (PL_DBsub && cxix >= 0 &&
3478 0 if (PL_DBsub && cxix >= 0 &&
297 0 3478 ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
299 726 2752 if (!count--)
304 0 726 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
0 0 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
307 726 0 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
96 630 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
0 96 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
316 832 516 for (i = cxix-1; i>=0 ; i--)
322 0 599 if (debugger_trouble && i > 0) return tcx;
0 0 if (debugger_trouble && i > 0) return tcx;
346 82 434 return ((end_of_block && cxix > 1) ? &ccstack[cxix-1] : cx);
82 0 return ((end_of_block && cxix > 1) ? &ccstack[cxix-1] : cx);
369 1 95 if (!cx) return G_VOID;
397 0 23 if (!l) return (numop*)0;
399 25 0 while (i-- > 0)
402 23 2 if (ret->numop_op->op_type != OP_NULL && ret->numop_op->op_type != OP_SCOPE)
23 0 if (ret->numop_op->op_type != OP_NULL && ret->numop_op->op_type != OP_SCOPE)
433 67 565 if (!l) return Nullop;
435 779 55 while (i-- > 0)
438 599 180 if (ret->op_type != OP_NULL
439 599 0 && ret->op_type != OP_SCOPE
440 510 89 && ret->op_type != OP_LEAVE)
470 2177 656 if (o && len < OPLIST_MAX)
2177 0 if (o && len < OPLIST_MAX)
476 2177 656 if (len > 0)
512 2833 0 if (!start || !next)
0 2833 if (!start || !next)
518 656 2177 if (!l)
527 2006 593 for (o = start; o; p = o, o = OpSIBLING(o), ++cn)
4839 593 for (o = start; o; p = o, o = OpSIBLING(o), ++cn)
529 793 4046 if (o->op_type == OP_ENTERSUB && o->op_next == next)
656 137 if (o->op_type == OP_ENTERSUB && o->op_next == next)
532 2177 2006 if (o->op_flags & OPf_KIDS)
537 1584 593 if (find_ancestors_from(cUNOPo->op_first, next, l))
566 2 726 if (!cx)
598 2 726 if (!cx)
631 656 72 return_op ? return_op->op_type == OP_LEAVE : FALSE);
91 565 return_op ? return_op->op_type == OP_LEAVE : FALSE);
633 656 72 if (!return_op || !start_cop)
0 656 if (!return_op || !start_cop)
635 67 5 if (return_op_out) *return_op_out = Nullop;
639 588 68 if (return_op_out)
644 0 656 if (!result)
697 0 9 if (!o) return -999;
699 9 0 if (!pm || pm->op_type != OP_PUSHMARK)
0 9 if (!pm || pm->op_type != OP_PUSHMARK)
702 9 0 if ( (l = OpSIBLING(pm)) && (l->op_type == OP_LIST || (l->op_type == OP_NULL && l->op_targ == OP_LIST)))
9 0 if ( (l = OpSIBLING(pm)) && (l->op_type == OP_LIST || (l->op_type == OP_NULL && l->op_targ == OP_LIST)))
9 0 if ( (l = OpSIBLING(pm)) && (l->op_type == OP_LIST || (l->op_type == OP_NULL && l->op_targ == OP_LIST)))
4 5 if ( (l = OpSIBLING(pm)) && (l->op_type == OP_LIST || (l->op_type == OP_NULL && l->op_targ == OP_LIST)))
4 0 if ( (l = OpSIBLING(pm)) && (l->op_type == OP_LIST || (l->op_type == OP_NULL && l->op_targ == OP_LIST)))
705 5 0 else if (l)
751 39 0 if (!parent || ! (parent->op_flags & OPf_KIDS))
0 39 if (!parent || ! (parent->op_flags & OPf_KIDS))
754 57 21 for(o = cUNOPx(parent)->op_first; o; o=OpSIBLING(o))
96 21 for(o = cUNOPx(parent)->op_first; o; o=OpSIBLING(o))
756 0 96 if (returnop && o->op_type == OP_ENTERSUB && o->op_next == returnop)
0 0 if (returnop && o->op_type == OP_ENTERSUB && o->op_next == returnop)
0 0 if (returnop && o->op_type == OP_ENTERSUB && o->op_next == returnop)
758 92 4 if (o->op_type == OP_RV2AV || o->op_type == OP_RV2HV
90 2 if (o->op_type == OP_RV2AV || o->op_type == OP_RV2HV
759 82 8 || o->op_type == OP_PADAV || o->op_type == OP_PADHV
79 3 || o->op_type == OP_PADAV || o->op_type == OP_PADHV
760 0 79 || o->op_type == OP_ENTERSUB)
763 74 5 if (o->op_type == OP_HSLICE || o->op_type == OP_ASLICE)
2 72 if (o->op_type == OP_HSLICE || o->op_type == OP_ASLICE)
766 1 6 if (slice_length == 0)
801 0 35 if (!cx) return -1;
839 0 0 if (!cx) return Nullav;
841 0 0 for(i=mark_from+1; i<=mark_to; ++i)
842 0 0 if (skip-- <= 0) av_push(a, newSVsv(PL_stack_base[i]));
871 0 21 if (!cx) return Nullav;
952 0 83 if (!cx) RETVAL = 0;
954 69 14 if (CvLVALUE(cx->blk_sub.cv))
990 461 118 if (!o || !r)
0 461 if (!o || !r)
992 0 118 EXTEND(SP, 2);
998 30 431 if (o->op_type == OP_ENTERSUB && (first = cUNOPo->op_first)
30 0 if (o->op_type == OP_ENTERSUB && (first = cUNOPo->op_first)
999 7 23 && (second = OpSIBLING(first)) && OpSIBLING(second) != Nullop)
7 23 && (second = OpSIBLING(first)) && OpSIBLING(second) != Nullop)
7 0 && (second = OpSIBLING(first)) && OpSIBLING(second) != Nullop)
7 0 && (second = OpSIBLING(first)) && OpSIBLING(second) != Nullop)
1003 461 0 if (GIMME == G_ARRAY)
283 178 if (GIMME == G_ARRAY)
1005 0 283 EXTEND(SP, 2);
1011 0 178 EXTEND(SP, 1);
1043 4 42 if (!o)
1045 4 0 RETVAL = (gimme == G_SCALAR ? 1 : gimme == G_ARRAY ? -1 : 0);
0 4 RETVAL = (gimme == G_SCALAR ? 1 : gimme == G_ARRAY ? -1 : 0);
1047 35 7 else if (o->op_type == OP_AASSIGN)
1051 18 17 if (lhs == 0) RETVAL = -1;
1052 4 13 else if (rhs >= lhs-1) RETVAL = 0;
1096 5 68 if (!l)
1102 199 68 for( i=0; i < l->length; ++i )
1106 191 8 bool v = (OP_GIMME(o, -1) == G_VOID);
122 69 bool v = (OP_GIMME(o, -1) == G_VOID);
1114 32 2 if (truebool || v)
28 4 if (truebool || v)
1117 4 0 pseudobool = (pseudobool || n == 0);
2 2 pseudobool = (pseudobool || n == 0);
1120 10 5 if (truebool || v)
7 3 if (truebool || v)
1126 5 1 truebool = (truebool || n == 0);
4 1 truebool = (truebool || n == 0);
1136 34 34 RETVAL = truebool || pseudobool;
2 32 RETVAL = truebool || pseudobool;
1168 23 0 numop* lno = os ? lastnumop(os) : (numop*)0;
1171 0 23 if (!lno)
1178 23 0 if (lno && (type == OP_AASSIGN || type == OP_SASSIGN) && lno->numop_num == 1)
23 0 if (lno && (type == OP_AASSIGN || type == OP_SASSIGN) && lno->numop_num == 1)
21 2 if (lno && (type == OP_AASSIGN || type == OP_SASSIGN) && lno->numop_num == 1)
21 0 if (lno && (type == OP_AASSIGN || type == OP_SASSIGN) && lno->numop_num == 1)
1180 0 21 if (type == OP_AASSIGN)
1183 0 0 if (lhs_count == 0) r = newAV();
1196 23 0 if (os) free(os);
1198 0 23 EXTEND(SP, 1);
1199 21 2 PUSHs(r ? sv_2mortal(newRV_noinc((SV*) r)) : &PL_sv_undef);
1228 2 21 if (!cx)