2009-10-07 15:05:09 -04:00
|
|
|
namespace factor
|
|
|
|
{
|
|
|
|
|
2009-10-09 03:05:31 -04:00
|
|
|
struct allot_marker {
|
|
|
|
char first_object_start;
|
|
|
|
char last_object_start;
|
|
|
|
};
|
|
|
|
|
2009-10-07 15:05:09 -04:00
|
|
|
struct old_space : zone {
|
|
|
|
card *allot_markers;
|
|
|
|
card *allot_markers_end;
|
|
|
|
|
2009-10-07 16:48:09 -04:00
|
|
|
old_space(cell size_, cell start_);
|
|
|
|
~old_space();
|
2009-10-07 15:05:09 -04:00
|
|
|
|
2009-10-09 03:05:31 -04:00
|
|
|
cell first_object_in_card(cell address)
|
2009-10-07 15:05:09 -04:00
|
|
|
{
|
|
|
|
return allot_markers[(address - start) >> card_bits];
|
|
|
|
}
|
|
|
|
|
2009-10-07 16:48:09 -04:00
|
|
|
card *addr_to_allot_marker(object *a);
|
|
|
|
void record_allocation(object *obj);
|
|
|
|
object *allot(cell size);
|
|
|
|
void clear_allot_markers();
|
|
|
|
cell next_object_after(factor_vm *myvm, cell scan);
|
2009-10-07 15:05:09 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|