ffi_call_int (cif, fn, rvalue, avalue, NULL);
}
+#ifdef FFI_GO_CLOSURES
void
ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
void **avalue, void *closure)
{
ffi_call_int (cif, fn, rvalue, avalue, closure);
}
+#endif
static void *
ffi_prep_incoming_args_SYSV (ffi_cif *cif, void *rvalue,
void ffi_closure_SYSV (void) FFI_HIDDEN;
void ffi_closure_VFP (void) FFI_HIDDEN;
+
+#ifdef FFI_GO_CLOSURES
void ffi_go_closure_SYSV (void) FFI_HIDDEN;
void ffi_go_closure_VFP (void) FFI_HIDDEN;
+#endif
/* the cif must already be prep'ed */
return FFI_OK;
}
+#ifdef FFI_GO_CLOSURES
ffi_status
ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif,
void (*fun) (ffi_cif *, void *, void **, void *))
return FFI_OK;
}
+#endif
/* Below are routines for VFP hard-float support. */
ffi_call_int (cif, fn, rvalue, avalue, NULL);
}
+#ifdef FFI_GO_CLOSURES
void
ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
void **avalue, void *closure)
{
ffi_call_int (cif, fn, rvalue, avalue, closure);
}
+#endif
/** private members **/
return FFI_OK;
}
+#ifdef FFI_GO_CLOSURES
+
void FFI_HIDDEN ffi_go_closure_EAX(void);
void FFI_HIDDEN ffi_go_closure_ECX(void);
void FFI_HIDDEN ffi_go_closure_STDCALL(void);
return FFI_OK;
}
+#endif /* FFI_GO_CLOSURES */
+
/* ------- Native raw API support -------------------------------- */
#if !FFI_NO_RAW_API
ffi_call_int (cif, fn, rvalue, avalue, NULL);
}
+#ifdef FFI_GO_CLOSURES
+
#ifndef __ILP32__
extern void
ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue,
ffi_call_int (cif, fn, rvalue, avalue, closure);
}
+#endif /* FFI_GO_CLOSURES */
extern void ffi_closure_unix64(void) FFI_HIDDEN;
extern void ffi_closure_unix64_sse(void) FFI_HIDDEN;
return flags;
}
+#ifdef FFI_GO_CLOSURES
+
extern void ffi_go_closure_unix64(void) FFI_HIDDEN;
extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN;
return FFI_OK;
}
+#endif /* FFI_GO_CLOSURES */
+
#endif /* __x86_64__ */
extern void ffi_closure_win64(void) FFI_HIDDEN;
+
+#ifdef FFI_GO_CLOSURES
extern void ffi_go_closure_win64(void) FFI_HIDDEN;
+#endif
ffi_status
EFI64(ffi_prep_closure_loc)(ffi_closure* closure,
return FFI_OK;
}
+#ifdef FFI_GO_CLOSURES
ffi_status
EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif,
void (*fun)(ffi_cif*, void*, void**, void*))
return FFI_OK;
}
+#endif
struct win64_closure_frame
{