|
infix
A JIT-Powered FFI Library for C
|
Defines the ABI-specific implementation interface for direct marshalling forward trampolines. More...
#include <infix_internals.h>
Public Attributes | |
| infix_status(* | prepare_direct_forward_call_frame )(infix_arena_t *arena, infix_direct_call_frame_layout **out_layout, infix_type *ret_type, infix_type **arg_types, size_t num_args, infix_direct_arg_handler_t *handlers, void *target_fn) |
| Analyzes a function signature to create a complete direct call frame layout. | |
| infix_status(* | generate_direct_forward_prologue )(code_buffer *buf, infix_direct_call_frame_layout *layout) |
| Generates the function prologue (stack setup, saving registers). | |
| infix_status(* | generate_direct_forward_argument_moves )(code_buffer *buf, infix_direct_call_frame_layout *layout) |
| Generates code to call marshallers and move arguments into their native locations. | |
| infix_status(* | generate_direct_forward_call_instruction )(code_buffer *buf, infix_direct_call_frame_layout *layout) |
Generates the call instruction to the target function. | |
| infix_status(* | generate_direct_forward_epilogue )(code_buffer *buf, infix_direct_call_frame_layout *layout, infix_type *ret_type) |
| Generates the function epilogue (handling return value, calling write-back handlers, returning). | |
Defines the ABI-specific implementation interface for direct marshalling forward trampolines.
This v-table defines the contract for generating a high-performance, direct-marshalling trampoline. It is parallel to infix_forward_abi_spec.
| infix_status(* infix_direct_forward_abi_spec::generate_direct_forward_argument_moves) (code_buffer *buf, infix_direct_call_frame_layout *layout) |
Generates code to call marshallers and move arguments into their native locations.
| infix_status(* infix_direct_forward_abi_spec::generate_direct_forward_call_instruction) (code_buffer *buf, infix_direct_call_frame_layout *layout) |
Generates the call instruction to the target function.
| infix_status(* infix_direct_forward_abi_spec::generate_direct_forward_epilogue) (code_buffer *buf, infix_direct_call_frame_layout *layout, infix_type *ret_type) |
Generates the function epilogue (handling return value, calling write-back handlers, returning).
| infix_status(* infix_direct_forward_abi_spec::generate_direct_forward_prologue) (code_buffer *buf, infix_direct_call_frame_layout *layout) |
Generates the function prologue (stack setup, saving registers).
| infix_status(* infix_direct_forward_abi_spec::prepare_direct_forward_call_frame) (infix_arena_t *arena, infix_direct_call_frame_layout **out_layout, infix_type *ret_type, infix_type **arg_types, size_t num_args, infix_direct_arg_handler_t *handlers, void *target_fn) |
Analyzes a function signature to create a complete direct call frame layout.