summaryrefslogtreecommitdiff
path: root/libguile/whippet/api/gc-allocation-kind.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/whippet/api/gc-allocation-kind.h')
-rw-r--r--libguile/whippet/api/gc-allocation-kind.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/libguile/whippet/api/gc-allocation-kind.h b/libguile/whippet/api/gc-allocation-kind.h
new file mode 100644
index 000000000..72de3b6be
--- /dev/null
+++ b/libguile/whippet/api/gc-allocation-kind.h
@@ -0,0 +1,19 @@
+#ifndef GC_ALLOCATION_KIND_H
+#define GC_ALLOCATION_KIND_H
+
+enum gc_allocation_kind {
+ // An object whose type can be inspected at run-time based on its contents,
+ // and whose fields be traced via the gc_trace_object procedure.
+ GC_ALLOCATION_TAGGED,
+ // Like GC_ALLOCATION_TAGGED, but not containing any fields that reference
+ // GC-managed objects. The GC may choose to handle these specially.
+ GC_ALLOCATION_TAGGED_POINTERLESS,
+ // A raw allocation whose type cannot be inspected at trace-time, and whose
+ // fields should be traced conservatively.
+ GC_ALLOCATION_UNTAGGED_CONSERVATIVE,
+ // A raw allocation whose type cannot be inspected at trace-time, but
+ // containing no fields that reference GC-managed objects.
+ GC_ALLOCATION_UNTAGGED_POINTERLESS
+};
+
+#endif // GC_ALLOCATION_KIND_H