namespace factor { struct data_heap { cell start; cell young_size; cell aging_size; cell tenured_size; segment* seg; nursery_space* nursery; aging_space* aging; aging_space* aging_semispace; tenured_space* tenured; card* cards; card* cards_end; card_deck* decks; card_deck* decks_end; explicit data_heap(cell young_size, cell aging_size, cell tenured_size); ~data_heap(); data_heap* grow(cell requested_size); template void clear_cards(Generation* gen); template void clear_decks(Generation* gen); void reset_generation(nursery_space* gen); void reset_generation(aging_space* gen); void reset_generation(tenured_space* gen); bool high_fragmentation_p(); bool low_memory_p(); void mark_all_cards(); cell high_water_mark() { return nursery->size + aging->size; } }; struct data_heap_room { 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; }; }