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)); |