Branch Coverage

lib/Future/AsyncAwait.xs
Criterion Covered Total %
branch 394 810 48.6


line true false branch
199 252 0 if(!SvOK(regsv)) {
252 0 if(!SvOK(regsv)) {
252 0 if(!SvOK(regsv)) {
200 0 252 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 238 132 for(magic = mg_find((SV *)cv, PERL_MAGIC_ext); magic; magic = magic->mg_moremagic)
397 238 0 if(magic->mg_type == PERL_MAGIC_ext && magic->mg_virtual == &vtbl_suspendedstate)
238 0 if(magic->mg_type == PERL_MAGIC_ext && magic->mg_virtual == &vtbl_suspendedstate)
425 11 82 if(state->awaiting_future) {
430 11 82 if(state->returning_future) {
435 11 82 if(state->frames) {
437 13 11 while((frame = next)) {
440 3 10 if(frame->stacklen) {
447 3 10 if(frame->marklen) {
451 4 9 if(frame->saved) {
453 8 4 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 11 if(frame->mortals) {
548 2 2 for(i = 0; i < frame->mortallen; i++)
558 11 82 if(state->padslots) {
560 39 11 for(i = 0; i < state->padlen - 1; i++) {
561 12 27 if(state->padslots[i])
570 11 82 if(state->defav) {
578 3 90 if(state->modhookdata) {
581 0 3 if(regs)
582 0 0 RUN_HOOKS_REV(free, (CV *)sv, state->modhookdata);
0 0 RUN_HOOKS_REV(free, (CV *)sv, state->modhookdata);
586 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)) {
588 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
604 30 136 if(frame->stacklen) {
608 0 30 Newx(frame->stack, frame->stacklen, SV *);
609 63 30 for(i = 0; i < frame->stacklen; i++) {
617 19 147 if(frame->marklen) {
620 0 19 Newx(frame->marks, frame->marklen, I32);
621 21 19 for(i = 0; i < frame->marklen; i++) {
636 48 118 if(savedlen)
637 0 48 Newx(frame->saved, savedlen, struct Saved);
651 64 166 while(PL_savestack_ix > old_saveix) {
669 6 5 saved->type = count == 1 ? SAVEt_CLEARSV : SAVEt_CLEARPADRANGE;
697 0 0 PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL;
730 0 0 if(var == (int *)&PL_tmps_floor) {
783 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))
808 0 0 if(var == (STRLEN *)&PL_tmps_floor) {
833 0 9 if(gv != PL_errgv) {
835 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));
837 0 0 if(name && stashname)
861 0 0 if(padav != PL_comppad)
893 0 0 if(name)
906 0 166 if(OLDSAVEIX(cx) != PL_savestack_ix)
910 119 47 if(frame->scopes) {
943 0 25 if(!CxPADLOOP(cx))
964 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))
993 3 0 if(frame->el.loop.state_u.ary.ary)
1009 0 16 if(cx->blk_oldsp != height)
1025 0 124 if(!(cx->cx_type & CXp_TRYBLOCK))
1027 0 124 if(cx->blk_eval.old_namesv)
1029 0 124 if(cx->blk_eval.cv)
1031 0 124 if(cx->blk_eval.cur_top_env != PL_top_env)
1060 166 0 if(oldtmpsfloor == -2) {
1069 19 147 if(frame->mortallen) {
1070 0 19 Newx(frame->mortals, frame->mortallen, SV *);
1071 25 19 for(i = 0; i < frame->mortallen; i++) {
1094 285 0 for(cxix = cxstack_ix; cxix; cxix--) {
1096 166 119 if(CxTYPE(cx) == CXt_SUB)
1125 341 119 for(i = 1; i <= pad_max; i++) {
1126 341 0 PADNAME *pname = (i <= padnames_max) ? padnames[i] : NULL;
1128 239 102 if(!padname_is_normal_lexical(pname)) {
1133 0 102 if(PadnameIsSTATE(pname)) {
1157 2 117 if(PL_curpm)
1246 0 113 if(CATCH_GET)
1257 0 113 CLEAR_ERRSV();
0 113 CLEAR_ERRSV();
0 113 CLEAR_ERRSV();
1277 27 126 if(frame->stacklen) {
1279 0 27 EXTEND(SP, frame->stacklen);
1281 58 27 for(i = 0; i < frame->stacklen; i++) {
1289 16 137 if(frame->marklen) {
1290 18 16 for(i = 0; i < frame->marklen; i++) {
1292 0 18 PUSHMARK(PL_stack_base + absmark);
1300 56 153 for(i = frame->savedlen - 1; i >= 0; i--) {
1323 0 0 PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL;
1392 44 109 if(frame->saved)
1403 17 136 if(frame->mortallen) {
1404 23 17 for(i = 0; i < frame->mortallen; i++) {
1412 15 138 switch(frame->type) {
1432 0 15 if(PL_stack_base[cx->blk_loop.state_u.stack.basesp+1] == frame->loop_list_first_item)
1456 108 0 if(state->padlen) {
1461 302 108 for(i = 1; i < state->padlen; i++) {
1462 215 87 if(!state->padslots[i-1])
1475 153 108 for(frame = state->frames; frame; frame = next) {
1484 2 106 if(state->curpm)
1487 108 0 if(state->defav) {
1501 8 8 for(frame = state->frames; frame; frame = frame->next) {
1504 4 8 for(i = frame->savedlen - 1; i >= 0; i--) {
1507 1 3 switch(saved->type) {
1532 0 209 return SvUV(SvRV(*hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/*precreate_padix", 0)));
1539 0 4 PADOFFSET padix = SvUV(sv = SvRV(*hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/*precreate_padix", 0)));
1540 4 0 if(!padix) {
1560 22 1 if(class == &PL_sv_placeholder)
1572 0 91 EXTEND(SP, 1);
1577 0 91 PUSHMARK(mark);
1583 109 91 for (svp = SP; svp >= bottom; svp--) {
1587 71 20 if(f) {
1605 91 0 FREETMPS;
1621 0 13 PUSHMARK(SP);
1622 10 3 if(f) {
1640 13 0 FREETMPS;
1656 0 94 PUSHMARK(SP);
1666 94 0 FREETMPS;
1669 0 94 if(!SvROK(f))
1683 376 0 if(!f || !SvOK(f))
0 376 if(!f || !SvOK(f))
0 0 if(!f || !SvOK(f))
0 0 if(!f || !SvOK(f))
1685 0 376 if(!SvROK(f))
1691 0 376 PUSHMARK(SP);
1692 0 376 EXTEND(SP, 1);
1700 376 0 bool ret = SvTRUEx(POPs);
0 376 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
135 241 bool ret = SvTRUEx(POPs);
135 0 bool ret = SvTRUEx(POPs);
0 135 bool ret = SvTRUEx(POPs);
0 241 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);
241 0 bool ret = SvTRUEx(POPs);
241 0 bool ret = SvTRUEx(POPs);
119 122 bool ret = SvTRUEx(POPs);
0 119 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
122 119 bool ret = SvTRUEx(POPs);
0 0 bool ret = SvTRUEx(POPs);
1703 376 0 FREETMPS;
1716 0 117 PUSHMARK(SP);
1717 0 117 EXTEND(SP, 1);
1734 0 119 PUSHMARK(SP);
1735 0 119 EXTEND(SP, 2);
1742 119 0 FREETMPS;
1754 0 4 PUSHMARK(SP);
1755 0 4 EXTEND(SP, 2);
1762 4 0 FREETMPS;
1774 0 119 PUSHMARK(SP);
1775 0 119 EXTEND(SP, 2);
1782 119 0 FREETMPS;
1793 0 5 PUSHMARK(SP);
1794 0 5 EXTEND(SP, 1);
1798 4 1 call_method("AWAIT_WAIT", GIMME_V);
1811 0 0 if(!state) {
1812 0 0 if(!precreate_padix)
1815 0 0 if(!(flags & FAA_MODHOOK_CREATE))
1821 0 0 if((flags & FAA_MODHOOK_CREATE) && !state->modhookdata)
0 0 if((flags & FAA_MODHOOK_CREATE) && !state->modhookdata)
1836 4 0 if(precreate_padix) {
1854 83 23 if(state && state->returning_future) {
83 0 if(state && state->returning_future) {
1859 83 23 if(f && !SvROK(f)) {
2 81 if(f && !SvROK(f)) {
1862 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)) {
1866 1 0 if(!CvANON(curcv))
1867 1 0 warn("Abandoned async sub %s::%s failed: %" SVf,
0 1 warn("Abandoned async sub %s::%s failed: %" SVf,
1868 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));
1870 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,
1871 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));
1877 104 0 if(SvTRUE(ERRSV)) {
104 0 if(SvTRUE(ERRSV)) {
104 0 if(SvTRUE(ERRSV)) {
0 104 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
104 0 if(SvTRUE(ERRSV)) {
0 104 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
104 0 if(SvTRUE(ERRSV)) {
101 3 if(SvTRUE(ERRSV)) {
101 0 if(SvTRUE(ERRSV)) {
101 0 if(SvTRUE(ERRSV)) {
101 0 if(SvTRUE(ERRSV)) {
91 10 if(SvTRUE(ERRSV)) {
91 0 if(SvTRUE(ERRSV)) {
0 91 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
0 0 if(SvTRUE(ERRSV)) {
10 91 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)) {
1878 13 0 ret = future_fail(f, ERRSV);
1892 104 106 while(SP > oldsp)
1895 104 2 if(ret) {
1896 0 104 EXTEND(SP, 1);
1901 83 23 if(f)
1925 8 252 AV *precancel = precreate_padix ? (AV *)PAD_SVl(precreate_padix + PRECREATE_CANCEL) : NULL;
1929 154 106 if(state && state->awaiting_future && CATCH_GET) {
126 28 if(state && state->awaiting_future && CATCH_GET) {
11 115 if(state && state->awaiting_future && CATCH_GET) {
1938 143 106 if(state && state->curcop)
115 28 if(state && state->curcop)
1948 143 106 if(state) {
1949 140 3 if(!SvROK(state->returning_future) || future_is_cancelled(state->returning_future)) {
5 135 if(!SvROK(state->returning_future) || future_is_cancelled(state->returning_future)) {
1950 3 5 if(!SvROK(state->returning_future)) {
1952 2 1 if(!CvANON(curcv))
1953 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));
1955 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)));
1962 0 8 PUSHMARK(SP);
1968 135 106 if(state && state->awaiting_future) {
108 27 if(state && state->awaiting_future) {
1981 108 108 while(sp > PL_stack_base + orig_height)
1989 0 108 while(PL_markstack_ptr > PL_markstack + orig_height)
1991 0 108 PUSHMARK(SP);
1996 0 108 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)) {
1998 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
1999 0 0 if(!state->modhookdata)
2007 0 108 if(regs)
2008 0 0 RUN_HOOKS_REV(pre_resume, curcv, state->modhookdata);
0 0 RUN_HOOKS_REV(pre_resume, curcv, state->modhookdata);
2012 0 108 if(regs)
2013 0 0 RUN_HOOKS_FWD(post_resume, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_resume, curcv, state->modhookdata);
2024 0 241 if(!sv_isobject(f))
2027 5 236 if(PL_op->op_flags & OPf_SPECIAL) {
2032 117 119 if(future_is_ready(f)) {
2035 110 7 if(state)
2038 108 9 future_get_to_stack(f, GIMME_V);
2047 94 25 if(!state) {
2058 3 91 HV *premodhookdata = precreate_padix ? (HV *)PAD_SVl(precreate_padix + PRECREATE_MODHOOKDATA) : NULL;
2059 3 91 if(premodhookdata) {
2064 0 94 if(regs) {
2065 0 0 if(!state->modhookdata)
2067 0 0 RUN_HOOKS_FWD(post_cv_copy, runcv, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_cv_copy, runcv, curcv, state->modhookdata);
2079 0 119 if(regs)
2080 0 0 RUN_HOOKS_FWD(pre_suspend, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(pre_suspend, curcv, state->modhookdata);
2085 0 119 if(regs)
2086 0 0 RUN_HOOKS_FWD(post_suspend, curcv, state->modhookdata);
0 0 RUN_HOOKS_FWD(post_suspend, curcv, state->modhookdata);
2091 0 119 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)) {
2093 0 0 SuspendHookFunc *hook = INT2PTR(SuspendHookFunc *, SvUV(*hookp));
2094 0 0 if(!state->modhookdata)
2108 0 119 if(SvREFCNT(curcv) < 2) {
2115 94 25 if(!state->returning_future) {
2118 3 91 if(precancel) {
2120 0 6 for(i = 0; i < av_count(precancel); i++)
3 3 for(i = 0; i < av_count(precancel); i++)
2132 94 25 if(defer_mortal_curcv)
2135 0 119 PUSHMARK(SP);
2139 94 25 if(!SvWEAKREF(state->returning_future))
2141 0 119 if(!SvROK(state->returning_future))
2147 0 119 if(!SvROK(state->returning_future))
2151 0 119 if(!SvROK(state->awaiting_future))
2166 1 3 if(state && state->returning_future) {
1 0 if(state && state->returning_future) {
2191 109 1759 if(OP_CLASS(op) == OA_COP)
304 1564 if(OP_CLASS(op) == OA_COP)
2196 13 4 if((op_first = cUNOPx(op)->op_first)->op_type != OP_ENTERITER)
2204 13 0 kid = OpSIBLING(op_first);
2206 2 11 if(!op_first->op_targ)
2213 3 0 if((op_first = cUNOPx(op)->op_first)->op_type != OP_PUSHMARK)
2216 3 0 kid = OpSIBLING(op_first);
2217 1 2 check_optree(aTHX_ kid,
2220 1 0 kid = OpSIBLING(kid);
2224 100 9 if(op->op_ppaddr != &pp_await)
2226 3 97 if(!forbid)
2243 3 0 croak("await is not allowed inside %s at %s line %d.\n",
2248 807 1056 if(op->op_flags & OPf_KIDS) {
2249 793 14 if(!kid)
2251 940 786 for(; kid; kid = OpSIBLING(kid))
1741 792 for(; kid; kid = OpSIBLING(kid))
2275 111 0 if(ctx->body) {
2288 105 3 if(ctx->body->op_type == OP_LINESEQ) {
2294 0 105 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 &&
2299 105 0 if(o->op_type == OP_NEXTSTATE &&
7 98 if(o->op_type == OP_NEXTSTATE &&
2300 105 0 OpSIBLING(o)->op_type == OP_ARGCHECK) {
2304 7 0 o = OpSIBLING(OpSIBLING(o));
7 0 o = OpSIBLING(OpSIBLING(o));
7 0 o = OpSIBLING(OpSIBLING(o));
2305 7 0 OpMORESIB_set(OpSIBLING(argcheckop), NULL);
7 0 OpMORESIB_set(OpSIBLING(argcheckop), NULL);
2319 4 104 if(precreate_padix) {
2336 7 101 if(argcheckop) {
2340 14 0 while(OpSIBLING(o))
7 7 while(OpSIBLING(o))
2341 0 7 o = OpSIBLING(o);
2353 1 107 if(CvLVALUE(ctx->cv))
2368 104 6 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
0 104 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
2 102 if(asynccvp && SvUV(*asynccvp) == PTR2UV(PL_compcv))
2370 3 5 else if(PL_compcv == PL_main_cv)
2373 1 2 croak(CvEVAL(PL_compcv) ?
0 1 croak(CvEVAL(PL_compcv) ?
2382 5 101 if(PL_compcv == PL_main_cv)
2403 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))
2404 0 0 croak(CvEVAL(PL_compcv) ?
0 0 croak(CvEVAL(PL_compcv) ?
2409 0 4 if(!hv_fetchs(GvHV(PL_hintgv), "Future::AsyncAwait/experimental(cancel)", 0)) {
2454 0 0 if(hookfuncs_v1->flags)
2527 0 45 if(svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/on_loaded", FALSE)) {
2534 0 45 if(run_on_loaded) {
2538 0 0 for(i = 0; i < AvFILL(run_on_loaded); i += 2) {
0 0 for(i = 0; i < AvFILL(run_on_loaded); i += 2) {
2539 0 0 void (*func)(pTHX_ void *data) = INT2PTR(void *, SvUV(svp[i ]));
2540 0 0 void *data = INT2PTR(void *, SvUV(svp[i+1]));