#include "master.hpp"
-namespace factor
-{
-
-to_tenured_collector::to_tenured_collector(factor_vm *parent_) :
- collector<tenured_space,to_tenured_policy>(
- parent_,
- parent_->data->tenured,
- to_tenured_policy(parent_)) {}
-
-void to_tenured_collector::tenure_reachable_objects()
-{
- std::vector<cell> *mark_stack = &parent->mark_stack;
- while(!mark_stack->empty())
- {
- cell ptr = mark_stack->back();
- mark_stack->pop_back();
- this->trace_object((object *)ptr);
- }
+namespace factor {
+
+to_tenured_collector::to_tenured_collector(factor_vm* parent_)
+ : collector<tenured_space, to_tenured_policy>(parent_,
+ parent_->data->tenured,
+ to_tenured_policy(parent_)) {}
+
+void to_tenured_collector::tenure_reachable_objects() {
+ std::vector<cell>* mark_stack = &parent->mark_stack;
+ while (!mark_stack->empty()) {
+ cell ptr = mark_stack->back();
+ mark_stack->pop_back();
+ this->trace_object((object*)ptr);
+ }
}
-void factor_vm::collect_to_tenured()
-{
- /* Copy live objects from aging space to tenured space. */
- to_tenured_collector collector(this);
+void factor_vm::collect_to_tenured() {
+ /* Copy live objects from aging space to tenured space. */
+ to_tenured_collector collector(this);
- mark_stack.clear();
+ mark_stack.clear();
- collector.trace_roots();
- collector.trace_contexts();
+ collector.trace_roots();
+ collector.trace_contexts();
- gc_event *event = current_gc->event;
+ gc_event* event = current_gc->event;
- if(event) event->started_card_scan();
- collector.trace_cards(data->tenured,
- card_points_to_aging,
- full_unmarker());
- if(event) event->ended_card_scan(collector.cards_scanned,collector.decks_scanned);
+ if (event)
+ event->started_card_scan();
+ collector.trace_cards(data->tenured, card_points_to_aging, 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_aging);
- if(event) event->ended_code_scan(collector.code_blocks_scanned);
+ if (event)
+ event->started_code_scan();
+ collector.trace_code_heap_roots(&code->points_to_aging);
+ if (event)
+ event->ended_code_scan(collector.code_blocks_scanned);
- collector.tenure_reachable_objects();
+ collector.tenure_reachable_objects();
- data->reset_generation(&nursery);
- data->reset_generation(data->aging);
- code->clear_remembered_set();
+ data->reset_generation(&nursery);
+ data->reset_generation(data->aging);
+ code->clear_remembered_set();
}
}
-namespace factor
-{
+namespace factor {
struct to_tenured_policy {
- factor_vm *parent;
- tenured_space *tenured;
+ factor_vm* parent;
+ tenured_space* tenured;
- explicit to_tenured_policy(factor_vm *parent_) : parent(parent_), tenured(parent->data->tenured) {}
+ explicit to_tenured_policy(factor_vm* parent_)
+ : parent(parent_), tenured(parent->data->tenured) {}
- bool should_copy_p(object *untagged)
- {
- return !tenured->contains_p(untagged);
- }
+ bool should_copy_p(object* untagged) {
+ return !tenured->contains_p(untagged);
+ }
- void promoted_object(object *obj)
- {
- parent->mark_stack.push_back((cell)obj);
- }
+ void promoted_object(object* obj) {
+ parent->mark_stack.push_back((cell) obj);
+ }
- void visited_object(object *obj) {}
+ void visited_object(object* obj) {}
};
-struct to_tenured_collector : collector<tenured_space,to_tenured_policy> {
- explicit to_tenured_collector(factor_vm *parent_);
- void tenure_reachable_objects();
+struct to_tenured_collector : collector<tenured_space, to_tenured_policy> {
+ explicit to_tenured_collector(factor_vm* parent_);
+ void tenure_reachable_objects();
};
}