VM: replaced the reset_generation() generic method with one method for each generation

db4
Björn Lindqvist 2015-01-10 15:14:54 +00:00
parent dc9e937beb
commit d2aea0f606
6 changed files with 21 additions and 22 deletions

View File

@ -33,7 +33,7 @@ void factor_vm::collect_aging() {
current_gc->op = collect_aging_op;
std::swap(data->aging, data->aging_semispace);
data->reset_generation(data->aging);
data->reset_aging();
copying_collector<aging_space, aging_policy> collector(this,
this->data->aging,
@ -43,7 +43,7 @@ void factor_vm::collect_aging() {
collector.cheneys_algorithm();
data->reset_generation(&nursery);
data->reset_nursery();
code->clear_remembered_set();
}
}

View File

@ -77,20 +77,20 @@ template <typename Generation> void data_heap::clear_decks(Generation* gen) {
memset(&decks[first_deck], 0, last_deck - first_deck);
}
void data_heap::reset_generation(bump_allocator* gen) {
gen->flush();
void data_heap::reset_nursery() {
nursery->flush();
}
void data_heap::reset_generation(aging_space* gen) {
gen->flush();
clear_cards(gen);
clear_decks(gen);
gen->starts.clear_object_start_offsets();
void data_heap::reset_aging() {
aging->flush();
clear_cards(aging);
clear_decks(aging);
aging->starts.clear_object_start_offsets();
}
void data_heap::reset_generation(tenured_space* gen) {
clear_cards(gen);
clear_decks(gen);
void data_heap::reset_tenured() {
clear_cards(tenured);
clear_decks(tenured);
}
bool data_heap::high_fragmentation_p() {

View File

@ -29,9 +29,9 @@ struct data_heap {
data_heap* grow(bump_allocator* vm_nursery, cell requested_size);
template <typename Generation> void clear_cards(Generation* gen);
template <typename Generation> void clear_decks(Generation* gen);
void reset_generation(bump_allocator* gen);
void reset_generation(aging_space* gen);
void reset_generation(tenured_space* gen);
void reset_nursery();
void reset_aging();
void reset_tenured();
bool high_fragmentation_p();
bool low_memory_p();
void mark_all_cards();

View File

@ -59,10 +59,9 @@ void factor_vm::collect_mark_impl(bool trace_contexts_p) {
code_visitor.visit_object_code_block(obj);
}
}
data->reset_generation(data->tenured);
data->reset_generation(data->aging);
data->reset_generation(&nursery);
data->reset_tenured();
data->reset_aging();
data->reset_nursery();
code->clear_remembered_set();
}

View File

@ -31,7 +31,7 @@ void factor_vm::collect_nursery() {
collector.cheneys_algorithm();
data->reset_generation(&nursery);
data->reset_nursery();
code->points_to_nursery.clear();
}

View File

@ -41,8 +41,8 @@ void factor_vm::collect_to_tenured() {
collector.tenure_reachable_objects();
data->reset_generation(&nursery);
data->reset_generation(data->aging);
data->reset_nursery();
data->reset_aging();
code->clear_remembered_set();
}