summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLandon Fuller <landonf@bikemonkey.org>2011-02-12 11:14:54 -0500
committerLandon Fuller <landonf@bikemonkey.org>2011-02-12 11:14:54 -0500
commit56b3f8cef0f28cefaa0f40fe0cf7c524adef131d (patch)
treebebc95d014c8b6530116510e05bf9f7551b40972
parent28a00f61ff3f64c4eb2269ce2aea3d493274469e (diff)
downloadlibffi-56b3f8cef0f28cefaa0f40fe0cf7c524adef131d.tar.gz
Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer.
This re-integrates commit da2773e02ab26cc11a7f.
-rw-r--r--include/ffi.h.in15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/ffi.h.in b/include/ffi.h.in
index 96b8fd3..747dd17 100644
--- a/include/ffi.h.in
+++ b/include/ffi.h.in
@@ -270,7 +270,12 @@ size_t ffi_java_raw_size (ffi_cif *cif);
__declspec(align(8))
#endif
typedef struct {
+#if @FFI_EXEC_TRAMPOLINE_TABLE@
+ void *trampoline_table;
+ void *trampoline_table_entry;
+#else
char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
ffi_cif *cif;
void (*fun)(ffi_cif*,void*,void**,void*);
void *user_data;
@@ -303,7 +308,12 @@ ffi_prep_closure_loc (ffi_closure*,
# pragma pack 8
#endif
typedef struct {
+#if @FFI_EXEC_TRAMPOLINE_TABLE@
+ void *trampoline_table;
+ void *trampoline_table_entry;
+#else
char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
ffi_cif *cif;
@@ -324,7 +334,12 @@ typedef struct {
} ffi_raw_closure;
typedef struct {
+#if @FFI_EXEC_TRAMPOLINE_TABLE@
+ void *trampoline_table;
+ void *trampoline_table_entry;
+#else
char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
ffi_cif *cif;