Branch Coverage

xs/closure.c
Criterion Covered Total %
branch 57 88 64.7


line true false branch
15 0 89 PUSHMARK(SP);
16 0 89 XPUSHs(closure);
17 0 89 XPUSHs(sv_2mortal(newSViv(PTR2IV(closure_data))));
18 0 89 XPUSHs(sv_2mortal(newSViv(PTR2IV(closure_data->type))));
21 89 0 FREETMPS;
34 0 90 PUSHMARK(SP);
35 0 90 XPUSHs(closure);
36 0 90 XPUSHs(sv_2mortal(newSViv(PTR2IV(type))));
41 0 90 if (count != 1)
47 90 0 FREETMPS;
65 98 5 if(!(flags & G_NOARGS))
71 0 103 PUSHMARK(SP);
73 98 5 if(!(flags & G_NOARGS))
75 107 98 for(i=0; i< ffi_cif->nargs; i++)
84 0 6 XPUSHs(sv);
89 0 6 XPUSHs(sv);
94 0 10 XPUSHs(sv);
99 0 7 XPUSHs(sv);
104 0 6 XPUSHs(sv);
109 0 6 XPUSHs(sv);
114 0 6 XPUSHs(sv);
119 0 7 XPUSHs(sv);
124 0 6 XPUSHs(sv);
129 0 7 XPUSHs(sv);
133 3 4 if( *((void**)arguments[i]) != NULL)
135 0 7 XPUSHs(sv);
139 24 3 if( *((char**)arguments[i]) != NULL)
143 0 27 XPUSHs(sv);
147 4 1 if( *((char**)arguments[i]) != NULL)
150 1 3 if(extra->argument_types[i]->extra[0].record.class != NULL)
162 0 5 XPUSHs(sv);
170 0 1 XPUSHs(ref);
182 103 0 if(SvTRUE(ERRSV))
1 102 if(SvTRUE(ERRSV))
185 1 0 warn_sv(ERRSV);
191 73 30 if(!(flags & G_DISCARD))
195 0 73 if(count != 1)
267 3 4 *((void**)result) = SvOK(sv) ? INT2PTR(void*, SvIV(sv)) : NULL;
270 2 1 if(sv_isobject(sv) && sv_derived_from(sv, extra->return_type->extra[0].record.class))
2 0 if(sv_isobject(sv) && sv_derived_from(sv, extra->return_type->extra[0].record.class))
275 0 2 if(len > extra->return_type->extra[0].record.size)
277 1 1 else if(len < extra->return_type->extra[0].record.size)
296 98 5 if(!(flags & G_NOARGS))
298 98 0 FREETMPS;