summaryrefslogtreecommitdiff
path: root/libguile/whippet/api/gc-allocation-kind.h
blob: 72de3b6be54326b80f0d433ad03299306f03fadd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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