| line |
true |
false |
branch |
|
32
|
0 |
1 |
if(!register_future_asyncawait_hook_func) |
|
43
|
1 |
7 |
if((svp = hv_fetchs(PL_modglobal, "Future::AsyncAwait/loaded", FALSE)) && SvOK(*svp)) { |
|
|
0 |
1 |
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)) { |
|
50
|
0 |
7 |
if(svp) |
|
66
|
1 |
0 |
SV *versv = ver ? newSVnv(ver) : NULL; |
|
71
|
0 |
1 |
if(!svp) |
|
73
|
1 |
0 |
int abi_ver = SvIV(*svp); |
|
74
|
0 |
1 |
if(abi_ver > FUTURE_ASYNCAWAIT_ABI_VERSION) |
|
79
|
1 |
0 |
abi_ver = SvIV(*svp); |
|
80
|
0 |
1 |
if(abi_ver < FUTURE_ASYNCAWAIT_ABI_VERSION) |
|
84
|
0 |
1 |
register_future_asyncawait_hook_func = INT2PTR(void (*)(pTHX_ const struct AsyncAwaitHookFuncs *, void *), |
|
149
|
0 |
0 |
if(*oldhookp) |
|
158
|
0 |
0 |
if(!*oldhookp) { |
|
160
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
|
0 |
0 |
if(hookp && SvOK(*hookp)) |
|
161
|
0 |
0 |
*oldhookp = INT2PTR(SuspendHookFunc *, SvUV(*hookp)); |