59 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
namespace factor {
 | 
						|
 | 
						|
struct data_heap {
 | 
						|
  cell start;
 | 
						|
 | 
						|
  cell young_size;
 | 
						|
  cell aging_size;
 | 
						|
  cell tenured_size;
 | 
						|
 | 
						|
  segment* seg;
 | 
						|
 | 
						|
  // Borrowed reference to a factor_vm::nursery
 | 
						|
  bump_allocator* nursery;
 | 
						|
  aging_space* aging;
 | 
						|
  aging_space* aging_semispace;
 | 
						|
  tenured_space* tenured;
 | 
						|
 | 
						|
  card* cards;
 | 
						|
  card* cards_end;
 | 
						|
 | 
						|
  card_deck* decks;
 | 
						|
  card_deck* decks_end;
 | 
						|
 | 
						|
  data_heap(bump_allocator* vm_nursery,
 | 
						|
            cell young_size,
 | 
						|
            cell aging_size,
 | 
						|
            cell tenured_size);
 | 
						|
  ~data_heap();
 | 
						|
  data_heap* grow(bump_allocator* vm_nursery, cell requested_size);
 | 
						|
  template <typename Generation> void clear_cards(Generation* gen);
 | 
						|
  template <typename Generation> void clear_decks(Generation* gen);
 | 
						|
  void reset_nursery();
 | 
						|
  void reset_aging();
 | 
						|
  void reset_tenured();
 | 
						|
  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;
 | 
						|
};
 | 
						|
 | 
						|
}
 |