VM: debug code which memsets the resetted space
parent
d63a6a20ee
commit
4e63ba8dc8
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue