diff --git a/java/openjdk17/Makefile b/java/openjdk17/Makefile --- a/java/openjdk17/Makefile +++ b/java/openjdk17/Makefile @@ -1,7 +1,7 @@ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk17/files/patch-src_hotspot_os_bsd_globals__bsd.hpp b/java/openjdk17/files/patch-src_hotspot_os_bsd_globals__bsd.hpp new file mode 100644 --- /dev/null +++ b/java/openjdk17/files/patch-src_hotspot_os_bsd_globals__bsd.hpp @@ -0,0 +1,14 @@ +--- src/hotspot/os/bsd/globals_bsd.hpp.orig 2023-10-09 09:47:10 UTC ++++ src/hotspot/os/bsd/globals_bsd.hpp +@@ -36,6 +36,11 @@ + range, \ + constraint) \ + \ ++ /* NB: The default value of UseBsdPosixThreadCPUClocks may be */ \ ++ /* overridden in Arguments::parse_each_vm_init_arg. */ \ ++ product(bool, UseBsdPosixThreadCPUClocks, true, \ ++ "enable fast BSD Posix clocks where available") \ ++ \ + product(bool, UseHugeTLBFS, false, \ + "Use MAP_HUGETLB for large pages") \ + \ diff --git a/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.hpp b/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.hpp new file mode 100644 --- /dev/null +++ b/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.hpp @@ -0,0 +1,12 @@ +--- src/hotspot/os/bsd/os_bsd.hpp.orig 2023-07-19 03:18:33 UTC ++++ src/hotspot/os/bsd/os_bsd.hpp +@@ -76,6 +76,9 @@ class Bsd { + // Real-time clock functions + static void clock_init(void); + ++ // fast POSIX clocks support ++ static void fast_thread_clock_init(void); ++ + // Stack repair handling + + // none present diff --git a/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.cpp b/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.cpp --- a/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.cpp +++ b/java/openjdk17/files/patch-src_hotspot_os_bsd_os__bsd.cpp @@ -1,6 +1,6 @@ ---- src/hotspot/os/bsd/os_bsd.cpp.orig 2021-09-29 21:25:10 UTC +--- src/hotspot/os/bsd/os_bsd.cpp.orig 2023-07-19 03:18:33 UTC +++ src/hotspot/os/bsd/os_bsd.cpp -@@ -361,7 +361,7 @@ +@@ -388,7 +388,7 @@ void os::init_system_properties_values() { #elif defined(__NetBSD__) #define DEFAULT_LIBPATH "/usr/lib:/usr/pkg/lib" #else @@ -9,3 +9,44 @@ #endif #else #define DEFAULT_LIBPATH OVERRIDE_LIBPATH +@@ -871,8 +871,31 @@ void os::Bsd::clock_init() { + } + #endif + ++void os::Bsd::fast_thread_clock_init() { ++ if (!UseBsdPosixThreadCPUClocks) { ++ return; ++ } ++ clockid_t clockid; ++ struct timespec tp; ++ int (*pthread_getcpuclockid_func)(pthread_t, clockid_t *) = ++ (int(*)(pthread_t, clockid_t *)) dlsym(RTLD_DEFAULT, "pthread_getcpuclockid"); + ++ // Switch to using fast clocks for thread cpu time if ++ // the clock_getres() returns 0 error code. ++ // Note, that some kernels may support the current thread ++ // clock (CLOCK_THREAD_CPUTIME_ID) but not the clocks ++ // returned by the pthread_getcpuclockid(). ++ // If the fast Posix clocks are supported then the clock_getres() ++ // must return at least tp.tv_sec == 0 which means a resolution ++ // better than 1 sec. This is extra check for reliability. + ++ if (pthread_getcpuclockid_func && ++ pthread_getcpuclockid_func(_main_thread, &clockid) == 0 && ++ clock_getres(clockid, &tp) == 0 && tp.tv_sec == 0) { ++ _getcpuclockid = pthread_getcpuclockid_func; ++ } ++} ++ + #ifdef __APPLE__ + + jlong os::javaTimeNanos() { +@@ -2213,6 +2236,8 @@ jint os::init_2(void) { + DEBUG_ONLY(os::set_mutex_init_done();) + + os::Posix::init_2(); ++ ++ Bsd::fast_thread_clock_init(); + + if (PosixSignals::init() == JNI_ERR) { + return JNI_ERR;