| line |
true |
false |
branch |
|
34
|
0 |
2 |
if(!register_future_asyncawait_hook_func) |
|
45
|
2 |
7 |
if((svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/loaded", FALSE)) && SvOK(*svp)) { |
|
|
0 |
2 |
if((svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/loaded", FALSE)) && SvOK(*svp)) { |
|
|
0 |
0 |
if((svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/loaded", FALSE)) && SvOK(*svp)) { |
|
|
0 |
0 |
if((svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/loaded", FALSE)) && SvOK(*svp)) { |
|
52
|
0 |
7 |
if(svp) |
|
74
|
0 |
0 |
if(!future_asyncawait_get_modhookdata_func) |
|
84
|
0 |
0 |
if(!future_asyncawait_make_precreate_padix_func) |
|
94
|
2 |
0 |
SV *versv = ver ? newSVnv(ver) : NULL; |
|
99
|
0 |
2 |
if(!svp) |
|
101
|
2 |
0 |
int abi_ver = SvIV(*svp); |
|
102
|
0 |
2 |
if(abi_ver > FUTURE_ASYNCAWAIT_ABI_VERSION) |
|
107
|
2 |
0 |
abi_ver = SvIV(*svp); |
|
108
|
0 |
2 |
if(abi_ver < FUTURE_ASYNCAWAIT_ABI_VERSION) |
|
112
|
0 |
2 |
register_future_asyncawait_hook_func = INT2PTR(void (*)(pTHX_ const struct AsyncAwaitHookFuncs *, void *), |
|
115
|
0 |
2 |
future_asyncawait_get_modhookdata_func = INT2PTR(HV *(*)(pTHX_ CV *, U32, PADOFFSET), |
|
118
|
0 |
2 |
future_asyncawait_make_precreate_padix_func = INT2PTR(PADOFFSET (*)(pTHX), |
|
183
|
0 |
0 |
if(*oldhookp) |
|
194
|
0 |
0 |
if(!*oldhookp) { |
|
196
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
197
|
0 |
0 |
*oldhookp = INT2PTR(SuspendHookFunc *, SvUV(*hookp)); |