moved global state from data_gc into vm

db4
Phil Dawes 2009-08-17 21:37:12 +01:00
parent 80716a1b6e
commit 3025cef1c6
3 changed files with 30 additions and 40 deletions

View File

@ -3,36 +3,6 @@
namespace factor
{
/* used during garbage collection only */
zone *newspace;
bool performing_gc;
bool performing_compaction;
cell collecting_gen;
/* if true, we are collecting aging space for the second time, so if it is still
full, we go on to collect tenured */
bool collecting_aging_again;
/* in case a generation fills up in the middle of a gc, we jump back
up to try collecting the next generation. */
jmp_buf gc_jmp;
gc_stats stats[max_gen_count];
u64 cards_scanned;
u64 decks_scanned;
u64 card_scan_time;
cell code_heap_scans;
/* What generation was being collected when copy_code_heap_roots() was last
called? Until the next call to add_code_block(), future
collections of younger generations don't have to touch the code
heap. */
cell last_code_heap_scan;
/* sometimes we grow the heap */
bool growing_data_heap;
data_heap *old_data_heap;
void factorvm::init_data_gc()
{
performing_gc = false;

View File

@ -10,14 +10,6 @@ struct gc_stats {
u64 bytes_copied;
};
extern zone *newspace;
extern bool performing_compaction;
extern cell collecting_gen;
extern bool collecting_aging_again;
extern cell last_code_heap_scan;
void init_data_gc();
void gc();
@ -41,8 +33,6 @@ void clear_gc_stats();
PRIMITIVE(clear_gc_stats);
PRIMITIVE(become);
extern bool growing_data_heap;
VM_ASM_API void inline_gc(cell *gc_roots_base, cell gc_roots_size);

View File

@ -170,6 +170,36 @@ struct factorvm {
//data_gc
/* used during garbage collection only */
zone *newspace;
bool performing_gc;
bool performing_compaction;
cell collecting_gen;
/* if true, we collecting aging space for the second time, so if it is still
full, we go on to collect tenured */
bool collecting_aging_again;
/* in case a generation fills up in the middle of a gc, we jump back
up to try collecting the next generation. */
jmp_buf gc_jmp;
gc_stats stats[max_gen_count];
u64 cards_scanned;
u64 decks_scanned;
u64 card_scan_time;
cell code_heap_scans;
/* What generation was being collected when copy_code_heap_roots() was last
called? Until the next call to add_code_block(), future
collections of younger generations don't have to touch the code
heap. */
cell last_code_heap_scan;
/* sometimes we grow the heap */
bool growing_data_heap;
data_heap *old_data_heap;
void init_data_gc();
object *copy_untagged_object_impl(object *pointer, cell size);
object *copy_object_impl(object *untagged);