Add entry points for interacting with Go
A "ffi_go_closure" is intended to be compatible with the function descriptors used by Go, and ffi_call_go sets up the static chain parameter for calling a Go function. The entry points are disabled when a backend has not been updated, much like we do for "normal" closures.
This commit is contained in:
@@ -428,6 +428,22 @@ ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
|
|||||||
|
|
||||||
#endif /* FFI_CLOSURES */
|
#endif /* FFI_CLOSURES */
|
||||||
|
|
||||||
|
#if FFI_GO_CLOSURES
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
void *tramp;
|
||||||
|
ffi_cif *cif;
|
||||||
|
void (*fun)(ffi_cif*,void*,void**,void*);
|
||||||
|
} ffi_go_closure;
|
||||||
|
|
||||||
|
ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *,
|
||||||
|
void (*fun)(ffi_cif*,void*,void**,void*));
|
||||||
|
|
||||||
|
void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
|
||||||
|
void **avalue, void *closure);
|
||||||
|
|
||||||
|
#endif /* FFI_GO_CLOSURES */
|
||||||
|
|
||||||
/* ---- Public interface definition -------------------------------------- */
|
/* ---- Public interface definition -------------------------------------- */
|
||||||
|
|
||||||
ffi_status ffi_prep_cif(ffi_cif *cif,
|
ffi_status ffi_prep_cif(ffi_cif *cif,
|
||||||
|
|||||||
Reference in New Issue
Block a user