Lines Matching full:cif
44 if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
51 for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
110 /* Perform machine dependent cif processing */
111 ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
116 cif->bytes = (cif->bytes + 7) & ~7;
119 switch (cif->rtype->type)
124 cif->flags = (unsigned) cif->rtype->type;
129 cif->flags = (unsigned) FFI_TYPE_SINT64;
133 if (cif->rtype->size <= 4)
135 cif->flags = (unsigned)FFI_TYPE_INT;
140 cif->flags = (unsigned)FFI_TYPE_STRUCT;
144 cif->flags = FFI_TYPE_INT;
154 void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
158 int small_struct = (cif->flags == FFI_TYPE_INT
159 && cif->rtype->type == FFI_TYPE_STRUCT);
161 ecif.cif = cif;
170 (cif->flags == FFI_TYPE_STRUCT))
172 ecif.rvalue = alloca(cif->rtype->size);
179 switch (cif->abi)
182 ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
191 memcpy (rvalue, &temp, cif->rtype->size);
197 void** args, ffi_cif* cif);
210 ffi_cif *cif;
213 cif = closure->cif;
214 arg_area = (void**) alloca (cif->nargs * sizeof (void*));
222 ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif);
224 (closure->fun) (cif, *respp, arg_area, closure->user_data);
226 return cif->flags;
232 void **avalue, ffi_cif *cif)
242 if ( cif->flags == FFI_TYPE_STRUCT ) {
249 for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
289 /* the cif must already be prep'ed */
293 ffi_cif* cif,
298 FFI_ASSERT (cif->abi == FFI_SYSV);
304 closure->cif = cif;