Ruby
2.4.2p198(2017-09-14revision59899)
|
Go to the source code of this file.
Data Structures | |
struct | aix_fd_struct |
union | ffi_dblfl |
Macros | |
#define | MIN_LINE_SIZE 32 |
Typedefs | |
typedef struct aix_fd_struct | aix_fd |
Enumerations | |
enum | { FLAG_RETURNS_128BITS = 1 << (31-31), FLAG_RETURNS_NOTHING = 1 << (31-30), FLAG_RETURNS_FP = 1 << (31-29), FLAG_RETURNS_64BITS = 1 << (31-28), FLAG_RETURNS_STRUCT = 1 << (31-27), FLAG_ARG_NEEDS_COPY = 1 << (31- 7), FLAG_FP_ARGUMENTS = 1 << (31- 6), FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), FLAG_RETVAL_REFERENCE = 1 << (31- 4) } |
enum | { NUM_GPR_ARG_REGISTERS = 8, NUM_FPR_ARG_REGISTERS = 13, LINKAGE_AREA_GPRS = 6 } |
enum | { ASM_NEEDS_REGISTERS = 4 } |
Functions | |
void | ffi_closure_ASM (void) |
void | ffi_prep_args (extended_cif *ecif, unsigned long *const stack) |
static void | darwin_adjust_aggregate_sizes (ffi_type *s) |
static void | aix_adjust_aggregate_sizes (ffi_type *s) |
ffi_status | ffi_prep_cif_machdep (ffi_cif *cif) |
void | ffi_call_AIX (extended_cif *, long, unsigned, unsigned *, void(*fn)(void), void(*fn2)(void)) |
void | ffi_call_DARWIN (extended_cif *, long, unsigned, unsigned *, void(*fn)(void), void(*fn2)(void), ffi_type *) |
void | ffi_call (ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) |
static void | flush_icache (char *) |
static void | flush_range (char *, int) |
ffi_status | ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc) |
ffi_type * | ffi_closure_helper_DARWIN (ffi_closure *, void *, unsigned long *, ffi_dblfl *) |
#define MIN_LINE_SIZE 32 |
Referenced by flush_range().
typedef struct aix_fd_struct aix_fd |
anonymous enum |
Enumerator | |
---|---|
FLAG_RETURNS_128BITS | |
FLAG_RETURNS_NOTHING | |
FLAG_RETURNS_FP | |
FLAG_RETURNS_64BITS | |
FLAG_RETURNS_STRUCT | |
FLAG_ARG_NEEDS_COPY | |
FLAG_FP_ARGUMENTS | |
FLAG_4_GPR_ARGUMENTS | |
FLAG_RETVAL_REFERENCE |
Definition at line 37 of file ffi_darwin.c.
anonymous enum |
Enumerator | |
---|---|
NUM_GPR_ARG_REGISTERS | |
NUM_FPR_ARG_REGISTERS | |
LINKAGE_AREA_GPRS |
Definition at line 57 of file ffi_darwin.c.
anonymous enum |
Enumerator | |
---|---|
ASM_NEEDS_REGISTERS |
Definition at line 63 of file ffi_darwin.c.
|
static |
Definition at line 625 of file ffi_darwin.c.
Referenced by ffi_prep_cif_machdep().
|
static |
Definition at line 576 of file ffi_darwin.c.
Referenced by ffi_prep_cif_machdep().
void ffi_call | ( | ffi_cif * | cif, |
void(*)(void) | fn, | ||
void * | rvalue, | ||
void ** | avalue | ||
) |
Definition at line 915 of file ffi_darwin.c.
References alloca(), extended_cif::avalue, extended_cif::cif, FFI_ASSERT, ffi_call_AIX(), ffi_call_DARWIN(), ffi_prep_args(), flush_icache(), flush_range(), NULL, and extended_cif::rvalue.
void ffi_call_AIX | ( | extended_cif * | , |
long | , | ||
unsigned | , | ||
unsigned * | , | ||
void(*)(void) | fn, | ||
void(*)(void) | fn2 | ||
) |
Referenced by ffi_call(), and ffi_prep_cif_machdep().
void ffi_call_DARWIN | ( | extended_cif * | , |
long | , | ||
unsigned | , | ||
unsigned * | , | ||
void(*)(void) | fn, | ||
void(*)(void) | fn2, | ||
ffi_type * | |||
) |
Referenced by ffi_call(), and ffi_prep_cif_machdep().
void ffi_closure_ASM | ( | void | ) |
Referenced by ffi_prep_closure_loc().
ffi_type * ffi_closure_helper_DARWIN | ( | ffi_closure * | closure, |
void * | rvalue, | ||
unsigned long * | pgr, | ||
ffi_dblfl * | pfr | ||
) |
Definition at line 1119 of file ffi_darwin.c.
References ALIGN, alloca(), ffi_dblfl::d, ffi_dblfl::f, FFI_ASSERT, FFI_TYPE_LONGDOUBLE, memcpy, and NUM_FPR_ARG_REGISTERS.
void ffi_prep_args | ( | extended_cif * | ecif, |
unsigned long *const | stack | ||
) |
Definition at line 106 of file ffi_darwin.c.
References ALIGN, ASM_NEEDS_REGISTERS, extended_cif::avalue, extended_cif::cif, FFI_ASSERT, FFI_TYPE_LONGDOUBLE, FLAG_FP_ARGUMENTS, FLAG_RETVAL_REFERENCE, LINKAGE_AREA_GPRS, memcpy, NULL, NUM_FPR_ARG_REGISTERS, extended_cif::rvalue, and size.
Referenced by ffi_call().
ffi_status ffi_prep_cif_machdep | ( | ffi_cif * | cif | ) |
Definition at line 658 of file ffi_darwin.c.
References aix_adjust_aggregate_sizes(), ALIGN, ASM_NEEDS_REGISTERS, darwin_adjust_aggregate_sizes(), ffi_call_AIX(), ffi_call_DARWIN(), FFI_TYPE_LONGDOUBLE, FLAG_FP_ARGUMENTS, FLAG_RETURNS_128BITS, FLAG_RETURNS_64BITS, FLAG_RETURNS_FP, FLAG_RETURNS_NOTHING, FLAG_RETURNS_STRUCT, FLAG_RETVAL_REFERENCE, LINKAGE_AREA_GPRS, NUM_FPR_ARG_REGISTERS, and NUM_GPR_ARG_REGISTERS.
ffi_status ffi_prep_closure_loc | ( | ffi_closure * | closure, |
ffi_cif * | cif, | ||
void(*)(ffi_cif *, void *, void **, void *) | fun, | ||
void * | user_data, | ||
void * | codeloc | ||
) |
Definition at line 1004 of file ffi_darwin.c.
References aix_fd_struct::code_pointer, FFI_ASSERT, ffi_closure_ASM(), FFI_TRAMPOLINE_SIZE, flush_range(), and aix_fd_struct::toc.
|
static |
Definition at line 1078 of file ffi_darwin.c.
References __asm__.
Referenced by ffi_call(), and flush_range().
|
static |
Definition at line 1092 of file ffi_darwin.c.
References flush_icache(), MIN_LINE_SIZE, and size.
Referenced by ffi_call(), and ffi_prep_closure_loc().