Branch Coverage

Wanted.xs
Criterion Covered Total %
branch 214 324 66.0


line true false branch
123 0 9475 if (!cxstk) return -1;
124 12966 1506 for (i = startingblock; i >= 0; i--)
127 4997 7969 switch (CxTYPE(cx))
160 0 1735 if (!cxstack) return -1;
189 1007 0 if (!top_si || !ccstack || cxix < 0)
1007 0 if (!top_si || !ccstack || cxix < 0)
1007 0 if (!top_si || !ccstack || cxix < 0)
196 5 4262 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 4262 if (cxix < 0)
210 4262 0 if (PL_DBsub && cxix >= 0 &&
4262 0 if (PL_DBsub && cxix >= 0 &&
211 0 4262 ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
213 1002 3260 if (!count--)
218 0 1002 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
0 0 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
221 1002 0 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
133 869 if (PL_DBsub && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
0 133 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))
314 726 0 debugger_trouble = (cx->blk_oldcop && cx->blk_oldcop->op_type == OP_DBSTATE);
0 726 debugger_trouble = (cx->blk_oldcop && cx->blk_oldcop->op_type == OP_DBSTATE);
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)
471 2177 656 if (o && len < OPLIST_MAX)
2177 0 if (o && len < OPLIST_MAX)
477 2177 656 if (len > 0)
513 2833 0 if (!start || !next)
0 2833 if (!start || !next)
519 656 2177 if (!l)
528 2006 593 for (o = start; o; p = o, o = OpSIBLING(o), ++cn)
4839 593 for (o = start; o; p = o, o = OpSIBLING(o), ++cn)
530 793 4046 if (o->op_type == OP_ENTERSUB && o->op_next == next)
656 137 if (o->op_type == OP_ENTERSUB && o->op_next == next)
533 2177 2006 if (o->op_flags & OPf_KIDS)
538 1584 593 if (find_ancestors_from(cUNOPo->op_first, next, l))
546 0 593 if (outer_call)
573 2 726 if (!cx)
605 2 726 if (!cx)
638 656 72 return_op ? return_op->op_type == OP_LEAVE : FALSE);
91 565 return_op ? return_op->op_type == OP_LEAVE : FALSE);
640 656 72 if (!return_op || !start_cop)
0 656 if (!return_op || !start_cop)
642 67 5 if (return_op_out) *return_op_out = Nullop;
646 588 68 if (return_op_out)
651 0 656 if (!result)
704 0 9 if (!o) return -999;
706 9 0 if (!pm || pm->op_type != OP_PUSHMARK)
0 9 if (!pm || pm->op_type != OP_PUSHMARK)
709 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)))
712 5 0 else if (l)
758 39 0 if (!parent || ! (parent->op_flags & OPf_KIDS))
0 39 if (!parent || ! (parent->op_flags & OPf_KIDS))
761 57 21 for(o = cUNOPx(parent)->op_first; o; o=OpSIBLING(o))
96 21 for(o = cUNOPx(parent)->op_first; o; o=OpSIBLING(o))
763 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)
765 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
766 82 8 || o->op_type == OP_PADAV || o->op_type == OP_PADHV
79 3 || o->op_type == OP_PADAV || o->op_type == OP_PADHV
767 0 79 || o->op_type == OP_ENTERSUB)
770 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)
773 1 6 if (slice_length == 0)
808 0 35 if (!cx) return -1;
842 0 0 if (!cx) return Nullav;
849 0 0 for(i=mark_from+1; i<=mark_to; ++i)
850 0 0 if (skip-- <= 0) av_push(a, newSVsv(PL_stack_base[i]));
878 0 21 if (!cx) return Nullav;
961 0 81 if (!cx)
965 0 81 else if (!cx->blk_sub.cv)
969 62 19 else if (CvLVALUE(cx->blk_sub.cv))
1009 461 118 if (!o || !r)
0 461 if (!o || !r)
1011 0 118 EXTEND(SP, 2);
1017 30 431 if (o->op_type == OP_ENTERSUB && (first = cUNOPx(o)->op_first)
30 0 if (o->op_type == OP_ENTERSUB && (first = cUNOPx(o)->op_first)
1018 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)
1022 461 0 if (GIMME == G_ARRAY)
283 178 if (GIMME == G_ARRAY)
1024 0 283 EXTEND(SP, 2);
1030 0 178 EXTEND(SP, 1);
1062 4 42 if (!o)
1064 4 0 RETVAL = (gimme == G_SCALAR ? 1 : gimme == G_ARRAY ? -1 : 0);
0 4 RETVAL = (gimme == G_SCALAR ? 1 : gimme == G_ARRAY ? -1 : 0);
1066 35 7 else if (o->op_type == OP_AASSIGN)
1070 18 17 if (lhs == 0) RETVAL = -1;
1071 4 13 else if (rhs >= lhs-1) RETVAL = 0;
1115 5 68 if (!l)
1121 199 68 for( i=0; i < l->length; ++i )
1125 191 8 bool v = (OP_GIMME(o, -1) == G_VOID);
122 69 bool v = (OP_GIMME(o, -1) == G_VOID);
1133 32 2 if (truebool || v)
28 4 if (truebool || v)
1136 4 0 pseudobool = (pseudobool || n == 0);
2 2 pseudobool = (pseudobool || n == 0);
1139 10 5 if (truebool || v)
7 3 if (truebool || v)
1145 5 1 truebool = (truebool || n == 0);
4 1 truebool = (truebool || n == 0);
1155 34 34 RETVAL = truebool || pseudobool;
2 32 RETVAL = truebool || pseudobool;
1187 23 0 numop* lno = os ? lastnumop(os) : (numop*)0;
1190 0 23 if (!lno)
1197 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)
1199 0 21 if (type == OP_AASSIGN)
1202 0 0 if (lhs_count == 0) r = newAV();
1215 23 0 if (os) free(os);
1217 0 23 EXTEND(SP, 1);
1218 21 2 PUSHs(r ? sv_2mortal(newRV_noinc((SV*) r)) : &PL_sv_undef);
1247 2 21 if (!cx)