2013-05-11 21:56:29 -04:00
|
|
|
namespace factor {
|
2009-05-04 02:46:13 -04:00
|
|
|
|
2009-05-04 05:50:24 -04:00
|
|
|
struct data_heap {
|
2013-05-11 21:56:29 -04:00
|
|
|
cell start;
|
|
|
|
|
|
|
|
cell young_size;
|
|
|
|
cell aging_size;
|
|
|
|
cell tenured_size;
|
|
|
|
|
|
|
|
segment* seg;
|
|
|
|
|
2016-08-21 10:26:04 -04:00
|
|
|
// Borrowed reference to a factor_vm::nursery
|
2014-11-21 04:34:23 -05:00
|
|
|
bump_allocator* nursery;
|
2013-05-11 21:56:29 -04:00
|
|
|
aging_space* aging;
|
|
|
|
aging_space* aging_semispace;
|
|
|
|
tenured_space* tenured;
|
|
|
|
|
|
|
|
card* cards;
|
|
|
|
card* cards_end;
|
|
|
|
|
|
|
|
card_deck* decks;
|
|
|
|
card_deck* decks_end;
|
|
|
|
|
2014-11-21 04:34:23 -05:00
|
|
|
data_heap(bump_allocator* vm_nursery,
|
2014-11-21 02:52:33 -05:00
|
|
|
cell young_size,
|
|
|
|
cell aging_size,
|
|
|
|
cell tenured_size);
|
2013-05-11 21:56:29 -04:00
|
|
|
~data_heap();
|
2014-11-21 04:34:23 -05:00
|
|
|
data_heap* grow(bump_allocator* vm_nursery, cell requested_size);
|
2013-05-11 21:56:29 -04:00
|
|
|
template <typename Generation> void clear_cards(Generation* gen);
|
|
|
|
template <typename Generation> void clear_decks(Generation* gen);
|
2015-01-10 10:14:54 -05:00
|
|
|
void reset_nursery();
|
|
|
|
void reset_aging();
|
|
|
|
void reset_tenured();
|
2013-05-11 21:56:29 -04:00
|
|
|
bool high_fragmentation_p();
|
|
|
|
bool low_memory_p();
|
|
|
|
void mark_all_cards();
|
|
|
|
cell high_water_mark() { return nursery->size + aging->size; }
|
2009-05-02 10:19:09 -04:00
|
|
|
};
|
2009-05-02 05:04:19 -04:00
|
|
|
|
2009-10-27 04:32:28 -04:00
|
|
|
struct data_heap_room {
|
2013-05-11 21:56:29 -04:00
|
|
|
cell nursery_size;
|
|
|
|
cell nursery_occupied;
|
|
|
|
cell nursery_free;
|
|
|
|
cell aging_size;
|
|
|
|
cell aging_occupied;
|
|
|
|
cell aging_free;
|
|
|
|
cell tenured_size;
|
|
|
|
cell tenured_occupied;
|
|
|
|
cell tenured_total_free;
|
|
|
|
cell tenured_contiguous_free;
|
|
|
|
cell tenured_free_block_count;
|
|
|
|
cell cards;
|
|
|
|
cell decks;
|
|
|
|
cell mark_stack;
|
2009-10-27 04:32:28 -04:00
|
|
|
};
|
|
|
|
|
2009-05-04 02:46:13 -04:00
|
|
|
}
|