microlisp 0.1.0
A small Scheme-subset interpreter in modern C.
Loading...
Searching...
No Matches
Functions
gc.c File Reference
#include "microlisp_internal.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for gc.c:

Functions

void * ml_raw_alloc (ml_state *s, size_t size)
 
void ml_raw_free (ml_state *s, void *p)
 
static void maybe_collect (ml_state *s)
 
static void link_object (ml_state *s, mobj *o)
 
microlisp_status ml_gc_alloc_pair (ml_state *s, mvalue car, mvalue cdr, mvalue *out)
 
microlisp_status ml_gc_alloc_string (ml_state *s, const uint8_t *bytes, size_t len, mvalue *out)
 
microlisp_status ml_gc_alloc_closure (ml_state *s, mvalue env, mvalue params, mvalue body, mvalue *out)
 
microlisp_status ml_gc_alloc_primitive (ml_state *s, const char *name, ml_prim_fn fn, uint32_t arity_min, uint32_t arity_max, mvalue *out)
 
microlisp_status ml_gc_alloc_env (ml_state *s, mvalue parent, mvalue *out)
 
microlisp_status ml_gc_protect (ml_state *s, mvalue v)
 
void ml_gc_unprotect (ml_state *s, size_t n)
 
void ml_gc_restore (ml_state *s, size_t saved)
 
static int gc_push_mark (ml_state *s, mobj *o)
 
static int gc_visit (ml_state *s, mvalue v)
 
static int gc_drain_worklist (ml_state *s)
 
static void gc_clear_all_marks (ml_state *s)
 
static void free_obj (ml_state *s, mobj *o)
 
static void sweep (ml_state *s)
 
void ml_gc_collect (ml_state *s)
 
void ml_gc_free_all (ml_state *s)
 

Function Documentation

◆ free_obj()

static void free_obj ( ml_state s,
mobj o 
)
static

◆ gc_clear_all_marks()

static void gc_clear_all_marks ( ml_state s)
static

◆ gc_drain_worklist()

static int gc_drain_worklist ( ml_state s)
static

◆ gc_push_mark()

static int gc_push_mark ( ml_state s,
mobj o 
)
static

◆ gc_visit()

static int gc_visit ( ml_state s,
mvalue  v 
)
static

◆ link_object()

static void link_object ( ml_state s,
mobj o 
)
static

◆ maybe_collect()

static void maybe_collect ( ml_state s)
static

◆ ml_gc_alloc_closure()

microlisp_status ml_gc_alloc_closure ( ml_state s,
mvalue  env,
mvalue  params,
mvalue  body,
mvalue out 
)

◆ ml_gc_alloc_env()

microlisp_status ml_gc_alloc_env ( ml_state s,
mvalue  parent,
mvalue out 
)

◆ ml_gc_alloc_pair()

microlisp_status ml_gc_alloc_pair ( ml_state s,
mvalue  car,
mvalue  cdr,
mvalue out 
)

◆ ml_gc_alloc_primitive()

microlisp_status ml_gc_alloc_primitive ( ml_state s,
const char *  name,
ml_prim_fn  fn,
uint32_t  arity_min,
uint32_t  arity_max,
mvalue out 
)

◆ ml_gc_alloc_string()

microlisp_status ml_gc_alloc_string ( ml_state s,
const uint8_t *  bytes,
size_t  len,
mvalue out 
)

◆ ml_gc_collect()

void ml_gc_collect ( ml_state s)

◆ ml_gc_free_all()

void ml_gc_free_all ( ml_state s)

◆ ml_gc_protect()

microlisp_status ml_gc_protect ( ml_state s,
mvalue  v 
)

◆ ml_gc_restore()

void ml_gc_restore ( ml_state s,
size_t  saved 
)

◆ ml_gc_unprotect()

void ml_gc_unprotect ( ml_state s,
size_t  n 
)

◆ ml_raw_alloc()

void * ml_raw_alloc ( ml_state s,
size_t  size 
)

◆ ml_raw_free()

void ml_raw_free ( ml_state s,
void *  p 
)

◆ sweep()

static void sweep ( ml_state s)
static