]> gitweb.factorcode.org Git - factor.git/blob - vm/old_space.hpp
merge project-euler.factor
[factor.git] / vm / old_space.hpp
1 namespace factor
2 {
3
4 static const cell card_starts_inside_object = 0xff;
5
6 struct old_space : zone {
7         card *object_start_offsets;
8         card *object_start_offsets_end;
9
10         old_space(cell size_, cell start_);
11         ~old_space();
12
13         cell first_object_in_card(cell address)
14         {
15                 return object_start_offsets[(address - start) >> card_bits];
16         }
17
18         void record_object_start_offset(object *obj);
19         object *allot(cell size);
20         void clear_object_start_offsets();
21         cell next_object_after(factor_vm *myvm, cell scan);
22 };
23
24 }