From bac691970527b89b016495df0717163f5a3ed86c Mon Sep 17 00:00:00 2001 From: Erik Charlebois Date: Sat, 11 May 2013 22:16:22 -0400 Subject: [PATCH] VM: Refactor nursery_* to Factor style --- vm/nursery_collector.cpp | 77 +++++++++++++++++++--------------------- vm/nursery_collector.hpp | 20 +++++------ vm/nursery_space.hpp | 9 +++-- 3 files changed, 49 insertions(+), 57 deletions(-) diff --git a/vm/nursery_collector.cpp b/vm/nursery_collector.cpp index 7ea81391b2..254a776d35 100644 --- a/vm/nursery_collector.cpp +++ b/vm/nursery_collector.cpp @@ -1,45 +1,42 @@ #include "master.hpp" -namespace factor -{ - -nursery_collector::nursery_collector(factor_vm *parent_) : - copying_collector( - parent_, - parent_->data->aging, - nursery_policy(parent_)) {} - -void factor_vm::collect_nursery() -{ - /* Copy live objects from the nursery (as determined by the root set and - marked cards in aging and tenured) to aging space. */ - nursery_collector collector(this); - - collector.trace_roots(); - collector.trace_contexts(); - - gc_event *event = current_gc->event; - - if(event) event->started_card_scan(); - collector.trace_cards(data->tenured, - card_points_to_nursery, - simple_unmarker(card_points_to_nursery)); - if(data->aging->here != data->aging->start) - { - collector.trace_cards(data->aging, - card_points_to_nursery, - full_unmarker()); - } - if(event) event->ended_card_scan(collector.cards_scanned,collector.decks_scanned); - - if(event) event->started_code_scan(); - collector.trace_code_heap_roots(&code->points_to_nursery); - if(event) event->ended_code_scan(collector.code_blocks_scanned); - - collector.cheneys_algorithm(); - - data->reset_generation(&nursery); - code->points_to_nursery.clear(); +namespace factor { + +nursery_collector::nursery_collector(factor_vm* parent_) + : copying_collector(parent_, + parent_->data->aging, + nursery_policy(parent_)) {} + +void factor_vm::collect_nursery() { + /* Copy live objects from the nursery (as determined by the root set and + marked cards in aging and tenured) to aging space. */ + nursery_collector collector(this); + + collector.trace_roots(); + collector.trace_contexts(); + + gc_event* event = current_gc->event; + + if (event) + event->started_card_scan(); + collector.trace_cards(data->tenured, card_points_to_nursery, + simple_unmarker(card_points_to_nursery)); + if (data->aging->here != data->aging->start) { + collector.trace_cards(data->aging, card_points_to_nursery, full_unmarker()); + } + if (event) + event->ended_card_scan(collector.cards_scanned, collector.decks_scanned); + + if (event) + event->started_code_scan(); + collector.trace_code_heap_roots(&code->points_to_nursery); + if (event) + event->ended_code_scan(collector.code_blocks_scanned); + + collector.cheneys_algorithm(); + + data->reset_generation(&nursery); + code->points_to_nursery.clear(); } } diff --git a/vm/nursery_collector.hpp b/vm/nursery_collector.hpp index de9b38d283..06599ea646 100644 --- a/vm/nursery_collector.hpp +++ b/vm/nursery_collector.hpp @@ -1,23 +1,19 @@ -namespace factor -{ +namespace factor { struct nursery_policy { - factor_vm *parent; + factor_vm* parent; - explicit nursery_policy(factor_vm *parent_) : parent(parent_) {} + explicit nursery_policy(factor_vm* parent_) : parent(parent_) {} - bool should_copy_p(object *obj) - { - return parent->nursery.contains_p(obj); - } + bool should_copy_p(object* obj) { return parent->nursery.contains_p(obj); } - void promoted_object(object *obj) {} + void promoted_object(object* obj) {} - void visited_object(object *obj) {} + void visited_object(object* obj) {} }; -struct nursery_collector : copying_collector { - explicit nursery_collector(factor_vm *parent_); +struct nursery_collector : copying_collector { + explicit nursery_collector(factor_vm* parent_); }; } diff --git a/vm/nursery_space.hpp b/vm/nursery_space.hpp index c44d2a8e44..e4a905bd4e 100644 --- a/vm/nursery_space.hpp +++ b/vm/nursery_space.hpp @@ -1,9 +1,8 @@ -namespace factor -{ +namespace factor { -struct nursery_space : bump_allocator -{ - explicit nursery_space(cell size, cell start) : bump_allocator(size,start) {} +struct nursery_space : bump_allocator { + explicit nursery_space(cell size, cell start) + : bump_allocator(size, start) {} }; } -- 2.34.1