Home | History | Annotate | Download | only in x86

Lines Matching defs:cif

273 /* Perform machine dependent cif processing.  */
276 ffi_prep_cif_machdep (ffi_cif *cif)
284 flags = cif->rtype->type;
287 n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
308 flags |= cif->rtype->size << 12;
315 for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++)
317 if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0
321 long align = cif->arg_types[i]->alignment;
327 bytes += cif->arg_types[i]->size;
337 cif->flags = flags;
338 cif->bytes = bytes;
344 ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
354 FFI_ASSERT (cif->abi == FFI_UNIX64);
359 ret_in_memory = (cif->rtype->type == FFI_TYPE_STRUCT
360 && (cif->flags & 0xff) == FFI_TYPE_VOID);
362 rvalue = alloca (cif->rtype->size);
365 stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8);
376 avn = cif->nargs;
377 arg_types = cif->arg_types;
430 ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args),
431 cif->flags, rvalue, fn, ssecount);
439 ffi_cif* cif,
455 tramp[10] = cif->flags & (1 << 11) ? 0x49f9 : 0x49f8;
459 closure->cif = cif;
470 ffi_cif *cif;
477 cif = closure->cif;
478 avalue = alloca(cif->nargs * sizeof(void *));
481 ret = cif->rtype->type;
485 int n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
506 avn = cif->nargs;
507 arg_types = cif->arg_types;
566 closure->fun (cif, rvalue, avalue, closure->user_data);