diff --git a/8264805-Backport-Ahead-of-Time-Compiler.patch b/8264805-Backport-Ahead-of-Time-Compiler.patch index 0674342e1a3b9cba276ea6f8df03df1ce25a0478..a5ee22f06818c1a4462eb9415fd70c6c694327d7 100644 --- a/8264805-Backport-Ahead-of-Time-Compiler.patch +++ b/8264805-Backport-Ahead-of-Time-Compiler.patch @@ -5348,8 +5348,8 @@ index be1e14ad8..359b8a051 100644 +#endif + #ifndef PRODUCT - CodeStrings _code_strings; - bool _collect_comments; // Indicate if we need to collect block comments at all. + AsmRemarks _asm_remarks; + DbgStrings _dbg_strings; @@ -422,6 +426,9 @@ class CodeBuffer: public StackObj { _oop_recorder = NULL; _overflow_arena = NULL; @@ -5643,14 +5643,6 @@ index 104e04fba..54258da76 100644 virtual bool is_compiled() const { return false; } virtual bool is_optimized_entry_blob() const { return false; } -@@ -242,6 +253,7 @@ public: - - #ifndef PRODUCT - void set_strings(CodeStrings& strings) { -+ assert(!is_aot(), "invalid on aot"); - _strings.copy(strings); - } - #endif diff --git a/src/hotspot/share/code/codeCache.cpp b/src/hotspot/share/code/codeCache.cpp index 61f8c0f51..254ddbf5c 100644 --- a/src/hotspot/share/code/codeCache.cpp diff --git a/Backport-of-8340547-Starting-many-threads-can-delay-safepoints.patch b/Backport-of-8340547-Starting-many-threads-can-delay-safepoints.patch new file mode 100644 index 0000000000000000000000000000000000000000..a7b7ba94f767e61402170c9049d3ba90da7ea34a --- /dev/null +++ b/Backport-of-8340547-Starting-many-threads-can-delay-safepoints.patch @@ -0,0 +1,103 @@ +From 0dc5f812c570fc25cad90a6c7130f413e4fbb91b Mon Sep 17 00:00:00 2001 +Date: Sat, 18 Oct 2025 10:50:49 +0800 +Subject: 8340547: Starting many threads can delay safepoints + +--- + src/hotspot/share/prims/jvm.cpp | 3 ++- + src/hotspot/share/runtime/globals.hpp | 4 ++++ + src/hotspot/share/runtime/mutexLocker.cpp | 2 ++ + src/hotspot/share/runtime/mutexLocker.hpp | 2 ++ + src/hotspot/share/runtime/thread.cpp | 6 ++++-- + 5 files changed, 14 insertions(+), 3 deletions(-) + +diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp +index b5a3bf95d..1d32c67b3 100644 +--- a/src/hotspot/share/prims/jvm.cpp ++++ b/src/hotspot/share/prims/jvm.cpp +@@ -2869,9 +2869,10 @@ JVM_ENTRY(void, JVM_StartThread(JNIEnv* env, jobject jthread)) + // We must release the Threads_lock before we can post a jvmti event + // in Thread::start. + { ++ MutexLocker throttle_ml(UseThreadsLockThrottleLock ? ThreadsLockThrottle_lock : nullptr); + // Ensure that the C++ Thread and OSThread structures aren't freed before + // we operate. +- MutexLocker mu(Threads_lock); ++ MutexLocker ml(Threads_lock); + + // Since JDK 5 the java.lang.Thread threadStatus is used to prevent + // re-starting an already started thread, so we should usually find +diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp +index eb5733b4d..6306b08bd 100644 +--- a/src/hotspot/share/runtime/globals.hpp ++++ b/src/hotspot/share/runtime/globals.hpp +@@ -2175,6 +2175,10 @@ const intx ObjectAlignmentInBytes = 8; + "more eagerly at the cost of higher overhead. A value of 0 " \ + "(default) disables native heap trimming.") \ + range(0, UINT_MAX) \ ++ product(bool, UseThreadsLockThrottleLock, true, DIAGNOSTIC, \ ++ "Use an extra lock during Thread start and exit to alleviate" \ ++ "contention on Threads_lock.") \ ++ + + // end of RUNTIME_FLAGS + +diff --git a/src/hotspot/share/runtime/mutexLocker.cpp b/src/hotspot/share/runtime/mutexLocker.cpp +index d503955e2..1eaaa170d 100644 +--- a/src/hotspot/share/runtime/mutexLocker.cpp ++++ b/src/hotspot/share/runtime/mutexLocker.cpp +@@ -68,6 +68,7 @@ Mutex* MethodData_lock = NULL; + Mutex* TouchedMethodLog_lock = NULL; + Mutex* RetData_lock = NULL; + Monitor* VMOperation_lock = NULL; ++Monitor* ThreadsLockThrottle_lock = NULL; + Monitor* Threads_lock = NULL; + Mutex* NonJavaThreadsList_lock = NULL; + Mutex* NonJavaThreadsListSync_lock = NULL; +@@ -313,6 +314,7 @@ void mutex_init() { + def(RedefineClasses_lock , PaddedMonitor, nonleaf+5, true, _safepoint_check_always); + def(Verify_lock , PaddedMutex, nonleaf+5, true, _safepoint_check_always); + def(Zip_lock , PaddedMonitor, leaf, true, _safepoint_check_never); ++ def(ThreadsLockThrottle_lock , PaddedMonitor, noleaf, true, _safepoint_check_always); + + if (WhiteBoxAPI) { + def(Compilation_lock , PaddedMonitor, leaf, false, _safepoint_check_never); +diff --git a/src/hotspot/share/runtime/mutexLocker.hpp b/src/hotspot/share/runtime/mutexLocker.hpp +index 3051d7128..0a7b6ae9e 100644 +--- a/src/hotspot/share/runtime/mutexLocker.hpp ++++ b/src/hotspot/share/runtime/mutexLocker.hpp +@@ -60,6 +60,8 @@ extern Mutex* MethodData_lock; // a lock on installation of me + extern Mutex* TouchedMethodLog_lock; // a lock on allocation of LogExecutedMethods info + extern Mutex* RetData_lock; // a lock on installation of RetData inside method data + extern Monitor* VMOperation_lock; // a lock on queue of vm_operations waiting to execute ++extern Monitor* ThreadsLockThrottle_lock; // used by Thread start/exit to reduce competition for Threads_lock, ++ // so a VM thread calling a safepoint is prioritized + extern Monitor* Threads_lock; // a lock on the Threads table of active Java threads + // (also used by Safepoints too to block threads creation/destruction) + extern Mutex* NonJavaThreadsList_lock; // a lock on the NonJavaThreads list +diff --git a/src/hotspot/share/runtime/thread.cpp b/src/hotspot/share/runtime/thread.cpp +index 2a97c8bf5..a64bcabd2 100644 +--- a/src/hotspot/share/runtime/thread.cpp ++++ b/src/hotspot/share/runtime/thread.cpp +@@ -3581,7 +3581,9 @@ void Threads::add(JavaThread* p, bool force_daemon) { + void Threads::remove(JavaThread* p, bool is_daemon) { + // Extra scope needed for Thread_lock, so we can check + // that we do not remove thread without safepoint code notice +- { MonitorLocker ml(Threads_lock); ++ { ++ MutexLocker throttle_ml(UseThreadsLockThrottleLock ? ThreadsLockThrottle_lock : nullptr); ++ MonitorLocker ml(Threads_lock); + + // BarrierSet state must be destroyed after the last thread transition + // before the thread terminates. Thread transitions result in calls to +@@ -3614,7 +3616,7 @@ void Threads::remove(JavaThread* p, bool is_daemon) { + + // Notify threads waiting in EscapeBarriers + EscapeBarrier::thread_removed(p); +- } // unlock Threads_lock ++ } // unlock Threads_lock and ThreadsLockThrottle_lock + + // Reduce the ObjectMonitor ceiling for the exiting thread. + ObjectSynchronizer::dec_in_use_list_ceiling(); +-- +2.34.1 + diff --git a/Huawei-fix-potential-build-fail-in-jbolt.patch b/Huawei-fix-potential-build-fail-in-jbolt.patch old mode 100755 new mode 100644 diff --git a/add-version-txt.patch b/add-version-txt.patch index b71c5462adaf7c92485c4b6c4e8a44ac312da3d6..d67ed888c94438670a19dd5fdd98f07e56d51280 100644 --- a/add-version-txt.patch +++ b/add-version-txt.patch @@ -13,7 +13,7 @@ index 000000000..b717bafbe --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ -+17.0.16.0.13 ++17.0.17.0.9 -- 2.19.0 diff --git a/jdk-updates-jdk17u-jdk-17.0.16+8.tar.gz b/jdk-updates-jdk17u-jdk-17.0.17+9.tar.gz similarity index 86% rename from jdk-updates-jdk17u-jdk-17.0.16+8.tar.gz rename to jdk-updates-jdk17u-jdk-17.0.17+9.tar.gz index f9586f94a02d72180c2bb9734d7926bad1dca9ac..caa4053e9471c8245f72c3c0bf4732cb66fe4c3d 100644 Binary files a/jdk-updates-jdk17u-jdk-17.0.16+8.tar.gz and b/jdk-updates-jdk17u-jdk-17.0.17+9.tar.gz differ diff --git a/openjdk-17.spec b/openjdk-17.spec index 0d485fef2d690fa528c65ae5789ac0100d7afbc0..325628cc8c9420df1d17a92fe5e83b5a82b70213 100644 --- a/openjdk-17.spec +++ b/openjdk-17.spec @@ -168,7 +168,7 @@ # Used via new version scheme. JDK 17 was # GA'ed in March 2021 => 21.9 %global vendor_version_string 21.9 -%global securityver 16 +%global securityver 17 # buildjdkver is usually same as %%{majorver}, # but in time of bootstrap of next jdk, it is majorver-1, # and this it is better to change it here, on single place @@ -194,7 +194,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{origin} %global minorver 0 -%global buildver 8 +%global buildver 9 # priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit %if %is_system_jdk %global priority %( printf '%02d%02d%02d%02d' %{majorver} %{minorver} %{securityver} %{buildver} ) @@ -920,7 +920,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release} Name: java-%{javaver}-%{origin} Version: %{newjavaver}.%{buildver} -Release: 2 +Release: 0 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages @@ -1078,6 +1078,9 @@ Patch84: huawei-remove-provides-in-kaeprovider-module-info.patch Patch85: support-numactl.patch Patch86: simplify-the-parameters-for-appcds.patch +#17.0.17 +Patch87: Backport-of-8340547-Starting-many-threads-can-delay-safepoints.patch + ############################################ # # LoongArch64 specific patches @@ -1381,6 +1384,7 @@ pushd %{top_level_dir_name} %patch 84 -p1 %patch 85 -p1 %patch 86 -p1 +%patch 87 -p1 popd # openjdk %endif @@ -2005,6 +2009,12 @@ cjc.mainProgram(args) -- the returns from copy_jdk_configs.lua should not affect %changelog +* Fri Oct 17 2025 benshuai5d 1:17.0.17.9-0 +- update to 17.0.17 +- modify 8264805-Backport-Ahead-of-Time-Compiler.patch +- modify Huawei-fix-potential-build-fail-in-jbolt.patch +- add Backport-of-8340547-Starting-many-threads-can-delay-safepoints.patch + * Tue Aug 5 2025 neu-mobi 1:17.0.16.8-2 - add support-numactl.patch - add simplify-the-parameters-for-appcds.patch