Lines Matching refs:cif
49 if (ecif->cif->flags == FFI_TYPE_STRUCT) in ffi_prep_args()
57 for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; in ffi_prep_args()
122 if (argp - stack > (long)ecif->cif->bytes) in ffi_prep_args()
130 ffi_status ffi_prep_cif_machdep(ffi_cif *cif) in ffi_prep_cif_machdep() argument
133 switch (cif->rtype->type) in ffi_prep_cif_machdep()
140 cif->flags = (unsigned) cif->rtype->type; in ffi_prep_cif_machdep()
147 if (cif->rtype->size <= 4) in ffi_prep_cif_machdep()
148 cif->flags = FFI_TYPE_INT; in ffi_prep_cif_machdep()
149 else if (cif->rtype->size <= 8) in ffi_prep_cif_machdep()
150 cif->flags = FFI_TYPE_SINT64; in ffi_prep_cif_machdep()
152 cif->flags = FFI_TYPE_STRUCT; in ffi_prep_cif_machdep()
159 cif->flags = FFI_TYPE_SINT64; in ffi_prep_cif_machdep()
163 cif->flags = FFI_TYPE_INT; in ffi_prep_cif_machdep()
189 ffi_call(/*@dependent@*/ ffi_cif *cif, in ffi_call() argument
196 ecif.cif = cif; in ffi_call()
203 (cif->flags == FFI_TYPE_STRUCT)) in ffi_call()
206 ecif.rvalue = alloca(cif->rtype->size); in ffi_call()
213 switch (cif->abi) in ffi_call()
218 return ffi_call_x86(ffi_prep_args, &ecif, cif->bytes, in ffi_call()
219 cif->flags, ecif.rvalue, fn); in ffi_call()
224 return ffi_call_AMD64(ffi_prep_args, &ecif, cif->bytes, in ffi_call()
225 cif->flags, ecif.rvalue, fn); in ffi_call()
241 void** args, ffi_cif* cif);
255 ffi_cif *cif; in ffi_closure_SYSV() local
261 cif = closure->cif; in ffi_closure_SYSV()
262 arg_area = (void**) alloca (cif->nargs * sizeof (void*)); in ffi_closure_SYSV()
270 ffi_prep_incoming_args_SYSV(args, (void**)&resp, arg_area, cif); in ffi_closure_SYSV()
272 (closure->fun) (cif, resp, arg_area, closure->user_data); in ffi_closure_SYSV()
274 rtype = cif->flags; in ffi_closure_SYSV()
350 void **avalue, ffi_cif *cif) in ffi_prep_incoming_args_SYSV() argument
360 if ( cif->flags == FFI_TYPE_STRUCT ) { in ffi_prep_incoming_args_SYSV()
367 for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) in ffi_prep_incoming_args_SYSV()
404 ffi_cif* cif, in ffi_prep_closure_loc() argument
414 FFI_ASSERT (cif->abi == FFI_SYSV); in ffi_prep_closure_loc()
416 if (cif->abi == FFI_SYSV) in ffi_prep_closure_loc()
419 else if (cif->abi == FFI_STDCALL) in ffi_prep_closure_loc()
420 bytes = cif->bytes; in ffi_prep_closure_loc()
433 if (cif->nargs >= 1 && in ffi_prep_closure_loc()
434 (cif->arg_types[0]->type == FFI_TYPE_FLOAT in ffi_prep_closure_loc()
435 || cif->arg_types[0]->type == FFI_TYPE_DOUBLE)) in ffi_prep_closure_loc()
437 if (cif->nargs >= 2 && in ffi_prep_closure_loc()
438 (cif->arg_types[1]->type == FFI_TYPE_FLOAT in ffi_prep_closure_loc()
439 || cif->arg_types[1]->type == FFI_TYPE_DOUBLE)) in ffi_prep_closure_loc()
441 if (cif->nargs >= 3 && in ffi_prep_closure_loc()
442 (cif->arg_types[2]->type == FFI_TYPE_FLOAT in ffi_prep_closure_loc()
443 || cif->arg_types[2]->type == FFI_TYPE_DOUBLE)) in ffi_prep_closure_loc()
445 if (cif->nargs >= 4 && in ffi_prep_closure_loc()
446 (cif->arg_types[3]->type == FFI_TYPE_FLOAT in ffi_prep_closure_loc()
447 || cif->arg_types[3]->type == FFI_TYPE_DOUBLE)) in ffi_prep_closure_loc()
482 closure->cif = cif; in ffi_prep_closure_loc()