150 assert(alignment % pageSize == 0, "Must be"); 151 152 GenerationSpec* young_spec = gen_policy()->young_gen_spec(); 153 GenerationSpec* old_spec = gen_policy()->old_gen_spec(); 154 155 // Check for overflow. 156 size_t total_reserved = young_spec->max_size() + old_spec->max_size(); 157 if (total_reserved < young_spec->max_size()) { 158 vm_exit_during_initialization("The size of the object heap + VM data exceeds " 159 "the maximum representable size"); 160 } 161 assert(total_reserved % alignment == 0, 162 err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment=" 163 SIZE_FORMAT, total_reserved, alignment)); 164 165 *heap_rs = Universe::reserve_heap(total_reserved, alignment); 166 return heap_rs->base(); 167 } 168 169 void GenCollectedHeap::post_initialize() { 170 SharedHeap::post_initialize(); 171 GenCollectorPolicy *policy = (GenCollectorPolicy *)collector_policy(); 172 guarantee(policy->is_generation_policy(), "Illegal policy type"); 173 assert((_young_gen->kind() == Generation::DefNew) || 174 (_young_gen->kind() == Generation::ParNew), 175 "Wrong youngest generation type"); 176 DefNewGeneration* def_new_gen = (DefNewGeneration*)_young_gen; 177 178 assert(_old_gen->kind() == Generation::ConcurrentMarkSweep || 179 _old_gen->kind() == Generation::MarkSweepCompact, 180 "Wrong generation kind"); 181 182 policy->initialize_size_policy(def_new_gen->eden()->capacity(), 183 _old_gen->capacity(), 184 def_new_gen->from()->capacity()); 185 policy->initialize_gc_policy_counters(); 186 } 187 188 void GenCollectedHeap::ref_processing_init() { 189 SharedHeap::ref_processing_init(); 190 _young_gen->ref_processor_init(); 191 _old_gen->ref_processor_init(); 192 } 193 194 size_t GenCollectedHeap::capacity() const { 195 return _young_gen->capacity() + _old_gen->capacity(); 196 } 197 198 size_t GenCollectedHeap::used() const { 199 return _young_gen->used() + _old_gen->used(); 200 } 201 202 // Save the "used_region" for generations level and lower. 203 void GenCollectedHeap::save_used_regions(int level) { 204 assert(level >= 0, "Illegal level parameter"); 205 assert(level < _n_gens, "Illegal level parameter"); 206 if (level == 1) { 207 _old_gen->save_used_region(); 208 } 209 _young_gen->save_used_region(); | 150 assert(alignment % pageSize == 0, "Must be"); 151 152 GenerationSpec* young_spec = gen_policy()->young_gen_spec(); 153 GenerationSpec* old_spec = gen_policy()->old_gen_spec(); 154 155 // Check for overflow. 156 size_t total_reserved = young_spec->max_size() + old_spec->max_size(); 157 if (total_reserved < young_spec->max_size()) { 158 vm_exit_during_initialization("The size of the object heap + VM data exceeds " 159 "the maximum representable size"); 160 } 161 assert(total_reserved % alignment == 0, 162 err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment=" 163 SIZE_FORMAT, total_reserved, alignment)); 164 165 *heap_rs = Universe::reserve_heap(total_reserved, alignment); 166 return heap_rs->base(); 167 } 168 169 void GenCollectedHeap::post_initialize() { 170 CollectedHeap::post_initialize(); 171 ref_processing_init(); 172 GenCollectorPolicy *policy = (GenCollectorPolicy *)collector_policy(); 173 guarantee(policy->is_generation_policy(), "Illegal policy type"); 174 assert((_young_gen->kind() == Generation::DefNew) || 175 (_young_gen->kind() == Generation::ParNew), 176 "Wrong youngest generation type"); 177 DefNewGeneration* def_new_gen = (DefNewGeneration*)_young_gen; 178 179 assert(_old_gen->kind() == Generation::ConcurrentMarkSweep || 180 _old_gen->kind() == Generation::MarkSweepCompact, 181 "Wrong generation kind"); 182 183 policy->initialize_size_policy(def_new_gen->eden()->capacity(), 184 _old_gen->capacity(), 185 def_new_gen->from()->capacity()); 186 policy->initialize_gc_policy_counters(); 187 } 188 189 void GenCollectedHeap::ref_processing_init() { 190 _young_gen->ref_processor_init(); 191 _old_gen->ref_processor_init(); 192 } 193 194 size_t GenCollectedHeap::capacity() const { 195 return _young_gen->capacity() + _old_gen->capacity(); 196 } 197 198 size_t GenCollectedHeap::used() const { 199 return _young_gen->used() + _old_gen->used(); 200 } 201 202 // Save the "used_region" for generations level and lower. 203 void GenCollectedHeap::save_used_regions(int level) { 204 assert(level >= 0, "Illegal level parameter"); 205 assert(level < _n_gens, "Illegal level parameter"); 206 if (level == 1) { 207 _old_gen->save_used_region(); 208 } 209 _young_gen->save_used_region(); |