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