4 struct tenured_space : free_list_allocator<object> {
5 object_start_map starts;
7 explicit tenured_space(cell size, cell start) :
8 free_list_allocator<object>(size,start), starts(size,start) {}
10 object *allot(cell size)
12 object *obj = free_list_allocator<object>::allot(size);
15 starts.record_object_start_offset(obj);
24 return (cell)next_allocated_block_after(this->first_block());
27 cell next_object_after(cell scan)
29 cell size = ((object *)scan)->size();
30 object *next = (object *)(scan + size);
31 return (cell)next_allocated_block_after(next);
34 void clear_mark_bits()
36 state.clear_mark_bits();
39 bool marked_p(object *obj)
41 return this->state.marked_p(obj);
44 void set_marked_p(object *obj)
46 this->state.set_marked_p(obj);
51 free_list_allocator<object>::sweep();
52 starts.update_for_sweep(&this->state);