From owner-svn-ports-all@freebsd.org Mon May 29 04:16:02 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 32635D864C0; Mon, 29 May 2017 04:16:02 +0000 (UTC) (envelope-from glewis@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C4E5519DD; Mon, 29 May 2017 04:16:01 +0000 (UTC) (envelope-from glewis@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4T4G0hd075603; Mon, 29 May 2017 04:16:00 GMT (envelope-from glewis@FreeBSD.org) Received: (from glewis@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4T4G0fo075600; Mon, 29 May 2017 04:16:00 GMT (envelope-from glewis@FreeBSD.org) Message-Id: <201705290416.v4T4G0fo075600@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: glewis set sender to glewis@FreeBSD.org using -f From: Greg Lewis Date: Mon, 29 May 2017 04:16:00 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r441965 - in head/java/openjdk7: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 May 2017 04:16:02 -0000 Author: glewis Date: Mon May 29 04:16:00 2017 New Revision: 441965 URL: https://svnweb.freebsd.org/changeset/ports/441965 Log: . Update to 7u131. Deleted: head/java/openjdk7/files/patch-hotspot_src_os_bsd_vm_os__bsd.cpp head/java/openjdk7/files/patch-hotspot_src_os_bsd_vm_os__bsd.hpp Modified: head/java/openjdk7/Makefile head/java/openjdk7/distinfo head/java/openjdk7/files/patch-bsd Modified: head/java/openjdk7/Makefile ============================================================================== --- head/java/openjdk7/Makefile Sun May 28 23:22:54 2017 (r441964) +++ head/java/openjdk7/Makefile Mon May 29 04:16:00 2017 (r441965) @@ -3,7 +3,6 @@ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${PORT_MINOR_VERSION}.${PORT_BUILD_NUMBER} -PORTREVISION= 4 PORTEPOCH= 1 CATEGORIES= java devel MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}u${JDK_MINOR_VERSION}/promoted/b${JDK_BUILD_NUMBER}/ \ @@ -31,7 +30,9 @@ PATCHFILES= patch-7u45-b30.xz \ patch-7u91-b02.xz \ patch-7u95-b00.xz \ patch-7u101-b00.xz \ - patch-7u111-b01.xz + patch-7u111-b01.xz \ + patch-7u121-b00.xz \ + patch-7u131-b00.xz MAINTAINER?= glewis@FreeBSD.org COMMENT?= Java Development Kit 7 @@ -74,8 +75,8 @@ JAVAVMS_COMMENT+= JRE INSTALLDIR= ${PREFIX}/${PORTNAME}${JDK_MAJOR_VERSION}-jre .endif -PORT_MINOR_VERSION= 111 -PORT_BUILD_NUMBER= 01 +PORT_MINOR_VERSION= 131 +PORT_BUILD_NUMBER= 00 JDK_MAJOR_VERSION= 7 JDK_MINOR_VERSION= 40 JDK_BUILD_NUMBER= 43 Modified: head/java/openjdk7/distinfo ============================================================================== --- head/java/openjdk7/distinfo Sun May 28 23:22:54 2017 (r441964) +++ head/java/openjdk7/distinfo Mon May 29 04:16:00 2017 (r441965) @@ -1,4 +1,4 @@ -TIMESTAMP = 1472019396 +TIMESTAMP = 1496029291 SHA256 (openjdk-7u40-fcs-src-b43-26_aug_2013.zip) = 00f8ea561876cbcad174ba3ca7a9ae10b50df46a782ac64c2ac57ac357b50596 SIZE (openjdk-7u40-fcs-src-b43-26_aug_2013.zip) = 104575196 SHA256 (apache-ant-1.9.7-bin.zip) = b28c5ea0b5ea90bb4ad6bab229b6a56ac4461760a251a12567803a69259cd9de @@ -29,3 +29,7 @@ SHA256 (patch-7u101-b00.xz) = 8406d9f453 SIZE (patch-7u101-b00.xz) = 121752 SHA256 (patch-7u111-b01.xz) = d46ffd30a6fa6d8ce40231e6dadcabf491a347e2afea87302f38bab5e2bee523 SIZE (patch-7u111-b01.xz) = 273552 +SHA256 (patch-7u121-b00.xz) = e8cba92ab639210471db536fb316593eef300d67bbf36146922eef0a41b6e86b +SIZE (patch-7u121-b00.xz) = 670484 +SHA256 (patch-7u131-b00.xz) = 5c7b4f9be1d7bc3336ba19c288c882ff5cbd1b1b0ee403f84229cd8807452024 +SIZE (patch-7u131-b00.xz) = 769172 Modified: head/java/openjdk7/files/patch-bsd ============================================================================== --- head/java/openjdk7/files/patch-bsd Sun May 28 23:22:54 2017 (r441964) +++ head/java/openjdk7/files/patch-bsd Mon May 29 04:16:00 2017 (r441965) @@ -1,5 +1,5 @@ ---- ./.hgtags Wed Jul 20 04:05:01 2016 +0100 -+++ ./.hgtags Sat Aug 20 11:56:17 2016 -0700 +--- ./.hgtags Fri Oct 28 03:35:31 2016 +0100 ++++ ./.hgtags Sun May 21 11:12:34 2017 -0700 @@ -123,6 +123,7 @@ 2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146 3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01 @@ -8,13 +8,13 @@ 34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02 bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03 f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04 -@@ -605,3 +606,4 @@ - 251bb2a6d5cfbb76c0f4bdfecea4ca9c8af21558 jdk7u99-b00 - 12491db47c7ccffcc3e881df68f4c2f727b44e5d jdk7u101-b00 +@@ -607,3 +608,4 @@ bade1889699bab14082e84de3b40901964b52483 jdk7u111-b00 -+9b95c1ef81fe7bb010a6938d1cb97843b9a1fc68 jdk7u111-b01 ---- ./corba/.hgtags Wed Jul 20 04:05:02 2016 +0100 -+++ ./corba/.hgtags Sat Aug 20 11:56:18 2016 -0700 + 9b95c1ef81fe7bb010a6938d1cb97843b9a1fc68 jdk7u111-b01 + 974935f4e21dae1170b5247a8af362617d105e1c jdk7u121-b00 ++259e6ca7faf17e2b96fb0733f30e62327a7acdfa jdk7u131-b00 +--- ./corba/.hgtags Fri Oct 28 03:35:33 2016 +0100 ++++ ./corba/.hgtags Sun May 21 11:12:35 2017 -0700 @@ -123,6 +123,7 @@ 770227a4087e4e401fe87ccd19738440111c3948 jdk7-b146 36f0efbc66ef8ace3cca8aa8d0c88f3334080f8a jdk7u1-b01 @@ -23,13 +23,13 @@ 9515a2d034b4727c11aeea36354a549fbc469c4f jdk7u1-b02 dd71cb354c573c1addcda269a7dd9144bfce9587 jdk7u1-b03 eaee830124aa453627591d8f9eccb39d7e040876 jdk7u1-b04 -@@ -607,3 +608,4 @@ - adda687205a9a40573fdb538240a5699fdc7dbd6 jdk7u99-b00 - 9c164195bcc97da6c6567e6e6d55ea349f1c583d jdk7u101-b00 +@@ -609,3 +610,4 @@ c1def4cc27fb92914168a5f65658eba4a1754dfe jdk7u111-b00 -+36715cc029596f86e977d486e547f62bb07eed74 jdk7u111-b01 ---- ./hotspot/.hgtags Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/.hgtags Sat Aug 20 11:56:24 2016 -0700 + 36715cc029596f86e977d486e547f62bb07eed74 jdk7u111-b01 + ad3a33a23c69608ae140d4564d045b62533f45a3 jdk7u121-b00 ++d93d13bcb01d7b635d0e021877e1102e34bae8fb jdk7u131-b00 +--- ./hotspot/.hgtags Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/.hgtags Sun May 21 11:12:48 2017 -0700 @@ -182,6 +182,7 @@ 38fa55e5e79232d48f1bb8cf27d88bc094c9375a hs21-b16 81d815b05abb564aa1f4100ae13491c949b9a07e jdk7-b147 @@ -38,13 +38,13 @@ 9b0ca45cd756d538c4c30afab280a91868eee1a5 jdk7u2-b01 0cc8a70952c368e06de2adab1f2649a408f5e577 jdk8-b01 31e253c1da429124bb87570ab095d9bc89850d0a jdk8-b02 -@@ -839,3 +840,4 @@ - 631da593499ee184ea8efb2bc5491e0d99ac636d jdk7u99-b00 - 6e42747134be8a4a366d337da1fc84a847ad8381 jdk7u101-b00 +@@ -841,3 +842,4 @@ 14d0f4da4a74897fc3274f8f549f41544bb4625a jdk7u111-b00 -+9efa3fae3c278a7f48badec775d7f9b2d5320b6d jdk7u111-b01 ---- ./hotspot/agent/src/os/bsd/ps_proc.c Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/agent/src/os/bsd/ps_proc.c Sat Aug 20 11:56:24 2016 -0700 + 9efa3fae3c278a7f48badec775d7f9b2d5320b6d jdk7u111-b01 + 17b40d99ea3665de2bfffe163b68f2dfcf675cba jdk7u121-b00 ++95e4ea3d479ebdab9d78725776b6b11d4add6b0e jdk7u131-b00 +--- ./hotspot/agent/src/os/bsd/ps_proc.c Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/agent/src/os/bsd/ps_proc.c Sun May 21 11:12:48 2017 -0700 @@ -131,7 +131,7 @@ static bool ptrace_continue(pid_t pid, int signal) { @@ -54,8 +54,8 @@ print_debug("ptrace(PTRACE_CONT, ..) failed for %d\n", pid); return false; } ---- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java Sun May 21 11:12:48 2017 -0700 @@ -33,6 +33,7 @@ import sun.jvm.hotspot.debugger.remote.*; import sun.jvm.hotspot.debugger.windbg.*; @@ -64,8 +64,8 @@ import sun.jvm.hotspot.memory.*; import sun.jvm.hotspot.oops.*; import sun.jvm.hotspot.runtime.*; ---- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java Sun May 21 11:12:48 2017 -0700 @@ -35,6 +35,7 @@ import sun.jvm.hotspot.debugger.windbg.*; import sun.jvm.hotspot.debugger.linux.*; @@ -74,8 +74,8 @@ import sun.jvm.hotspot.debugger.remote.*; import sun.jvm.hotspot.livejvm.*; import sun.jvm.hotspot.memory.*; ---- ./hotspot/make/bsd/Makefile Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/Makefile Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/Makefile Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/Makefile Sun May 21 11:12:48 2017 -0700 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. @@ -92,7 +92,7 @@ BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) #------------------------------------------------------------------------------- -@@ -337,9 +339,11 @@ +@@ -349,9 +351,11 @@ # Doc target. This is the same for all build options. # Hence create a docs directory beside ...$(ARCH)_[...] @@ -105,8 +105,8 @@ # Synonyms for win32-like targets. compiler2: jvmg product ---- ./hotspot/make/bsd/makefiles/build_vm_def.sh Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/build_vm_def.sh Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Sun May 21 11:12:48 2017 -0700 @@ -1,12 +1,28 @@ #!/bin/sh @@ -142,8 +142,8 @@ + if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";" + }' | sort -u ;; +esac ---- ./hotspot/make/bsd/makefiles/buildtree.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/buildtree.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/buildtree.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/buildtree.make Sun May 21 11:12:48 2017 -0700 @@ -255,6 +255,16 @@ echo "$(call gamma-path,commonsrc,os/posix/vm)"; \ [ -n "$(CFLAGS_BROWSE)" ] && \ @@ -170,8 +170,8 @@ .dbxrc: $(BUILDTREE_MAKE) @echo Creating $@ ... ---- ./hotspot/make/bsd/makefiles/gcc.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/gcc.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/gcc.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/gcc.make Sun May 21 11:12:48 2017 -0700 @@ -117,7 +117,10 @@ CFLAGS += -fno-rtti CFLAGS += -fno-exceptions @@ -197,8 +197,8 @@ endif # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp. ---- ./hotspot/make/bsd/makefiles/jsig.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/jsig.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/jsig.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/jsig.make Sun May 21 11:12:48 2017 -0700 @@ -36,9 +36,16 @@ LIBJSIG_G = lib$(JSIG_G).so endif @@ -251,8 +251,8 @@ $(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done" .PHONY: install_jsig ---- ./hotspot/make/bsd/makefiles/launcher.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/launcher.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/launcher.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/launcher.make Sun May 21 11:12:48 2017 -0700 @@ -50,7 +50,7 @@ LIBS_LAUNCHER += $(STATIC_STDCXX) $(LIBS) else @@ -262,15 +262,15 @@ # The gamma launcher runs the JDK from $JAVA_HOME, overriding the JVM with a # freshly built JVM at ./libjvm.{so|dylib}. This is accomplished by setting ---- ./hotspot/make/bsd/makefiles/mapfile-vers-product Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/mapfile-vers-product Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Sun May 21 11:12:48 2017 -0700 @@ -19,237 +19,248 @@ # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA # or visit www.oracle.com if you need additional information or have any # questions. +-# +# # --# -# Only used for OSX/Darwin builds # Define public interface. @@ -278,6 +278,13 @@ - _JNI_CreateJavaVM - _JNI_GetCreatedJavaVMs - _JNI_GetDefaultJavaVMInitArgs ++ ++SUNWprivate_1.1 { ++ global: ++ # JNI ++ JNI_CreateJavaVM; ++ JNI_GetCreatedJavaVMs; ++ JNI_GetDefaultJavaVMInitArgs; - # _JVM - _JVM_Accept @@ -490,13 +497,6 @@ - _JVM_Write - _JVM_Yield - _JVM_handle_bsd_signal -+SUNWprivate_1.1 { -+ global: -+ # JNI -+ JNI_CreateJavaVM; -+ JNI_GetCreatedJavaVMs; -+ JNI_GetDefaultJavaVMInitArgs; -+ + # JVM + JVM_Accept; + JVM_ActiveProcessorCount; @@ -730,15 +730,16 @@ # This is for Forte Analyzer profiling support. - _AsyncGetCallTrace + AsyncGetCallTrace; - -- # INSERT VTABLE SYMBOLS HERE ++ + # INSERT VTABLE SYMBOLS HERE +- # INSERT VTABLE SYMBOLS HERE +- + local: + *; +}; ---- ./hotspot/make/bsd/makefiles/ppc.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/ppc.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/ppc.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/ppc.make Sun May 21 11:12:48 2017 -0700 @@ -28,3 +28,6 @@ # Must also specify if CPU is big endian CFLAGS += -DVM_BIG_ENDIAN @@ -746,8 +747,8 @@ +ifdef E500V2 +ASFLAGS += -Wa,-mspe -Wa,--defsym -Wa,E500V2=1 +endif ---- ./hotspot/make/bsd/makefiles/saproc.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/bsd/makefiles/saproc.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/bsd/makefiles/saproc.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/bsd/makefiles/saproc.make Sun May 21 11:12:48 2017 -0700 @@ -36,6 +36,11 @@ LIBSAPROC_G = lib$(SAPROC_G).so endif @@ -804,8 +805,8 @@ cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \ fi ---- ./hotspot/make/solaris/makefiles/defs.make Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/make/solaris/makefiles/defs.make Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/make/solaris/makefiles/defs.make Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/make/solaris/makefiles/defs.make Sun May 21 11:12:48 2017 -0700 @@ -221,8 +221,8 @@ endif ifeq ($(JVM_VARIANT_CLIENT),true) @@ -817,8 +818,8 @@ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX) ifeq ($(ARCH_DATA_MODEL),32) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX) ---- ./hotspot/src/cpu/sparc/vm/globals_sparc.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/cpu/sparc/vm/globals_sparc.hpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/cpu/sparc/vm/globals_sparc.hpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/cpu/sparc/vm/globals_sparc.hpp Sun May 21 11:12:48 2017 -0700 @@ -71,7 +71,11 @@ define_pd_global(bool, RewriteBytecodes, true); define_pd_global(bool, RewriteFrequentPairs, true); @@ -832,7 +833,7 @@ // GC Ergo Flags define_pd_global(intx, CMSYoungGenPerWorker, 16*M); // default max size of CMS young gen, per GC worker thread --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Sat Aug 20 11:56:24 2016 -0700 ++++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Sun May 21 11:12:48 2017 -0700 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. @@ -880,9 +881,17 @@ + return false; +} + ---- ./hotspot/src/os/bsd/vm/os_bsd.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Sat Aug 20 11:56:24 2016 -0700 -@@ -187,6 +187,8 @@ +--- ./hotspot/src/os/bsd/vm/os_bsd.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Sun May 21 11:12:48 2017 -0700 +@@ -163,6 +163,7 @@ + #endif + pthread_t os::Bsd::_main_thread; + int os::Bsd::_page_size = -1; ++pthread_condattr_t os::Bsd::_condattr[1]; + #ifndef _ALLBSD_SOURCE + bool os::Bsd::_is_floating_stack = false; + bool os::Bsd::_is_NPTL = false; +@@ -187,6 +188,8 @@ static int SR_signum = SIGUSR2; sigset_t SR_sigset; @@ -891,7 +900,7 @@ //////////////////////////////////////////////////////////////////////////////// // utility functions -@@ -355,7 +357,13 @@ +@@ -355,7 +358,13 @@ * since it returns a 64 bit value) */ mib[0] = CTL_HW; @@ -905,7 +914,28 @@ len = sizeof(mem_val); if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1) { assert(len == sizeof(mem_val), "unexpected data size"); -@@ -1848,9 +1856,15 @@ +@@ -1625,7 +1634,10 @@ + ::clock_gettime(CLOCK_MONOTONIC, &tp) == 0) { + // yes, monotonic clock is supported + _clock_gettime = ::clock_gettime; +- } ++ return; ++ } ++ warning("No monotonic clock was available - timed services may " \ ++ "be adversely affected if the time-of-day clock changes"); + } + #else + void os::Bsd::clock_init() { +@@ -1711,7 +1723,7 @@ + jlong os::javaTimeNanos() { + if (Bsd::supports_monotonic_clock()) { + struct timespec tp; +- int status = Bsd::clock_gettime(CLOCK_MONOTONIC, &tp); ++ int status = ::clock_gettime(CLOCK_MONOTONIC, &tp); + assert(status == 0, "gettime error"); + jlong result = jlong(tp.tv_sec) * (1000 * 1000 * 1000) + jlong(tp.tv_nsec); + return result; +@@ -1848,9 +1860,15 @@ return n; } @@ -921,7 +951,7 @@ #else return (intx)::pthread_self(); #endif -@@ -2401,14 +2415,14 @@ +@@ -2401,14 +2419,14 @@ } void os::print_os_info_brief(outputStream* st) { @@ -938,7 +968,7 @@ os::Posix::print_uname_info(st); -@@ -2417,10 +2431,6 @@ +@@ -2417,10 +2435,6 @@ os::Posix::print_load_average(st); } @@ -949,7 +979,7 @@ void os::print_memory_info(outputStream* st) { st->print("Memory:"); -@@ -2437,6 +2447,7 @@ +@@ -2437,6 +2451,7 @@ st->print("(" UINT64_FORMAT "k free)", os::available_memory() >> 10); #ifndef _ALLBSD_SOURCE @@ -957,7 +987,7 @@ st->print(", swap " UINT64_FORMAT "k", ((jlong)si.totalswap * si.mem_unit) >> 10); st->print("(" UINT64_FORMAT "k free)", -@@ -2444,12 +2455,22 @@ +@@ -2444,12 +2459,22 @@ #endif st->cr(); @@ -980,7 +1010,7 @@ // Taken from /usr/include/bits/siginfo.h Supposed to be architecture specific // but they're the same for all the bsd arch that we support // and they're the same for solaris but there's no common place to put this. -@@ -2596,6 +2617,25 @@ +@@ -2596,6 +2621,25 @@ assert(len < buflen, "Ran out of buffer space"); jrelib_p = buf + len; @@ -1006,7 +1036,7 @@ // Add the appropriate library subdir snprintf(jrelib_p, buflen-len, "/jre/lib"); if (0 != access(buf, F_OK)) { -@@ -2625,6 +2665,7 @@ +@@ -2625,6 +2669,7 @@ if (rp == NULL) return; } @@ -1014,7 +1044,7 @@ } } } -@@ -2728,10 +2769,14 @@ +@@ -2728,10 +2773,14 @@ bool timedwait(unsigned int sec, int nsec); private: jlong currenttime() const; @@ -1030,7 +1060,7 @@ SEM_INIT(_semaphore, 0); } -@@ -2796,7 +2841,7 @@ +@@ -2796,7 +2845,7 @@ bool Semaphore::timedwait(unsigned int sec, int nsec) { struct timespec ts; @@ -1039,7 +1069,7 @@ while (1) { int result = sem_timedwait(&_semaphore, &ts); -@@ -3017,7 +3062,11 @@ +@@ -3017,7 +3066,11 @@ } void os::pd_free_memory(char *addr, size_t bytes, size_t alignment_hint) { @@ -1051,7 +1081,7 @@ } void os::numa_make_global(char *addr, size_t bytes) { -@@ -3864,6 +3913,7 @@ +@@ -3864,6 +3917,7 @@ return OS_OK; #elif defined(__FreeBSD__) int ret = pthread_setprio(thread->osthread()->pthread_id(), newpri); @@ -1059,9 +1089,239 @@ #elif defined(__APPLE__) || defined(__NetBSD__) struct sched_param sp; int policy; ---- ./hotspot/src/os/bsd/vm/os_bsd.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os/bsd/vm/os_bsd.hpp Sat Aug 20 11:56:24 2016 -0700 -@@ -103,6 +103,12 @@ +@@ -4718,6 +4772,25 @@ + Bsd::clock_init(); + initial_time_count = os::elapsed_counter(); + ++ // pthread_condattr initialization for monotonic clock ++ int status; ++ pthread_condattr_t* _condattr = os::Bsd::condAttr(); ++ if ((status = pthread_condattr_init(_condattr)) != 0) { ++ fatal(err_msg("pthread_condattr_init: %s", strerror(status))); ++ } ++ // Only set the clock if CLOCK_MONOTONIC is available ++ if (Bsd::supports_monotonic_clock()) { ++ if ((status = pthread_condattr_setclock(_condattr, CLOCK_MONOTONIC)) != 0) { ++ if (status == EINVAL) { ++ warning("Unable to use monotonic clock with relative timed-waits" \ ++ " - changes to the time-of-day clock may have adverse affects"); ++ } else { ++ fatal(err_msg("pthread_condattr_setclock: %s", strerror(status))); ++ } ++ } ++ } ++ // else it defaults to CLOCK_REALTIME ++ + #ifdef __APPLE__ + // XXXDARWIN + // Work around the unaligned VM callbacks in hotspot's +@@ -5638,21 +5711,36 @@ + + static struct timespec* compute_abstime(struct timespec* abstime, jlong millis) { + if (millis < 0) millis = 0; +- struct timeval now; +- int status = gettimeofday(&now, NULL); +- assert(status == 0, "gettimeofday"); ++ + jlong seconds = millis / 1000; + millis %= 1000; + if (seconds > 50000000) { // see man cond_timedwait(3T) + seconds = 50000000; + } +- abstime->tv_sec = now.tv_sec + seconds; +- long usec = now.tv_usec + millis * 1000; +- if (usec >= 1000000) { +- abstime->tv_sec += 1; +- usec -= 1000000; +- } +- abstime->tv_nsec = usec * 1000; ++ ++ if (os::Bsd::supports_monotonic_clock()) { ++ struct timespec now; ++ int status = ::clock_gettime(CLOCK_MONOTONIC, &now); ++ assert_status(status == 0, status, "clock_gettime"); ++ abstime->tv_sec = now.tv_sec + seconds; ++ long nanos = now.tv_nsec + millis * NANOSECS_PER_MILLISEC; ++ if (nanos >= NANOSECS_PER_SEC) { ++ abstime->tv_sec += 1; ++ nanos -= NANOSECS_PER_SEC; ++ } ++ abstime->tv_nsec = nanos; ++ } else { ++ struct timeval now; ++ int status = gettimeofday(&now, NULL); ++ assert(status == 0, "gettimeofday"); ++ abstime->tv_sec = now.tv_sec + seconds; ++ long usec = now.tv_usec + millis * 1000; ++ if (usec >= 1000000) { ++ abstime->tv_sec += 1; ++ usec -= 1000000; ++ } ++ abstime->tv_nsec = usec * 1000; ++ } + return abstime; + } + +@@ -5744,7 +5832,7 @@ + status = os::Bsd::safe_cond_timedwait(_cond, _mutex, &abst); + if (status != 0 && WorkAroundNPTLTimedWaitHang) { + pthread_cond_destroy (_cond); +- pthread_cond_init (_cond, NULL) ; ++ pthread_cond_init (_cond, os::Bsd::condAttr()) ; + } + assert_status(status == 0 || status == EINTR || + status == ETIMEDOUT, +@@ -5845,32 +5933,50 @@ + + static void unpackTime(struct timespec* absTime, bool isAbsolute, jlong time) { + assert (time > 0, "convertTime"); +- +- struct timeval now; +- int status = gettimeofday(&now, NULL); +- assert(status == 0, "gettimeofday"); +- +- time_t max_secs = now.tv_sec + MAX_SECS; +- +- if (isAbsolute) { +- jlong secs = time / 1000; +- if (secs > max_secs) { +- absTime->tv_sec = max_secs; ++ time_t max_secs = 0; ++ ++ if (!os::Bsd::supports_monotonic_clock() || isAbsolute) { ++ struct timeval now; ++ int status = gettimeofday(&now, NULL); ++ assert(status == 0, "gettimeofday"); ++ ++ max_secs = now.tv_sec + MAX_SECS; ++ ++ if (isAbsolute) { ++ jlong secs = time / 1000; ++ if (secs > max_secs) { ++ absTime->tv_sec = max_secs; ++ } else { ++ absTime->tv_sec = secs; ++ } ++ absTime->tv_nsec = (time % 1000) * NANOSECS_PER_MILLISEC; ++ } else { ++ jlong secs = time / NANOSECS_PER_SEC; ++ if (secs >= MAX_SECS) { ++ absTime->tv_sec = max_secs; ++ absTime->tv_nsec = 0; ++ } else { ++ absTime->tv_sec = now.tv_sec + secs; ++ absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_usec*1000; ++ if (absTime->tv_nsec >= NANOSECS_PER_SEC) { ++ absTime->tv_nsec -= NANOSECS_PER_SEC; ++ ++absTime->tv_sec; // note: this must be <= max_secs ++ } ++ } + } +- else { +- absTime->tv_sec = secs; +- } +- absTime->tv_nsec = (time % 1000) * NANOSECS_PER_MILLISEC; +- } +- else { ++ } else { ++ // must be relative using monotonic clock ++ struct timespec now; ++ int status = ::clock_gettime(CLOCK_MONOTONIC, &now); ++ assert_status(status == 0, status, "clock_gettime"); ++ max_secs = now.tv_sec + MAX_SECS; + jlong secs = time / NANOSECS_PER_SEC; + if (secs >= MAX_SECS) { + absTime->tv_sec = max_secs; + absTime->tv_nsec = 0; +- } +- else { ++ } else { + absTime->tv_sec = now.tv_sec + secs; +- absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_usec*1000; ++ absTime->tv_nsec = (time % NANOSECS_PER_SEC) + now.tv_nsec; + if (absTime->tv_nsec >= NANOSECS_PER_SEC) { + absTime->tv_nsec -= NANOSECS_PER_SEC; + ++absTime->tv_sec; // note: this must be <= max_secs +@@ -5950,15 +6056,19 @@ + jt->set_suspend_equivalent(); + // cleared by handle_special_suspend_equivalent_condition() or java_suspend_self() + ++ assert(_cur_index == -1, "invariant"); + if (time == 0) { +- status = pthread_cond_wait (_cond, _mutex) ; ++ _cur_index = REL_INDEX; // arbitrary choice when not timed ++ status = pthread_cond_wait (&_cond[_cur_index], _mutex) ; + } else { +- status = os::Bsd::safe_cond_timedwait (_cond, _mutex, &absTime) ; ++ _cur_index = isAbsolute ? ABS_INDEX : REL_INDEX; ++ status = os::Bsd::safe_cond_timedwait (&_cond[_cur_index], _mutex, &absTime) ; + if (status != 0 && WorkAroundNPTLTimedWaitHang) { +- pthread_cond_destroy (_cond) ; +- pthread_cond_init (_cond, NULL); ++ pthread_cond_destroy (&_cond[_cur_index]) ; ++ pthread_cond_init (&_cond[_cur_index], isAbsolute ? NULL : os::Bsd::condAttr()); + } + } ++ _cur_index = -1; + assert_status(status == 0 || status == EINTR || + status == ETIMEDOUT, + status, "cond_timedwait"); +@@ -5987,17 +6097,26 @@ + s = _counter; + _counter = 1; + if (s < 1) { +- if (WorkAroundNPTLTimedWaitHang) { +- status = pthread_cond_signal (_cond) ; +- assert (status == 0, "invariant") ; ++ // thread might be parked ++ if (_cur_index != -1) { ++ // thread is definitely parked ++ if (WorkAroundNPTLTimedWaitHang) { ++ status = pthread_cond_signal (&_cond[_cur_index]); ++ assert (status == 0, "invariant"); + status = pthread_mutex_unlock(_mutex); +- assert (status == 0, "invariant") ; +- } else { ++ assert (status == 0, "invariant"); ++ } else { ++ // must capture correct index before unlocking ++ int index = _cur_index; + status = pthread_mutex_unlock(_mutex); +- assert (status == 0, "invariant") ; +- status = pthread_cond_signal (_cond) ; +- assert (status == 0, "invariant") ; +- } ++ assert (status == 0, "invariant"); ++ status = pthread_cond_signal (&_cond[index]); ++ assert (status == 0, "invariant"); ++ } ++ } else { ++ pthread_mutex_unlock(_mutex); ++ assert (status == 0, "invariant") ; ++ } + } else { + pthread_mutex_unlock(_mutex); + assert (status == 0, "invariant") ; +--- ./hotspot/src/os/bsd/vm/os_bsd.hpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os/bsd/vm/os_bsd.hpp Sun May 21 11:12:48 2017 -0700 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -27,6 +27,9 @@ + + // Bsd_OS defines the interface to Bsd operating systems + ++// Information about the protection of the page at address '0' on this os. ++static bool zero_page_read_protected() { return true; } ++ + /* pthread_getattr_np comes with BsdThreads-0.9-7 on RedHat 7.1 */ + typedef int (*pthread_getattr_func_type) (pthread_t, pthread_attr_t *); + +@@ -103,6 +106,12 @@ static bool hugetlbfs_sanity_check(bool warn, size_t page_size); @@ -1074,8 +1334,69 @@ public: static void init_thread_fpu_state(); ---- ./hotspot/src/os/bsd/vm/os_bsd.inline.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os/bsd/vm/os_bsd.inline.hpp Sat Aug 20 11:56:24 2016 -0700 +@@ -222,6 +231,13 @@ + static jlong fast_thread_cpu_time(clockid_t clockid); + #endif + ++ // pthread_cond clock suppport ++ private: ++ static pthread_condattr_t _condattr[1]; ++ ++ public: ++ static pthread_condattr_t* condAttr() { return _condattr; } ++ + // Stack repair handling + + // none present +@@ -287,7 +303,7 @@ + public: + PlatformEvent() { + int status; +- status = pthread_cond_init (_cond, NULL); ++ status = pthread_cond_init (_cond, os::Bsd::condAttr()); + assert_status(status == 0, status, "cond_init"); + status = pthread_mutex_init (_mutex, NULL); + assert_status(status == 0, status, "mutex_init"); +@@ -302,14 +318,19 @@ + void park () ; + void unpark () ; + int TryPark () ; +- int park (jlong millis) ; ++ int park (jlong millis) ; // relative timed-wait only + void SetAssociation (Thread * a) { _Assoc = a ; } + }; + + class PlatformParker : public CHeapObj { + protected: ++ enum { ++ REL_INDEX = 0, ++ ABS_INDEX = 1 ++ }; ++ int _cur_index; // which cond is in use: -1, 0, 1 + pthread_mutex_t _mutex [1] ; +- pthread_cond_t _cond [1] ; ++ pthread_cond_t _cond [2] ; // one for relative times and one for abs. + + public: // TODO-FIXME: make dtor private + ~PlatformParker() { guarantee (0, "invariant") ; } +@@ -317,10 +338,13 @@ + public: + PlatformParker() { + int status; +- status = pthread_cond_init (_cond, NULL); +- assert_status(status == 0, status, "cond_init"); ++ status = pthread_cond_init (&_cond[REL_INDEX], os::Bsd::condAttr()); ++ assert_status(status == 0, status, "cond_init rel"); ++ status = pthread_cond_init (&_cond[ABS_INDEX], NULL); ++ assert_status(status == 0, status, "cond_init abs"); + status = pthread_mutex_init (_mutex, NULL); + assert_status(status == 0, status, "mutex_init"); ++ _cur_index = -1; // mark as unused + } + }; + +--- ./hotspot/src/os/bsd/vm/os_bsd.inline.hpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os/bsd/vm/os_bsd.inline.hpp Sun May 21 11:12:48 2017 -0700 @@ -31,10 +31,22 @@ # include "atomic_bsd_x86.inline.hpp" # include "orderAccess_bsd_x86.inline.hpp" @@ -1099,8 +1420,8 @@ // System includes ---- ./hotspot/src/os/bsd/vm/thread_bsd.inline.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os/bsd/vm/thread_bsd.inline.hpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/os/bsd/vm/thread_bsd.inline.hpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os/bsd/vm/thread_bsd.inline.hpp Sun May 21 11:12:48 2017 -0700 @@ -34,11 +34,26 @@ # include "orderAccess_bsd_x86.inline.hpp" # include "prefetch_bsd_x86.inline.hpp" @@ -1128,9 +1449,9 @@ // Contains inlined functions for class Thread and ThreadLocalStorage ---- ./hotspot/src/os/posix/vm/os_posix.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os/posix/vm/os_posix.cpp Sat Aug 20 11:56:24 2016 -0700 -@@ -175,11 +175,19 @@ +--- ./hotspot/src/os/posix/vm/os_posix.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os/posix/vm/os_posix.cpp Sun May 21 11:12:48 2017 -0700 +@@ -183,11 +183,19 @@ if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity"); else st->print("%d", rlim.rlim_cur); @@ -1150,8 +1471,8 @@ } void os::Posix::print_uname_info(outputStream* st) { ---- ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Sun May 21 11:12:48 2017 -0700 @@ -945,7 +945,7 @@ if (rslt != 0) fatal(err_msg("pthread_stackseg_np failed with err = %d", rslt)); @@ -1161,8 +1482,8 @@ *size = ss.ss_size; #elif defined(_ALLBSD_SOURCE) pthread_attr_t attr; ---- ./hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Sun May 21 11:12:48 2017 -0700 @@ -24,7 +24,7 @@ */ @@ -1172,28 +1493,8 @@ # include /* For pthread_attr_get_np */ #endif ---- ./hotspot/src/share/vm/code/relocInfo.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/code/relocInfo.hpp Sat Aug 20 11:56:24 2016 -0700 -@@ -371,7 +371,7 @@ - // "immediate" in the prefix header word itself. This optimization - // is invisible outside this module.) - -- inline friend relocInfo prefix_relocInfo(int datalen = 0); -+ inline friend relocInfo prefix_relocInfo(int datalen); - - protected: - // an immediate relocInfo optimizes a prefix with one 10-bit unsigned value -@@ -466,7 +466,7 @@ - return relocInfo(relocInfo::none, relocInfo::offset_limit() - relocInfo::offset_unit); - } - --inline relocInfo prefix_relocInfo(int datalen) { -+inline relocInfo prefix_relocInfo(int datalen = 0) { - assert(relocInfo::fits_into_immediate(datalen), "datalen in limits"); - return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen); - } ---- ./hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp Sun May 21 11:12:48 2017 -0700 @@ -111,7 +111,7 @@ if (e.should_commit()) { e.set_gcId(_shared_gc_info.id()); @@ -1203,9 +1504,81 @@ e.commit(); } } ---- ./hotspot/src/share/vm/runtime/atomic.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/runtime/atomic.cpp Sat Aug 20 11:56:24 2016 -0700 -@@ -54,6 +54,12 @@ +--- ./hotspot/src/share/vm/opto/lcm.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/opto/lcm.cpp Sun May 21 11:12:48 2017 -0700 +@@ -57,25 +57,40 @@ + // Check whether val is not-null-decoded compressed oop, + // i.e. will grab into the base of the heap if it represents NULL. + static bool accesses_heap_base_zone(Node *val) { +- if (UseCompressedOops && Universe::narrow_oop_base() > 0) { ++ if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops. + if (val && val->is_Mach()) { +- if (val->as_Mach()->ideal_Opcode() == Op_DecodeN) { +- // This assumes all Decodes with TypePtr::NotNull are matched to nodes that +- // decode NULL to point to the heap base (Decode_NN). +- if (val->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull) { +- return true; +- } ++ if (val->as_Mach()->ideal_Opcode() == Op_DecodeN) { ++ // This assumes all Decodes with TypePtr::NotNull are matched to nodes that ++ // decode NULL to point to the heap base (Decode_NN). ++ if (val->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull) { ++ return true; + } +- // Must recognize load operation with Decode matched in memory operand. +- // We should not reach here, as os::zero_page_read_protected() +- // returns true everywhere exept for AIX. On AIX, no such memory operands +- // exist. +- NOT_AIX(Unimplemented()); + } ++ // Must recognize load operation with Decode matched in memory operand. ++ // We should not reach here exept for PPC/AIX, as os::zero_page_read_protected() ++ // returns true everywhere else. On PPC, no such memory operands ++ // exist, therefore we did not yet implement a check for such operands. ++ NOT_AIX(Unimplemented()); ++ } + } + return false; + } + ++static bool needs_explicit_null_check_for_read(Node *val) { ++ // On some OSes (AIX) the page at address 0 is only write protected. ++ // If so, only Store operations will trap. ++ if (os::zero_page_read_protected()) { ++ return false; // Implicit null check will work. ++ } ++ // Also a read accessing the base of a heap-based compressed heap will trap. ++ if (accesses_heap_base_zone(val) && // Hits the base zone page. ++ Universe::narrow_oop_use_implicit_null_checks()) { // Base zone page is protected. ++ return false; ++ } ++ ++ return true; ++} ++ + //------------------------------implicit_null_check---------------------------- + // Detect implicit-null-check opportunities. Basically, find NULL checks + // with suitable memory ops nearby. Use the memory op to do the NULL check. +@@ -233,14 +248,8 @@ + // On some OSes (AIX) the page at address 0 is only write protected. + // If so, only Store operations will trap. + // But a read accessing the base of a heap-based compressed heap will trap. +- if (!was_store && !os::zero_page_read_protected()) { +- if (!(accesses_heap_base_zone(val) && // Hits the base zone page. +- Universe::narrow_oop_use_implicit_null_checks())) { // Page is protected. +- continue; +- } else { +- tty->print("Found load accessing heap base on AIX\n"); +- Unimplemented(); +- } ++ if (!was_store && needs_explicit_null_check_for_read(val)) { ++ continue; + } + + // check if the offset is not too high for implicit exception +--- ./hotspot/src/share/vm/runtime/atomic.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/runtime/atomic.cpp Sun May 21 11:12:48 2017 -0700 +@@ -57,6 +57,12 @@ #ifdef TARGET_OS_ARCH_windows_x86 # include "atomic_windows_x86.inline.hpp" #endif @@ -1218,9 +1591,9 @@ #ifdef TARGET_OS_ARCH_linux_arm # include "atomic_linux_arm.inline.hpp" #endif ---- ./hotspot/src/share/vm/runtime/objectMonitor.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/runtime/objectMonitor.cpp Sat Aug 20 11:56:24 2016 -0700 -@@ -1744,7 +1744,7 @@ +--- ./hotspot/src/share/vm/runtime/objectMonitor.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/runtime/objectMonitor.cpp Sun May 21 11:12:48 2017 -0700 +@@ -1740,7 +1740,7 @@ } iterator->_notified = 1 ; Thread * Self = THREAD; @@ -1229,7 +1602,7 @@ ObjectWaiter * List = _EntryList ; if (List != NULL) { -@@ -1870,7 +1870,7 @@ +@@ -1866,7 +1866,7 @@ guarantee (iterator->_notified == 0, "invariant") ; iterator->_notified = 1 ; Thread * Self = THREAD; @@ -1238,9 +1611,9 @@ if (Policy != 4) { iterator->TState = ObjectWaiter::TS_ENTER ; } ---- ./hotspot/src/share/vm/runtime/os.cpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/runtime/os.cpp Sat Aug 20 11:56:24 2016 -0700 -@@ -399,13 +399,6 @@ +--- ./hotspot/src/share/vm/runtime/os.cpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/runtime/os.cpp Sun May 21 11:12:48 2017 -0700 +@@ -403,13 +403,6 @@ if (_native_java_library == NULL) { vm_exit_during_initialization("Unable to load native library", ebuf); } @@ -1254,8 +1627,8 @@ } static jboolean onLoaded = JNI_FALSE; if (onLoaded) { ---- ./hotspot/src/share/vm/runtime/os.hpp Wed Jul 20 04:05:08 2016 +0100 -+++ ./hotspot/src/share/vm/runtime/os.hpp Sat Aug 20 11:56:24 2016 -0700 +--- ./hotspot/src/share/vm/runtime/os.hpp Wed Jan 18 01:08:41 2017 +0000 ++++ ./hotspot/src/share/vm/runtime/os.hpp Sun May 21 11:12:48 2017 -0700 @@ -30,6 +30,9 @@ #include "runtime/extendedPC.hpp" #include "runtime/handles.hpp" @@ -1266,8 +1639,8 @@ #ifdef TARGET_OS_FAMILY_linux *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***