diff options
Diffstat (limited to 'src/bootstrap/gc.h')
-rw-r--r-- | src/bootstrap/gc.h | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/bootstrap/gc.h b/src/bootstrap/gc.h deleted file mode 100644 index 9ad1615..0000000 --- a/src/bootstrap/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 | |||
7 | typedef struct FreeList { | ||
8 | size_t *offsets; | ||
9 | size_t position; | ||
10 | } FreeList; | ||
11 | |||
12 | typedef 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 | |||
21 | void gc_init(void); | ||
22 | |||
23 | // Allocation functions for objects and environments. | ||
24 | Object * alloc_object(ObjectType type); | ||
25 | Environment * alloc_env(void); | ||
26 | |||
27 | // Root and environment protector functions. | ||
28 | void push_root(Object *obj); | ||
29 | Object * pop_root(void); | ||
30 | void push_active_env(Environment *env); | ||
31 | Environment * pop_active_env(void); | ||
32 | |||
33 | // Mark and sweep algorithm functions. | ||
34 | void mark_environment(Environment *env); | ||
35 | void mark_obj(Object *obj); | ||
36 | void mark_and_sweep(void); | ||
37 | |||
38 | // Debugging function to print out the contentes of some GC fields. | ||
39 | void 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 | ||