Branch Coverage

xs/closure.c
Criterion Covered Total %
branch 92 180 51.1


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)
44 90 0 ret = INT2PTR(void*, POPi);
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))
103 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
0 103 if(SvTRUE(ERRSV))
0 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
0 103 if(SvTRUE(ERRSV))
0 0 if(SvTRUE(ERRSV))
0 0 if(SvTRUE(ERRSV))
0 0 if(SvTRUE(ERRSV))
0 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
103 0 if(SvTRUE(ERRSV))
102 1 if(SvTRUE(ERRSV))
102 0 if(SvTRUE(ERRSV))
0 102 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))
1 102 if(SvTRUE(ERRSV))
185 1 0 warn_sv(ERRSV);
191 73 30 if(!(flags & G_DISCARD))
195 0 73 if(count != 1)
210 0 6 *((uint8_t*)result) = SvUV(sv);
219 3 3 *((int8_t*)result) = SvIV(sv);
228 0 6 *((uint16_t*)result) = SvUV(sv);
237 3 3 *((int16_t*)result) = SvIV(sv);
244 0 6 *((uint32_t*)result) = SvUV(sv);
251 6 3 *((int32_t*)result) = SvIV(sv);
255 0 6 *((uint64_t*)result) = SvU64(sv);
258 3 3 *((int64_t*)result) = SvI64(sv);
261 3 3 *((float*)result) = SvNV(sv);
264 3 3 *((double*)result) = SvNV(sv);
267 4 3 *((void**)result) = SvOK(sv) ? INT2PTR(void*, SvIV(sv)) : NULL;
4 0 *((void**)result) = SvOK(sv) ? INT2PTR(void*, SvIV(sv)) : NULL;
0 4 *((void**)result) = SvOK(sv) ? INT2PTR(void*, SvIV(sv)) : NULL;
3 0 *((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))
274 2 0 ptr = SvPV(SvRV(sv), len);
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;