uint8_t ssm_depth_t
Index of least significant bit in a group of priorities.
uint32_t ssm_priority_t
Thread priority.
#define ssm_closure_activate(closure, parent, prio, depth, ret)
Spawn and schedule a new child process from a fully-applied closure.
#define ssm_closure_pop(closure)
Remove an argument from a closure.
void ssm_closure_apply(ssm_value_t closure, ssm_value_t arg, ssm_act_t *parent, ssm_priority_t prio, ssm_depth_t depth, ssm_value_t *ret)
Apply an argument to a closure.
#define ssm_closure_arg_count(v)
Obtain the number of argument values owned by a closure.
#define ssm_closure_push(closure, arg)
Add an argument to a closure.
#define ssm_closure_arg(v, i)
Obtain the ith argument of a closure.
ssm_value_t ssm_closure_clone(ssm_value_t closure)
Create a copy of a closure.
void ssm_closure_apply_final(ssm_value_t closure, ssm_value_t arg, ssm_act_t *parent, ssm_priority_t prio, ssm_depth_t depth, ssm_value_t *ret)
Apply an argument to a closure that is used for the last time.
#define ssm_closure_arg_cap(v)
Obtain the number of argument values accommodated by a closure.
#define ssm_closure_argv(v)
Retrieve the argument array of a closure.
#define ssm_new_closure(f, args)
#define ssm_closure_free(closure)
Helper to free a closure (without reference counting).
#define ssm_closure_func(v)
Obtain the enter function pointer of a closure.
#define SSM_ASSERT(cond)
Throw an internal error.
#define ssm_dup(v)
Duplicate a possible heap reference, incrementing its ref count.
#define ssm_is_shared(v)
Whether a value is shared, i.e., unsafe to modify.
void ssm_dups(size_t cnt, ssm_value_t *arr)
Call ssm_dup() on an array of values.
The internal interface of the SSM runtime.
Interface to the SSM runtime.
Activation record for an SSM routine.
SSM values are either "packed" values or heap-allocated.