| line |
true |
false |
branch |
|
37
|
0 |
1208 |
ffi_abi = abi == -1 ? FFI_DEFAULT_ABI : abi; |
|
39
|
1522 |
1207 |
for(i=0,extra_arguments=0; i<(items-6); i++) |
|
43
|
1522 |
0 |
if(!(sv_isobject(arg) && sv_derived_from(arg, "FFI::Platypus::Type"))) |
|
|
0 |
1522 |
if(!(sv_isobject(arg) && sv_derived_from(arg, "FFI::Platypus::Type"))) |
|
48
|
1 |
1521 |
if(arg_type->type_code == FFI_PL_TYPE_VOID) |
|
50
|
121 |
1400 |
if((arg_type->type_code & FFI_PL_SHAPE_MASK) == FFI_PL_SHAPE_CUSTOM_PERL) |
|
70
|
1520 |
1207 |
for(i=0,n=0; i<(items-6); i++,n++) |
|
76
|
121 |
1399 |
if((self->argument_types[n]->type_code & FFI_PL_SHAPE_MASK) == FFI_PL_SHAPE_CUSTOM_PERL |
|
77
|
4 |
117 |
&& self->argument_types[n]->extra[0].custom_perl.argument_count > 0) |
|
79
|
4 |
4 |
for(j=1; j-1 < self->argument_types[n]->extra[0].custom_perl.argument_count; j++) |
|
90
|
31 |
1489 |
(self->argument_types[n]->type_code & (FFI_PL_BASE_MASK|FFI_PL_SIZE_MASK)) == FFI_PL_TYPE_LONG_DOUBLE && |
|
91
|
20 |
11 |
((self->argument_types[n]->type_code & FFI_PL_SHAPE_MASK) == FFI_PL_SHAPE_POINTER || |
|
92
|
7 |
13 |
(self->argument_types[n]->type_code & FFI_PL_SHAPE_MASK) == FFI_PL_SHAPE_ARRAY) |
|
100
|
2 |
16 |
if(!MY_CXT.loaded_math_longdouble) |
|
103
|
2 |
0 |
if(SvTRUE(ERRSV)) |
|
|
2 |
0 |
if(SvTRUE(ERRSV)) |
|
116
|
13 |
1194 |
(return_type->type_code & (FFI_PL_BASE_MASK|FFI_PL_SIZE_MASK)) == FFI_PL_TYPE_LONG_DOUBLE |
|
124
|
1 |
12 |
if(!MY_CXT.loaded_math_longdouble) |
|
127
|
1 |
0 |
if(SvTRUE(ERRSV)) |
|
|
1 |
0 |
if(SvTRUE(ERRSV)) |
|
138
|
1177 |
30 |
if(var_fixed_args == -1) |
|
162
|
0 |
1207 |
if(ffi_status != FFI_OK) |
|
166
|
0 |
0 |
if(ffi_status == FFI_BAD_TYPEDEF) |
|
168
|
0 |
0 |
else if(ffi_status == FFI_BAD_ABI) |
|
206
|
859 |
0 |
if(!(sv_isobject(self) && sv_derived_from(self, "FFI::Platypus::Function"))) |
|
|
0 |
859 |
if(!(sv_isobject(self) && sv_derived_from(self, "FFI::Platypus::Function"))) |
|
210
|
858 |
1 |
is_ret_rv = (f->return_type->type_code == FFI_PL_TYPE_RECORD_VALUE) || |
|
211
|
0 |
858 |
(f->return_type->type_code == (FFI_PL_TYPE_RECORD_VALUE | FFI_PL_SHAPE_CUSTOM_PERL)); |
|
213
|
0 |
859 |
if(path_name == NULL) |
|
216
|
743 |
116 |
if(proto == NULL) |
|
217
|
1 |
742 |
cv = newXS(perl_name, is_ret_rv ? ffi_pl_sub_call_rv : ffi_pl_sub_call, path_name); |
|
226
|
0 |
116 |
cv = newXSproto(perl_name, is_ret_rv ? ffi_pl_sub_call_rv : ffi_pl_sub_call, path_name, proto); |
|
252
|
23 |
1 |
is_ret_rv = (f->return_type->type_code == FFI_PL_TYPE_RECORD_VALUE) || |
|
253
|
0 |
23 |
(f->return_type->type_code == (FFI_PL_TYPE_RECORD_VALUE | FFI_PL_SHAPE_CUSTOM_PERL)); |
|
255
|
1 |
23 |
cv = newXS(NULL, is_ret_rv ? ffi_pl_sub_call_rv : ffi_pl_sub_call, path_name); |
|
273
|
324 |
883 |
if(!PL_dirty) |
|
289
|
0 |
4 |
SvGETMAGIC(code); |
|
|
0 |
0 |
SvGETMAGIC(code); |