@@ -223,8 +223,9 @@ static void report_cache_size_error(const CodeHeapInfo& non_nmethod, const CodeH
223
223
vm_exit_during_initialization (" Invalid code heap sizes" , message);
224
224
}
225
225
226
- static size_t subtract_size (size_t cache_size, size_t known_segments_size, size_t min_size) {
227
- return (cache_size > known_segments_size + min_size) ? (cache_size - known_segments_size) : min_size;
226
+ static void set_size_of_unset_code_heap (CodeHeapInfo* heap, size_t available_size, size_t known_segments_size, size_t min_size) {
227
+ assert (!heap->set , " sanity" );
228
+ heap->size = (available_size > known_segments_size + min_size) ? (available_size - known_segments_size) : min_size;
228
229
}
229
230
230
231
void CodeCache::initialize_heaps () {
@@ -251,12 +252,8 @@ void CodeCache::initialize_heaps() {
251
252
}
252
253
253
254
if (!heap_available (CodeBlobType::MethodNonProfiled)) {
254
- // Compatibility
255
- non_nmethod.size += profiled.size ;
256
- // Non-Profiled code heap is not available, forcibly set size to 0
257
- non_profiled.size = 0 ;
258
- non_profiled.set = true ;
259
- non_profiled.enabled = false ;
255
+ // MethodNonProfiled heap is always awailable for segmented code heap
256
+ ShouldNotReachHere ();
260
257
}
261
258
262
259
size_t compiler_buffer_size = 0 ;
@@ -273,18 +270,18 @@ void CodeCache::initialize_heaps() {
273
270
}
274
271
275
272
if (profiled.set && !non_profiled.set ) {
276
- non_profiled. size = subtract_size ( cache_size, non_nmethod.size + profiled.size , min_size);
273
+ set_size_of_unset_code_heap (& non_profiled, cache_size, non_nmethod.size + profiled.size , min_size);
277
274
}
278
275
279
276
if (!profiled.set && non_profiled.set ) {
280
- profiled. size = subtract_size ( cache_size, non_nmethod.size + non_profiled.size , min_size);
277
+ set_size_of_unset_code_heap (& profiled, cache_size, non_nmethod.size + non_profiled.size , min_size);
281
278
}
282
279
283
280
// Compatibility.
284
281
// Override Non-NMethod default size if two other segments are set explicitly
285
282
size_t non_nmethod_min_size = min_cache_size + compiler_buffer_size;
286
283
if (!non_nmethod.set && profiled.set && non_profiled.set ) {
287
- non_nmethod. size = subtract_size ( cache_size, profiled.size + non_profiled.size , non_nmethod_min_size);
284
+ set_size_of_unset_code_heap (& non_nmethod, cache_size, profiled.size + non_profiled.size , non_nmethod_min_size);
288
285
}
289
286
290
287
size_t total = non_nmethod.size + profiled.size + non_profiled.size ;
0 commit comments