| line | true | false | branch | 
 
| 45 | 23 | 0 | for (cxix = cxstack_ix; cxix; cxix--) { | 
 
| 46 | 17 | 6 | if(CxTYPE(&cxstack[cxix]) == CXt_SUB) | 
 
| 49 | 9 | 8 | if(CxTYPE(&cxstack[cxix]) == CXt_EVAL && CxTRYBLOCK(&cxstack[cxix])) { | 
 
| 57 | 8 | 1 | if(retop->op_type == OP_CUSTOM && retop->op_ppaddr == &pp_catch && | 
 
|  | 8 | 0 | if(retop->op_type == OP_CUSTOM && retop->op_ppaddr == &pp_catch && | 
 
|  | 8 | 0 | if(retop->op_type == OP_CUSTOM && retop->op_ppaddr == &pp_catch && | 
 
| 58 | 8 | 0 | (leave = cLOGOPx(retop)->op_first) && leave->op_type == OP_LEAVETRY && | 
 
|  | 8 | 0 | (leave = cLOGOPx(retop)->op_first) && leave->op_type == OP_LEAVETRY && | 
 
| 59 | 8 | 0 | (enter = cLOGOPx(leave)->op_first) && enter->op_type == OP_ENTERTRY && | 
 
|  | 8 | 0 | (enter = cLOGOPx(leave)->op_first) && enter->op_type == OP_ENTERTRY && | 
 
| 67 | 0 | 7 | if(!cxix) | 
 
| 84 | 5 | 0 | retval = (MARK == SP) ? &PL_sv_undef : TOPs; | 
 
| 100 | 0 | 1 | Copy(retvals, AvARRAY(retav), retcount, SV *); | 
 
| 101 | 3 | 1 | for(i = 0; i < retcount; i++) | 
 
| 113 | 0 | 1 | PUSHMARK(SP); | 
 
| 119 | 0 | 5 | PUSHMARK(SP); | 
 
| 120 | 0 | 5 | XPUSHs(retval); | 
 
| 127 | 0 | 1 | PUSHMARK(SP); | 
 
| 130 | 1 | 0 | EXTEND(SP, retcount); | 
 
|  | 0 | 1 | EXTEND(SP, retcount); | 
 
| 131 | 0 | 1 | Copy(AvARRAY(retav), SP+1, retcount, SV *); | 
 
| 152 | 0 | 8 | PUSHMARK(SP); | 
 
| 185 | 2 | 0 | if(warnings == pWARN_NONE) | 
 
| 188 | 2 | 0 | if(warnings == pWARN_STD) | 
 
| 191 | 0 | 2 | else if(warnings == pWARN_ALL) | 
 
| 207 | 1 | 13 | if(op->op_next == old) | 
 
| 210 | 0 | 14 | switch(OP_CLASS(op)) { | 
 
| 212 | 1 | 0 | if(cLOGOPx(op)->op_other == old) | 
 
| 217 | 0 | 2 | if(cLISTOPx(op)->op_last == old) | 
 
| 222 | 6 | 8 | if(op->op_flags & OPf_KIDS) { | 
 
| 224 | 6 | 6 | for(kid = cUNOPx(op)->op_first; kid; kid = OpSIBLING(kid)) | 
 
|  | 12 | 6 | for(kid = cUNOPx(op)->op_first; kid; kid = OpSIBLING(kid)) | 
 
| 247 | 1 | 1 | OP *parent = OpHAS_SIBLING(op) ? NULL : op->op_sibparent; | 
 
| 255 | 1 | 1 | if(parent) | 
 
| 276 | 112 | 146 | if(op->op_flags & OPf_KIDS) { | 
 
| 278 | 222 | 112 | for(kid = cUNOPx(op)->op_first; kid; kid = next) { | 
 
| 280 | 110 | 112 | next = OpSIBLING(kid); | 
 
| 284 | 2 | 220 | if(newkid != kid) { | 
 
| 287 | 2 | 0 | if(prev) { | 
 
| 293 | 1 | 1 | if(next) | 
 
| 317 | 33 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 4 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 29 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 29 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 29 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 11 | 18 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 11 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 11 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 18 | 11 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
|  | 0 | 0 | if(SvROK(ERRSV) || SvTRUE(ERRSV)) | 
 
| 356 | 38 | 0 | logop->op_other = LINKLIST(other); | 
 
| 358 | 38 | 0 | logop->op_next = LINKLIST(first); | 
 
| 380 | 2 | 3 | if(!SvROK(sv) || !SvOBJECT(SvRV(sv))) | 
 
|  | 2 | 0 | if(!SvROK(sv) || !SvOBJECT(SvRV(sv))) | 
 
| 401 | 3 | 2 | SETs(boolSV(sv_isa_sv(left, right))); | 
 
| 415 | 47 | 0 | bool require_catch = hints && hv_fetchs(hints, "Syntax::Keyword::Try/require_catch", 0); | 
 
|  | 47 | 0 | bool require_catch = hints && hv_fetchs(hints, "Syntax::Keyword::Try/require_catch", 0); | 
 
| 416 | 47 | 0 | bool require_var   = hints && hv_fetchs(hints, "Syntax::Keyword::Try/require_var", 0); | 
 
|  | 46 | 1 | bool require_var   = hints && hv_fetchs(hints, "Syntax::Keyword::Try/require_var", 0); | 
 
| 422 | 41 | 46 | while(ncatches--) { | 
 
| 424 | 37 | 4 | PADOFFSET catchvar = has_catchvar ? args[argi++]->padix : 0; | 
 
| 425 | 37 | 4 | int catchtype = has_catchvar ? args[argi++]->i : -1; | 
 
| 443 | 2 | 0 | if(type->op_type == OP_CONST) | 
 
| 456 | 1 | 0 | if(regexp->op_type != OP_MATCH || cPMOPx(regexp)->op_first) | 
 
|  | 0 | 1 | if(regexp->op_type != OP_MATCH || cPMOPx(regexp)->op_first) | 
 
| 475 | 3 | 38 | if(condop && !warned && | 
 
|  | 3 | 0 | if(condop && !warned && | 
 
| 476 | 0 | 3 | (!hints || !hv_fetchs(hints, "Syntax::Keyword::Try/experimental(typed)", 0))) { | 
 
| 485 | 1 | 40 | if(require_var && !has_catchvar) | 
 
| 488 | 0 | 40 | if(catch) | 
 
| 492 | 37 | 3 | if(catchvar) { | 
 
| 498 | 3 | 37 | if(condop) { | 
 
| 499 | 2 | 1 | if(!condcatch) | 
 
| 506 | 34 | 3 | else if(assignop) { | 
 
| 514 | 2 | 44 | if(condcatch) { | 
 
| 517 | 1 | 1 | if(!catch) | 
 
| 523 | 0 | 2 | for(i = AvFILL(condcatch)-1; i >= 0; i -= 2) { | 
 
|  | 3 | 2 | for(i = AvFILL(condcatch)-1; i >= 0; i -= 2) { | 
 
| 533 | 0 | 46 | if(require_catch && !catch) | 
 
| 536 | 46 | 0 | bool no_finally = hints && hv_fetchs(hints, "Syntax::Keyword::Try/no_finally", 0); | 
 
|  | 45 | 1 | bool no_finally = hints && hv_fetchs(hints, "Syntax::Keyword::Try/no_finally", 0); | 
 
| 539 | 11 | 35 | CV *finally = has_finally ? args[argi++]->cv : NULL; | 
 
| 541 | 1 | 45 | if(no_finally && finally) | 
 
| 544 | 0 | 45 | if(!catch && !finally) { | 
 
| 546 | 0 | 0 | croak(no_finally | 
 
| 553 | 38 | 7 | if(catch) { | 
 
| 560 | 10 | 35 | if(finally) { |