aboutsummaryrefslogtreecommitdiffstats
path: root/src/treewalk/gc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/treewalk/gc.h')
-rw-r--r--src/treewalk/gc.h46
1 files changed, 0 insertions, 46 deletions
diff --git a/src/treewalk/gc.h b/src/treewalk/gc.h
deleted file mode 100644
index 9ad1615..0000000
--- a/src/treewalk/gc.h
+++ /dev/null
@@ -1,46 +0,0 @@
1#ifndef BDL_GC_H
2#define BDL_GC_H
3
4#include "objects.h"
5#include "environment.h"
6
7typedef struct FreeList {
8 size_t *offsets;
9 size_t position;
10} FreeList;
11
12typedef struct GC {
13 Object **roots;
14 Environment *envs;
15 Object *objects;
16 FreeList free_objects;
17 FreeList free_envs;
18 Environment **active_envs;
19} GC;
20
21void gc_init(void);
22
23// Allocation functions for objects and environments.
24Object * alloc_object(ObjectType type);
25Environment * alloc_env(void);
26
27// Root and environment protector functions.
28void push_root(Object *obj);
29Object * pop_root(void);
30void push_active_env(Environment *env);
31Environment * pop_active_env(void);
32
33// Mark and sweep algorithm functions.
34void mark_environment(Environment *env);
35void mark_obj(Object *obj);
36void mark_and_sweep(void);
37
38// Debugging function to print out the contentes of some GC fields.
39void dump_gc(void);
40
41#define GC_OBJS_CAP 1024 * 1024
42#define GC_ROOTS_CAP 1024
43#define GC_ACTIVE_ENVS_CAP 2
44#define GC_ENVS_CAP 1024 * 4
45
46#endif // BDL_GC_H