38 return fnptr(ctx, argv, argc);
43 return f(ctx, argv, argc);
srn_value_t * srn_call_cprimitive(srn_context_t *ctx, srn_cprim_fn_t f, srn_value_t *argv, uint32_t argc)
srn_value_t * srn_call1(srn_context_t *ctx, srn_value_t *fun, srn_value_t *a0)
srn_value_t * srn_apply_c(srn_context_t *ctx, srn_value_t *fn, srn_value_t *argv, uint32_t argc)
Call Serene (lisp level) functions via C.
srn_value_t * srn_call2(srn_context_t *ctx, srn_value_t *fun, srn_value_t *a0, srn_value_t *a1)
srn_value_t * srn_call0(srn_context_t *ctx, srn_value_t *fun)
srn_value_t *(* srn_cprim_fn_t)(srn_context_t *, srn_value_t *, uint32_t)
Call a C-ABI primitive from Serene (argv shape is uniform):
#define IS_A(value_ref, field)
srn_value_t *(* srn_fnptr_t)(srn_context_t *ctx, srn_value_t *argv, uint32_t argc)
#define AS_CLOSURE(value_ref)
srn_fnptr_t fn
Entry point on the closure, duh!
#define PANIC_WITH_CTX(ctx, msg)