]> gitweb.factorcode.org Git - factor.git/blob - vm/copying_collector.hpp
911363f97fed965086121d114117c1b5b92724ef
[factor.git] / vm / copying_collector.hpp
1 namespace factor {
2
3 template <typename TargetGeneration, typename Policy>
4 struct copying_collector : collector<TargetGeneration, Policy> {
5   cell scan;
6
7   copying_collector(factor_vm* parent, TargetGeneration* target,
8                     Policy policy)
9       : collector<TargetGeneration, Policy>(parent, target, policy),
10         scan(target->here) {}
11
12   void cheneys_algorithm() {
13     while (scan && scan < this->target->here) {
14       this->visitor.visit_object((object*)scan);
15       scan = this->target->next_object_after(scan);
16     }
17   }
18 };
19
20 }