Branch Coverage

lib/Future/AsyncAwait.xs
Criterion Covered Total %
branch 393 812 48.4


line true false branch
199 234 0 if(!SvOK(regsv)) {
234 0 if(!SvOK(regsv)) {
234 0 if(!SvOK(regsv)) {
200 0 234 if(!add)
213 0 0 return INT2PTR(struct HookRegistrations *, SvUV(regsv));
220 0 0 if(hookfuncs->flags)
225 0 0 if(regs->count == regs->size) {
227 0 0 Renew(regs->arr, regs->size, struct HookRegistration);
396 225 119 for(magic = mg_find((SV *)cv, PERL_MAGIC_ext); magic; magic = magic->mg_moremagic)
397 225 0 if(magic->mg_type == PERL_MAGIC_ext && magic->mg_virtual == &vtbl_suspendedstate)
225 0 if(magic->mg_type == PERL_MAGIC_ext && magic->mg_virtual == &vtbl_suspendedstate)
425 10 76 if(state->awaiting_future) {
430 10 76 if(state->returning_future) {
435 10 76 if(state->frames) {
437 11 10 while((frame = next)) {
440 3 8 if(frame->stacklen) {
447 3 8 if(frame->marklen) {
451 3 8 if(frame->saved) {
453 7 3 for(idx = 0; idx < frame->savedlen; idx++) {
497 0 0 if(name)
524 0 0 if(frame->el.loop.state_u.ary.ary)
546 2 9 if(frame->mortals) {
548 2 2 for(i = 0; i < frame->mortallen; i++)
558 10 76 if(state->padslots) {
560 37 10 for(i = 0; i < state->padlen - 1; i++) {
561 12 25 if(state->padslots[i])
570 10 76 if(state->defav) {
575 3 83 if(state->modhookdata) {
578 0 3 if(regs)
579 0 0 RUN_HOOKS_REV(free, (CV *)sv, state->modhookdata);
0 0 RUN_HOOKS_REV(free, (CV *)sv, state->modhookdata);
583 0 3 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
585 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
601 30 121 if(frame->stacklen) {
605 0 30 Newx(frame->stack, frame->stacklen, SV *);
606 63 30 for(i = 0; i < frame->stacklen; i++) {
614 19 132 if(frame->marklen) {
617 0 19 Newx(frame->marks, frame->marklen, I32);
618 21 19 for(i = 0; i < frame->marklen; i++) {
633 37 114 if(savedlen)
634 0 37 Newx(frame->saved, savedlen, struct Saved);
648 50 151 while(PL_savestack_ix > old_saveix) {
666 6 5 saved->type = count == 1 ? SAVEt_CLEARSV : SAVEt_CLEARPADRANGE;
694 0 0 PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL;
727 0 0 if(var == (int *)&PL_tmps_floor) {
780 0 0 if(var < PL_curpad || var > PL_curpad + AvFILL(PL_comppad))
0 0 if(var < PL_curpad || var > PL_curpad + AvFILL(PL_comppad))
0 0 if(var < PL_curpad || var > PL_curpad + AvFILL(PL_comppad))
805 0 0 if(var == (STRLEN *)&PL_tmps_floor) {
830 0 5 if(gv != PL_errgv) {
832 0 0 const char *stashname = HvNAME(GvSTASH(gv));
0 0 const char *stashname = HvNAME(GvSTASH(gv));
0 0 const char *stashname = HvNAME(GvSTASH(gv));
0 0 const char *stashname = HvNAME(GvSTASH(gv));
0 0 const char *stashname = HvNAME(GvSTASH(gv));
0 0 const char *stashname = HvNAME(GvSTASH(gv));
834 0 0 if(name && stashname)
858 0 0 if(padav != PL_comppad)
890 0 0 if(name)
903 0 151 if(OLDSAVEIX(cx) != PL_savestack_ix)
907 112 39 if(frame->scopes) {
940 0 25 if(!CxPADLOOP(cx))
961 25 0 if(CxITERVAR(cx) != &PAD_SVl(cx->blk_loop.my_op->op_targ))
0 0 if(CxITERVAR(cx) != &PAD_SVl(cx->blk_loop.my_op->op_targ))
0 25 if(CxITERVAR(cx) != &PAD_SVl(cx->blk_loop.my_op->op_targ))
990 3 0 if(frame->el.loop.state_u.ary.ary)
1006 0 16 if(cx->blk_oldsp != height)
1022 0 114 if(!(cx->cx_type & CXp_TRYBLOCK))
1024 0 114 if(cx->blk_eval.old_namesv)
1026 0 114 if(cx->blk_eval.cv)
1028 0 114 if(cx->blk_eval.cur_top_env != PL_top_env)
1057 151 0 if(oldtmpsfloor == -2) {
1066 19 132 if(frame->mortallen) {
1067 0 19 Newx(frame->mortals, frame->mortallen, SV *);
1068 25 19 for(i = 0; i < frame->mortallen; i++) {
1091 263 0 for(cxix = cxstack_ix; cxix; cxix--) {
1093 151 112 if(CxTYPE(cx) == CXt_SUB)
1122 321 112 for(i = 1; i <= pad_max; i++) {
1123 321 0 PADNAME *pname = (i <= padnames_max) ? padnames[i] : NULL;
1125 231 90 if(!padname_is_normal_lexical(pname)) {
1130 0 90 if(PadnameIsSTATE(pname)) {
1154 2 110 if(PL_curpm)
1174 112 0 if(PAD_SVl(0) == (SV *)state->defav) {
1248 0 104 if(CATCH_GET)
1259 0 104 CLEAR_ERRSV();
0 104 CLEAR_ERRSV();
0 104 CLEAR_ERRSV();
1279 27 113 if(frame->stacklen) {
1281 0 27 EXTEND(SP, frame->stacklen);
1283 58 27 for(i = 0; i < frame->stacklen; i++) {
1291 16 124 if(frame->marklen) {
1292 18 16 for(i = 0; i < frame->marklen; i++) {
1294 0 18 PUSHMARK(PL_stack_base + absmark);
1302 43 140 for(i = frame->savedlen - 1; i >= 0; i--) {
1325 0 0 PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL;
1394 34 106 if(frame->saved)
1405 17 123 if(frame->mortallen) {
1406 23 17 for(i = 0; i < frame->mortallen; i++) {
1414 15 125 switch(frame->type) {
1434 0 15 if(PL_stack_base[cx->blk_loop.state_u.stack.basesp+1] == frame->loop_list_first_item)
1458 102 0 if(state->padlen) {
1463 284 102 for(i = 1; i < state->padlen; i++) {
1464 209 75 if(!state->padslots[i-1])
1477 140 102 for(frame = state->frames; frame; frame = next) {
1486 2 100 if(state->curpm)
1489 102 0 if(state->defav) {
1503 6 7 for(frame = state->frames; frame; frame = frame->next) {
1506 3 6 for(i = frame->savedlen - 1; i >= 0; i--) {
1509 0 3 switch(saved->type) {
1534 0 191 return SvUV(SvRV(*hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/*precreate_padix", 0)));
1541 0 4 PADOFFSET padix = SvUV(sv = SvRV(*hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/*precreate_padix", 0)));
1542 4 0 if(!padix) {
1562 20 1 if(class == &PL_sv_placeholder)
1574 0 83 EXTEND(SP, 1);
1579 0 83 PUSHMARK(mark);
1585 100 83 for (svp = SP; svp >= bottom; svp--) {
1589 65 18 if(f) {
1607 83 0 FREETMPS;
1623 0 13 PUSHMARK(SP);
1624 10 3 if(f) {
1642 13 0 FREETMPS;
1658 0 87 PUSHMARK(SP);
1668 87 0 FREETMPS;
1671 0 87 if(!SvROK(f))
1685 355 0 if(!f || !SvOK(f))
0 355 if(!f || !SvOK(f))
0 0 if(!f || !SvOK(f))
0 0 if(!f || !SvOK(f))
1687 0 355 if(!SvROK(f))
1693 0 355 PUSHMARK(SP);
1694 0 355 EXTEND(SP, 1);
1702 355 0 bool ret = SvTRUEx(POPs);
0 355 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
129 226 bool ret = SvTRUEx(POPs);
129 0 bool ret = SvTRUEx(POPs);
0 129 bool ret = SvTRUEx(POPs);
0 226 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
226 0 bool ret = SvTRUEx(POPs);
226 0 bool ret = SvTRUEx(POPs);
112 114 bool ret = SvTRUEx(POPs);
0 112 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
114 112 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
1705 355 0 FREETMPS;
1718 0 110 PUSHMARK(SP);
1719 0 110 EXTEND(SP, 1);
1736 0 112 PUSHMARK(SP);
1737 0 112 EXTEND(SP, 2);
1744 112 0 FREETMPS;
1756 0 4 PUSHMARK(SP);
1757 0 4 EXTEND(SP, 2);
1764 4 0 FREETMPS;
1776 0 112 PUSHMARK(SP);
1777 0 112 EXTEND(SP, 2);
1784 112 0 FREETMPS;
1795 0 2 PUSHMARK(SP);
1796 0 2 EXTEND(SP, 1);
1800 2 0 call_method("AWAIT_WAIT", GIMME_V);
1813 0 0 if(!state) {
1814 0 0 if(!precreate_padix)
1817 0 0 if(!(flags & FAA_MODHOOK_CREATE))
1823 0 0 if((flags & FAA_MODHOOK_CREATE) && !state->modhookdata)
0 0 if((flags & FAA_MODHOOK_CREATE) && !state->modhookdata)
1838 4 0 if(precreate_padix) {
1856 77 21 if(state && state->returning_future) {
77 0 if(state && state->returning_future) {
1861 77 21 if(f && !SvROK(f)) {
2 75 if(f && !SvROK(f)) {
1864 2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
0 2 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
0 2 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
2 0 if(SvTRUE(ERRSV)) {
1 1 if(SvTRUE(ERRSV)) {
1 0 if(SvTRUE(ERRSV)) {
0 1 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
1 1 if(SvTRUE(ERRSV)) {
1868 1 0 if(!CvANON(curcv))
1869 1 0 warn("Abandoned async sub %s::%s failed: %" SVf,
0 1 warn("Abandoned async sub %s::%s failed: %" SVf,
1870 1 0 HvNAME(GvSTASH(gv)), GvNAME(gv), SVfARG(ERRSV));
1 0 HvNAME(GvSTASH(gv)), GvNAME(gv), SVfARG(ERRSV));
0 0 HvNAME(GvSTASH(gv)), GvNAME(gv), SVfARG(ERRSV));
1 0 HvNAME(GvSTASH(gv)), GvNAME(gv), SVfARG(ERRSV));
0 1 HvNAME(GvSTASH(gv)), GvNAME(gv), SVfARG(ERRSV));
1872 0 0 warn("Abandoned async sub CODE(0x%p) in package %s failed: %" SVf,
0 0 warn("Abandoned async sub CODE(0x%p) in package %s failed: %" SVf,
1873 0 0 curcv, HvNAME(GvSTASH(gv)), SVfARG(ERRSV));
0 0 curcv, HvNAME(GvSTASH(gv)), SVfARG(ERRSV));
0 0 curcv, HvNAME(GvSTASH(gv)), SVfARG(ERRSV));
0 0 curcv, HvNAME(GvSTASH(gv)), SVfARG(ERRSV));
0 0 curcv, HvNAME(GvSTASH(gv)), SVfARG(ERRSV));
1879 96 0 if(SvTRUE(ERRSV)) {
96 0 if(SvTRUE(ERRSV)) {
96 0 if(SvTRUE(ERRSV)) {
0 96 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
96 0 if(SvTRUE(ERRSV)) {
0 96 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
96 0 if(SvTRUE(ERRSV)) {
93 3 if(SvTRUE(ERRSV)) {
93 0 if(SvTRUE(ERRSV)) {
93 0 if(SvTRUE(ERRSV)) {
93 0 if(SvTRUE(ERRSV)) {
83 10 if(SvTRUE(ERRSV)) {
83 0 if(SvTRUE(ERRSV)) {
0 83 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
10 83 if(SvTRUE(ERRSV)) {
3 0 if(SvTRUE(ERRSV)) {
0 3 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
3 0 if(SvTRUE(ERRSV)) {
3 0 if(SvTRUE(ERRSV)) {
1880 13 0 ret = future_fail(f, ERRSV);
1894 96 98 while(SP > oldsp)
1897 96 2 if(ret) {
1898 0 96 EXTEND(SP, 1);
1903 77 21 if(f)
1927 8 234 AV *precancel = precreate_padix ? (AV *)PAD_SVl(precreate_padix + PRECREATE_CANCEL) : NULL;
1931 147 95 if(state && state->awaiting_future && CATCH_GET) {
119 28 if(state && state->awaiting_future && CATCH_GET) {
11 108 if(state && state->awaiting_future && CATCH_GET) {
1940 136 95 if(state && state->curcop)
108 28 if(state && state->curcop)
1950 136 95 if(state) {
1951 133 3 if(!SvROK(state->returning_future) || future_is_cancelled(state->returning_future)) {
4 129 if(!SvROK(state->returning_future) || future_is_cancelled(state->returning_future)) {
1952 3 4 if(!SvROK(state->returning_future)) {
1954 2 1 if(!CvANON(curcv))
1955 2 0 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
2 0 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
0 2 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
0 0 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
2 0 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
0 2 warn("Suspended async sub %s::%s lost its returning future", HvNAME(GvSTASH(gv)), GvNAME(gv));
1957 1 0 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
1 0 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
0 1 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
0 0 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
1 0 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
0 1 warn("Suspended async sub CODE(0x%p) in package %s lost its returning future", curcv, HvNAME(GvSTASH(gv)));
1964 0 7 PUSHMARK(SP);
1970 129 95 if(state && state->awaiting_future) {
102 27 if(state && state->awaiting_future) {
1983 102 102 while(sp > PL_stack_base + orig_height)
1991 0 102 while(PL_markstack_ptr > PL_markstack + orig_height)
1993 0 102 PUSHMARK(SP);
1998 0 102 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
2000 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
2001 0 0 if(!state->modhookdata)
2009 0 102 if(regs)
2010 0 0 RUN_HOOKS_REV(pre_resume, curcv, state->modhookdata);
0 0 RUN_HOOKS_REV(pre_resume, curcv, state->modhookdata);
2014 0 102 if(regs)
2015 0 0 RUN_HOOKS_FWD(post_resume, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_resume, curcv, state->modhookdata);
2026 0 224 if(!sv_isobject(f))
2029 2 222 if(PL_op->op_flags & OPf_SPECIAL) {
2034 110 112 if(future_is_ready(f)) {
2037 104 6 if(state)
2040 102 8 future_get_to_stack(f, GIMME_V);
2049 87 25 if(!state) {
2060 3 84 HV *premodhookdata = precreate_padix ? (HV *)PAD_SVl(precreate_padix + PRECREATE_MODHOOKDATA) : NULL;
2061 3 84 if(premodhookdata) {
2066 0 87 if(regs) {
2067 0 0 if(!state->modhookdata)
2069 0 0 RUN_HOOKS_FWD(post_cv_copy, runcv, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_cv_copy, runcv, curcv, state->modhookdata);
2081 0 112 if(regs)
2082 0 0 RUN_HOOKS_REV(pre_suspend, curcv, state->modhookdata);
0 0 RUN_HOOKS_REV(pre_suspend, curcv, state->modhookdata);
2087 0 112 if(regs)
2088 0 0 RUN_HOOKS_FWD(post_suspend, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_suspend, curcv, state->modhookdata);
2093 0 112 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
0 0 if(hookp && SvOK(*hookp) && SvUV(*hookp)) {
2095 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
2096 0 0 if(!state->modhookdata)
2110 0 112 if(SvREFCNT(curcv) < 2) {
2117 87 25 if(!state->returning_future) {
2120 3 84 if(precancel) {
2122 0 6 for(i = 0; i < av_count(precancel); i++)
3 3 for(i = 0; i < av_count(precancel); i++)
2134 87 25 if(defer_mortal_curcv)
2137 0 112 PUSHMARK(SP);
2141 87 25 if(!SvWEAKREF(state->returning_future))
2143 0 112 if(!SvROK(state->returning_future))
2149 0 112 if(!SvROK(state->returning_future))
2153 0 112 if(!SvROK(state->awaiting_future))
2168 1 3 if(state && state->returning_future) {
1 0 if(state && state->returning_future) {
2193 96 1601 if(OP_CLASS(op) == OA_COP)
271 1426 if(OP_CLASS(op) == OA_COP)
2198 13 4 if((op_first = cUNOPx(op)->op_first)->op_type != OP_ENTERITER)
2206 13 0 kid = OpSIBLING(op_first);
2208 2 11 if(!op_first->op_targ)
2215 3 0 if((op_first = cUNOPx(op)->op_first)->op_type != OP_PUSHMARK)
2218 3 0 kid = OpSIBLING(op_first);
2219 1 2 check_optree(aTHX_ kid,
2222 1 0 kid = OpSIBLING(kid);
2226 92 4 if(op->op_ppaddr != &pp_await)
2228 3 89 if(!forbid)
2245 3 0 croak("await is not allowed inside %s at %s line %d.\n",
2250 733 959 if(op->op_flags & OPf_KIDS) {
2251 719 14 if(!kid)
2253 849 715 for(; kid; kid = OpSIBLING(kid))
1579 718 for(; kid; kid = OpSIBLING(kid))
2277 102 0 if(ctx->body) {
2290 96 3 if(ctx->body->op_type == OP_LINESEQ) {
2296 0 96 if(o->op_type == OP_NULL && o->op_flags & OPf_KIDS &&
0 0 if(o->op_type == OP_NULL && o->op_flags & OPf_KIDS &&
0 0 if(o->op_type == OP_NULL && o->op_flags & OPf_KIDS &&
2301 96 0 if(o->op_type == OP_NEXTSTATE &&
7 89 if(o->op_type == OP_NEXTSTATE &&
2302 96 0 OpSIBLING(o)->op_type == OP_ARGCHECK) {
2306 7 0 o = OpSIBLING(OpSIBLING(o));
7 0 o = OpSIBLING(OpSIBLING(o));
7 0 o = OpSIBLING(OpSIBLING(o));
2307 7 0 OpMORESIB_set(OpSIBLING(argcheckop), NULL);
7 0 OpMORESIB_set(OpSIBLING(argcheckop), NULL);
2321 4 95 if(precreate_padix) {
2338 7 92 if(argcheckop) {
2342 14 0 while(OpSIBLING(o))
7 7 while(OpSIBLING(o))
2343 0 7 o = OpSIBLING(o);
2355 1 98 if(CvLVALUE(ctx->cv))
2371 95 3 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
0 95 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
2 93 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
2373 3 2 else if(PL_compcv == PL_main_cv)
2376 1 2 croak(CvEVAL(PL_compcv) ?
0 1 croak(CvEVAL(PL_compcv) ?
2385 2 92 if(PL_compcv == PL_main_cv)
2406 4 0 if(!asynccvp || SvUV(*asynccvp) != PTR2UV(PL_compcv))
0 4 if(!asynccvp || SvUV(*asynccvp) != PTR2UV(PL_compcv))
0 4 if(!asynccvp || SvUV(*asynccvp) != PTR2UV(PL_compcv))
2407 0 0 croak(CvEVAL(PL_compcv) ?
0 0 croak(CvEVAL(PL_compcv) ?
2412 0 4 if(!hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/experimental(cancel)", 0)) {
2457 0 0 if(hookfuncs_v1->flags)
2530 0 45 if(svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/on_loaded", FALSE)) {
2537 0 45 if(run_on_loaded) {
2541 0 0 for(i = 0; i < AvFILL(run_on_loaded); i += 2) {
0 0 for(i = 0; i < AvFILL(run_on_loaded); i += 2) {
2542 0 0 void (*func)(pTHX_ void *data) = INT2PTR(void *, SvUV(svp[i ]));
2543 0 0 void *data = INT2PTR(void *, SvUV(svp[i+1]));