| 
									
										
										
										
											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
										 |  |  | } |