VM: debug code which memsets the resetted space

db4
Björn Lindqvist 2014-08-07 00:30:15 +02:00 committed by Doug Coleman
parent d63a6a20ee
commit 4e63ba8dc8
2 changed files with 14 additions and 2 deletions

View File

@ -36,6 +36,16 @@ template <typename Block> struct bump_allocator {
else
return 0;
}
void flush() {
here = start;
#ifdef FACTOR_DEBUG
/* In case of bugs, there may be bogus references pointing to the
memory space after the gc has run. Filling it with a pattern
makes accesses to such shadow data fail hard. */
memset_cell((void*)start, 0xbaadbaad, size);
#endif
}
};
}

View File

@ -68,10 +68,12 @@ template <typename Generation> void data_heap::clear_decks(Generation* gen) {
memset(&decks[first_deck], 0, last_deck - first_deck);
}
void data_heap::reset_generation(nursery_space* gen) { gen->here = gen->start; }
void data_heap::reset_generation(nursery_space* gen) {
gen->flush();
}
void data_heap::reset_generation(aging_space* gen) {
gen->here = gen->start;
gen->flush();
clear_cards(gen);
clear_decks(gen);
gen->starts.clear_object_start_offsets();