infix
A JIT-Powered FFI Library for C
Loading...
Searching...
No Matches
infix_direct_forward_abi_spec Struct Reference

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).

 

Detailed Description

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.

Member Data Documentation

◆ generate_direct_forward_argument_moves

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.

◆ generate_direct_forward_call_instruction

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.

◆ generate_direct_forward_epilogue

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).

◆ generate_direct_forward_prologue

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).

◆ prepare_direct_forward_call_frame

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.


The documentation for this struct was generated from the following file: