From 095d387cbfc0d4aa75e00866e5bb0fde52871308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20H=C3=A4ssig?= Date: Wed, 11 Jun 2025 14:46:23 +0200 Subject: [PATCH 1/3] Correctly calculate the compiler buffer size Co-authored-by: Aleksey Shipilev --- src/hotspot/share/compiler/compilationPolicy.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/hotspot/share/compiler/compilationPolicy.cpp b/src/hotspot/share/compiler/compilationPolicy.cpp index 5ca719d030957..75da10a6e8fcb 100644 --- a/src/hotspot/share/compiler/compilationPolicy.cpp +++ b/src/hotspot/share/compiler/compilationPolicy.cpp @@ -36,8 +36,10 @@ #include "prims/jvmtiExport.hpp" #include "runtime/arguments.hpp" #include "runtime/deoptimization.hpp" +#include "runtime/flags/debug_globals.hpp" #include "runtime/frame.hpp" #include "runtime/frame.inline.hpp" +#include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" #include "runtime/handles.inline.hpp" #include "runtime/safepoint.hpp" @@ -571,8 +573,15 @@ void CompilationPolicy::initialize() { #ifdef COMPILER2 c2_size = C2Compiler::initial_code_buffer_size(); #endif - size_t buffer_size = c1_only ? c1_size : (c1_size/3 + 2*c2_size/3); - size_t max_count = (ReservedCodeCacheSize - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / buffer_size; + size_t buffer_size = 0; + if (c1_only) { + buffer_size = c1_size; + } else if (c2_only) { + buffer_size = c2_size; + } else { + buffer_size = c1_size / 3 + c2_size * 2/3; + } + size_t max_count = (ReservedCodeCacheSize - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / (int)buffer_size; if ((size_t)count > max_count) { // Lower the compiler count such that all buffers fit into the code cache count = MAX2((int)max_count, min_count); @@ -591,7 +600,7 @@ void CompilationPolicy::initialize() { count = 3; FLAG_SET_ERGO(CICompilerCount, count); } -#endif +#endif // _LP64 if (c1_only) { // No C2 compiler threads are needed From 55e97d2a586213a3e3266f80e6f84c012e7d3af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20H=C3=A4ssig?= Date: Wed, 11 Jun 2025 16:59:16 +0200 Subject: [PATCH 2/3] Respect NonNMethodCodeHeapSize during ergonomic compiler count selection --- src/hotspot/share/compiler/compilationPolicy.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/compiler/compilationPolicy.cpp b/src/hotspot/share/compiler/compilationPolicy.cpp index 75da10a6e8fcb..7a43d2751ebe7 100644 --- a/src/hotspot/share/compiler/compilationPolicy.cpp +++ b/src/hotspot/share/compiler/compilationPolicy.cpp @@ -36,10 +36,7 @@ #include "prims/jvmtiExport.hpp" #include "runtime/arguments.hpp" #include "runtime/deoptimization.hpp" -#include "runtime/flags/debug_globals.hpp" #include "runtime/frame.hpp" -#include "runtime/frame.inline.hpp" -#include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" #include "runtime/handles.inline.hpp" #include "runtime/safepoint.hpp" @@ -581,7 +578,8 @@ void CompilationPolicy::initialize() { } else { buffer_size = c1_size / 3 + c2_size * 2/3; } - size_t max_count = (ReservedCodeCacheSize - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / (int)buffer_size; + size_t max_buffer_size = FLAG_IS_CMDLINE(NonNMethodCodeHeapSize) ? NonNMethodCodeHeapSize : ReservedCodeCacheSize; + size_t max_count = (max_buffer_size - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / (int)buffer_size; if ((size_t)count > max_count) { // Lower the compiler count such that all buffers fit into the code cache count = MAX2((int)max_count, min_count); From 98a8107d31e582787555a3e37106c770eb08c0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20H=C3=A4ssig?= Date: Thu, 12 Jun 2025 11:28:40 +0200 Subject: [PATCH 3/3] Fix inadvertantly removed header Co-developed-by: Damon Fenacci --- src/hotspot/share/compiler/compilationPolicy.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hotspot/share/compiler/compilationPolicy.cpp b/src/hotspot/share/compiler/compilationPolicy.cpp index 7a43d2751ebe7..4a9fa16ec2b52 100644 --- a/src/hotspot/share/compiler/compilationPolicy.cpp +++ b/src/hotspot/share/compiler/compilationPolicy.cpp @@ -37,6 +37,7 @@ #include "runtime/arguments.hpp" #include "runtime/deoptimization.hpp" #include "runtime/frame.hpp" +#include "runtime/frame.inline.hpp" #include "runtime/globals_extension.hpp" #include "runtime/handles.inline.hpp" #include "runtime/safepoint.hpp"