3 struct tenured_space : free_list_allocator<object> {
4 object_start_map starts;
6 tenured_space(cell size, cell start)
7 : free_list_allocator<object>(size, start), starts(size, start) {}
9 object* allot(cell size) {
10 object* obj = free_list_allocator<object>::allot(size);
12 starts.record_object_start_offset(obj);
19 return (cell) next_allocated_block_after(this->first_block());
22 cell next_object_after(cell scan) {
23 cell size = ((object*)scan)->size();
24 object* next = (object*)(scan + size);
25 return (cell) next_allocated_block_after(next);
28 void clear_mark_bits() { state.clear_mark_bits(); }
30 bool marked_p(object* obj) { return this->state.marked_p(obj); }
32 void set_marked_p(object* obj) { this->state.set_marked_p(obj); }
35 free_list_allocator<object>::sweep();
36 starts.update_for_sweep(&this->state);