VM: debug code which memsets the resetted space
parent
d63a6a20ee
commit
4e63ba8dc8
|
@ -36,6 +36,16 @@ template <typename Block> struct bump_allocator {
|
||||||
else
|
else
|
||||||
return 0;
|
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);
|
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) {
|
void data_heap::reset_generation(aging_space* gen) {
|
||||||
gen->here = gen->start;
|
gen->flush();
|
||||||
clear_cards(gen);
|
clear_cards(gen);
|
||||||
clear_decks(gen);
|
clear_decks(gen);
|
||||||
gen->starts.clear_object_start_offsets();
|
gen->starts.clear_object_start_offsets();
|
||||||
|
|
Loading…
Reference in New Issue