Branch Coverage

Interrupt.xs
Criterion Covered Total %
branch 98 224 43.7


line true false branch
88 4 15 if (async->hysteresis)
91 13 6 *async->valuep = value ? value : 1;
98 11 8 if (!async->blocked)
106 19 0 if (!pending && async->fd_enable && async->ep.len)
6 13 if (!pending && async->fd_enable && async->ep.len)
6 0 if (!pending && async->fd_enable && async->ep.len)
120 4 15 if (async->hysteresis)
124 6 13 if (async->fd_enable && async->ep.len && async->autodrain)
6 0 if (async->fd_enable && async->ep.len && async->autodrain)
6 0 if (async->fd_enable && async->ep.len && async->autodrain)
127 0 19 if (async->c_cb)
133 19 0 if (async->cb)
137 19 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
0 19 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
0 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
0 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
0 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
0 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
19 0 SV *saveerr = SvOK (ERRSV) ? sv_mortalcopy (ERRSV) : 0;
142 0 19 PUSHSTACKi (PERLSI_SIGNAL);
144 0 19 PUSHMARK (SP);
145 0 19 XPUSHs (sv_2mortal (newSViv (value)));
149 19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
0 19 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
0 19 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
19 0 if (SvTRUE (ERRSV))
0 19 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))
0 19 if (SvTRUE (ERRSV))
153 0 0 PUSHMARK (SP);
157 0 0 sv_setpvn (ERRSV, "", 0);
160 19 0 if (saveerr)
161 19 0 sv_setsv (ERRSV, saveerr);
169 0 19 POPSTACK;
184 12 11 for (i = AvFILLp (asyncs); i >= 0; --i)
189 11 1 if (async->pending && !async->blocked)
11 0 if (async->pending && !async->blocked)
197 0 11 if (i > AvFILLp (asyncs))
206 11 0 if (signum == 9)
227 8 0 if (async->pending && !async->blocked)
8 0 if (async->pending && !async->blocked)
249 1 4 if (!async->scope_savestack || async->scope_savestack != PL_savestack)
0 1 if (!async->scope_savestack || async->scope_savestack != PL_savestack)
276 2 5 SV *cv = SvOK (cb) ? SvREFCNT_inc (s_get_cv_croak (cb)) : 0;
2 0 SV *cv = SvOK (cb) ? SvREFCNT_inc (s_get_cv_croak (cb)) : 0;
0 2 SV *cv = SvOK (cb) ? SvREFCNT_inc (s_get_cv_croak (cb)) : 0;
281 0 7 XPUSHs (sv_2mortal (newSViv (PTR2IV (async))));
285 0 7 SvGETMAGIC (fh_r); SvGETMAGIC (fh_w);
0 0 SvGETMAGIC (fh_r); SvGETMAGIC (fh_w);
0 7 SvGETMAGIC (fh_r); SvGETMAGIC (fh_w);
0 0 SvGETMAGIC (fh_r); SvGETMAGIC (fh_w);
286 6 1 if (SvOK (fh_r) || SvOK (fh_w))
6 0 if (SvOK (fh_r) || SvOK (fh_w))
6 0 if (SvOK (fh_r) || SvOK (fh_w))
6 0 if (SvOK (fh_r) || SvOK (fh_w))
6 0 if (SvOK (fh_r) || SvOK (fh_w))
0 6 if (SvOK (fh_r) || SvOK (fh_w))
301 1 6 : NEWSV (0, 0);
304 0 7 SvIOK_only (async->value); /* just to be sure */
313 6 1 async->signum = SvOK (signl) ? s_signum_croak (signl) : 0;
6 0 async->signum = SvOK (signl) ? s_signum_croak (signl) : 0;
0 6 async->signum = SvOK (signl) ? s_signum_croak (signl) : 0;
315 1 6 if (async->signum)
317 0 1 if (async->signum < 0)
318 0 0 croak ("Async::Interrupt::new got passed illegal signal name or number: %s", SvPV_nolen (signl));
333 0 1 EXTEND (SP, 2);
340 0 0 EXTEND (SP, 2);
387 1 3 if (!async->ep.len)
396 0 1 if (res < 0)
408 0 0 if (enable >= 0)
416 0 0 if (async->ep.len)
422 2 0 if (async->ep.len)
430 0 2 if (res < 0)
442 8 0 for (i = AvFILLp (asyncs); i >= 0; --i)
443 7 1 if (AvARRAY (asyncs)[i] == async_sv)
450 0 0 if (!PL_dirty)
455 1 6 if (async->signum)
458 6 1 if (!async->fh_r && async->ep.len)
1 5 if (!async->fh_r && async->ep.len)
479 0 0 if (signum < 0)
481 0 0 else if (ix)
498 0 1 XPUSHs (sv_setref_iv (sv_newmortal (), klass, PTR2IV (epp)));
500 0 1 if (s_epipe_new (epp) < 0)
507 0 0 EXTEND (SP, 2);
540 0 2 EXTEND (SP, 2);
541 1 1 PUSHs (sv_2mortal (newSViv (PTR2IV (ix ? s_epipe_drain : s_epipe_signal))));