+// flags for knownstrings
+#define KNOWNSTRINGFLAG_ENGINE 1
+#define KNOWNSTRINGFLAG_GCMARK 2
+#define KNOWNSTRINGFLAG_GCPRUNE 4 // cleared by GCMARK code, string is freed if prune remains after two sweeps
+
+typedef enum prvm_prog_garbagecollection_state_stage_e
+{
+ PRVM_GC_START = 0,
+ PRVM_GC_GLOBALS_MARK,
+ PRVM_GC_FIELDS_MARK,
+ PRVM_GC_KNOWNSTRINGS_SWEEP,
+ PRVM_GC_RESET,
+}
+prvm_prog_garbagecollection_state_stage_t;
+
+typedef struct prvm_prog_garbagecollection_state_s
+{
+ prvm_prog_garbagecollection_state_stage_t stage;
+ int globals_mark_progress;
+ int fields_mark_progress;
+ int fields_mark_progress_entity;
+ int knownstrings_sweep_progress;
+}
+prvm_prog_garbagecollection_state_t;
+