5 struct generation_statistics {
13 struct gc_statistics {
14 generation_statistics generations[gen_count];
18 u64 code_blocks_scanned;
22 /* The data heap we're collecting */
25 /* sometimes we grow the heap */
26 bool growing_data_heap;
28 /* Which generation is being collected */
31 /* If true, we are collecting aging space for the second time, so if it is still
32 full, we go on to collect tenured */
33 bool collecting_aging_again;
35 /* GC start time, for benchmarking */
40 explicit gc_state(data_heap *data_, bool growing_data_heap_, cell collecting_gen_);
43 inline bool collecting_nursery_p()
45 return collecting_gen == nursery_gen;
48 inline bool collecting_aging_p()
50 return collecting_gen == aging_gen;
53 inline bool collecting_tenured_p()
55 return collecting_gen == tenured_gen;
58 inline bool collecting_accumulation_gen_p()
60 return ((collecting_aging_p() && !collecting_aging_again)
61 || collecting_tenured_p());
65 VM_C_API void inline_gc(cell *gc_roots_base, cell gc_roots_size, factor_vm *myvm);