Update to aarch64-shenandoah-jdk8u202-b08.

Remove patches included upstream
- JDK-8211387/PR3559
- JDK-8207057/PR3613
- JDK-8165852/PR3468
- JDK-8073139/PR1758/RH1191652
- JDK-8044235
- JDK-8172850/RH1640127
- JDK-8209639/RH1640127
- JDK-8131048/PR3574/RH1498936
- JDK-8164920/PR3574/RH1498936
Re-generate patches
- JDK-8210647/RH1632174
This commit is contained in:
Andrew Hughes 2019-04-11 18:02:57 +01:00
parent 6acda86f24
commit 2f0cb2fea7
16 changed files with 20 additions and 3511 deletions

1
.gitignore vendored
View File

@ -133,3 +133,4 @@
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u201-b09.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u201-b09.tar.xz
/tapsets-icedtea-3.11.0.tar.xz /tapsets-icedtea-3.11.0.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u201-b13.tar.xz /aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u201-b13.tar.xz
/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u202-b08.tar.xz

View File

@ -226,7 +226,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global shenandoah_project aarch64-port %global shenandoah_project aarch64-port
%global shenandoah_repo jdk8u-shenandoah %global shenandoah_repo jdk8u-shenandoah
%global shenandoah_revision aarch64-shenandoah-jdk8u201-b13 %global shenandoah_revision aarch64-shenandoah-jdk8u202-b08
# Define old aarch64/jdk8u tree variables for compatibility # Define old aarch64/jdk8u tree variables for compatibility
%global project %{shenandoah_project} %global project %{shenandoah_project}
%global repo %{shenandoah_repo} %global repo %{shenandoah_repo}
@ -1155,8 +1155,6 @@ Patch561: jdk8197429-pr3546-rh1536622-increased_stack_guard_causes_segfaults_on_
Patch563: jdk8171000-pr3542-rh1402819-robot_createScreenCapture_crashes_in_wayland_mode.patch Patch563: jdk8171000-pr3542-rh1402819-robot_createScreenCapture_crashes_in_wayland_mode.patch
# 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds # 8197546, PR3542, RH1402819: Fix for 8171000 breaks Solaris + Linux builds
Patch564: jdk8197546-pr3542-rh1402819-fix_for_8171000_breaks_solaris_linux_builds.patch Patch564: jdk8197546-pr3542-rh1402819-fix_for_8171000_breaks_solaris_linux_builds.patch
# PR3559: Use ldrexd for atomic reads on ARMv7.
Patch567: pr3559-use_ldrexd_for_atomic_reads_on_armv7_zero.patch
# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code # PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
Patch571: jdk8199936-pr3591-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x_jdk.patch Patch571: jdk8199936-pr3591-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x_jdk.patch
# 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26 # 8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26
@ -1205,35 +1203,6 @@ Patch625: jdk8210425-rh1632174-03-compile_with_o2_and_ffp_contract_off_as_for_fd
# 8219772: EXTRA_CFLAGS not being picked up for assembler files # 8219772: EXTRA_CFLAGS not being picked up for assembler files
Patch110: jdk8219772-extra_c_cxx_flags_not_picked_for_assembler_source.patch Patch110: jdk8219772-extra_c_cxx_flags_not_picked_for_assembler_source.patch
#############################################
#
# Patches appearing in 8u202
#
# This section includes patches which are present
# in the listed OpenJDK 8u release and should be
# able to be removed once that release is out
# and used by this RPM.
#############################################
# 8207057, PR3613: Enable debug information for assembly code files
Patch206: jdk8207057-pr3613-no_debug_info_for_assembler_files_hotspot.patch
Patch207: jdk8207057-pr3613-no_debug_info_for_assembler_files_root.patch
# 8165852, PR3468: (fs) Mount point not found for a file which is present in overlayfs
Patch210: jdk8165852-pr3468-mount_point_not_found_for_a_file_which_is_present_in_overlayfs.patch
# S8073139, RH1191652; fix name of ppc64le architecture
Patch601: jdk8073139-pr1758-rh1191652-ppc64_le_says_its_arch_is_ppc64_not_ppc64le_root.patch
Patch602: jdk8073139-pr1758-rh1191652-ppc64_le_says_its_arch_is_ppc64_not_ppc64le_jdk.patch
Patch603: jdk8073139-pr2236-rh1191652--use_ppc64le_as_the_arch_directory_on_that_platform_and_report_it_in_os_arch_aarch64_forest.patch
# 8044235: src.zip should include all sources
Patch7: jdk8044235-src_zip_should_include_all_sources.patch
# JDK-8172850, RH1640127: Anti-dependency on membar causes crash in register allocator due to invalid instruction scheduling
Patch583: jdk8172850-rh1640127-01-register_allocator_crash.patch
# JDK-8209639, RH1640127: assert failure in coalesce.cpp: attempted to spill a non-spillable item
Patch584: jdk8209639-rh1640127-02-coalesce_attempted_spill_non_spillable.patch
# JDK-8131048, PR3574, RH1498936: ppc implement CRC32 intrinsic
Patch586: jdk8131048-pr3574-rh1498936-ppc_crc32.patch
# JDK-8164920, PR3574, RH1498936: ppc: enhancement of CRC32 intrinsic
Patch587: jdk8164920-pr3574-rh1498936-ppc_crc32_enhancement.patch
############################################# #############################################
# #
# Patches appearing in 8u211 # Patches appearing in 8u211
@ -1596,18 +1565,13 @@ sh %{SOURCE12}
%patch202 %patch202
%patch203 %patch203
# Debugging fixes # System security policy fixes
%patch206
%patch207
%patch210
%patch300 %patch300
%patch301 %patch301
%patch1 %patch1
%patch3 %patch3
%patch5 %patch5
%patch7
# s390 build fixes # s390 build fixes
%patch102 %patch102
@ -1619,11 +1583,6 @@ sh %{SOURCE12}
# x86 fixes # x86 fixes
%patch105 %patch105
# ppc64le fixes
%patch603
%patch601
%patch602
# Upstreamable fixes # Upstreamable fixes
%patch502 %patch502
%patch504 %patch504
@ -1643,7 +1602,6 @@ sh %{SOURCE12}
%patch561 %patch561
%patch563 %patch563
%patch564 %patch564
%patch567
%patch571 %patch571
%patch572 %patch572
%patch573 %patch573
@ -1657,11 +1615,7 @@ sh %{SOURCE12}
%patch623 %patch623
%patch624 %patch624
%patch625 %patch625
%patch583
%patch584
%patch585 %patch585
%patch586
%patch587
%patch588 %patch588
%patch110 %patch110
@ -2331,6 +2285,21 @@ require "copy_jdk_configs.lua"
%endif %endif
%changelog %changelog
* Sun Apr 07 2019 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.202.b08-0
- Update to aarch64-shenandoah-jdk8u202-b08.
- Remove patches included upstream
- JDK-8211387/PR3559
- JDK-8207057/PR3613
- JDK-8165852/PR3468
- JDK-8073139/PR1758/RH1191652
- JDK-8044235
- JDK-8172850/RH1640127
- JDK-8209639/RH1640127
- JDK-8131048/PR3574/RH1498936
- JDK-8164920/PR3574/RH1498936
- Re-generate patches
- JDK-8210647/RH1632174
* Thu Apr 04 2019 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.201.b13-0 * Thu Apr 04 2019 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.201.b13-0
- Update to aarch64-shenandoah-jdk8u201-b13. - Update to aarch64-shenandoah-jdk8u201-b13.
- Drop JDK-8160748 & JDK-8189170 AArch64 patches now applied upstream. - Drop JDK-8160748 & JDK-8189170 AArch64 patches now applied upstream.

View File

@ -1,109 +0,0 @@
# HG changeset patch
# User omajid
# Date 1401638044 14400
# Sun Jun 01 11:54:04 2014 -0400
# Node ID fd78f7e83f3f1ce7d363b681b97583138218afcb
# Parent 8d0af21b5b9789f97b05edacc221a63f851d13b8
8044235: src.zip should include all sources
Reviewed-by: andrew, dholmes
diff --git a/make/CreateJars.gmk b/make/CreateJars.gmk
--- openjdk/jdk/make/CreateJars.gmk
+++ openjdk/jdk/make/CreateJars.gmk
@@ -584,40 +584,53 @@
##########################################################################################
-SRC_ZIP_INCLUDES = \
- com/sun/corba \
- com/sun/image/codec/jpeg \
- com/sun/imageio \
- com/sun/java_cup \
- com/sun/javadoc \
- com/sun/java/swing \
- com/sun/jmx \
- com/sun/naming \
- com/sun/org/apache \
- com/sun/security/auth \
- com/sun/security/jgss \
- com/sun/source \
- java \
- javax/accessibility \
- javax/annotation \
- javax/imageio \
- javax/lang \
- javax/management \
- javax/naming \
- javax/print \
- javax/rmi \
- javax/script \
- javax/security \
- javax/sound \
- javax/sql \
- javax/swing \
- javax/tools \
- javax/xml \
- org/ietf \
- org/omg \
- org/w3c/dom \
- org/xml/sax \
- #
+ifdef OPENJDK
+ SRC_ZIP_INCLUDES = \
+ com \
+ java \
+ javax \
+ jdk \
+ org \
+ sun \
+ #
+ SRC_ZIP_EXCLUDES =
+else
+ SRC_ZIP_INCLUDES = \
+ com/sun/corba \
+ com/sun/image/codec/jpeg \
+ com/sun/imageio \
+ com/sun/java_cup \
+ com/sun/javadoc \
+ com/sun/java/swing \
+ com/sun/jmx \
+ com/sun/naming \
+ com/sun/org/apache \
+ com/sun/security/auth \
+ com/sun/security/jgss \
+ com/sun/source \
+ java \
+ javax/accessibility \
+ javax/annotation \
+ javax/imageio \
+ javax/lang \
+ javax/management \
+ javax/naming \
+ javax/print \
+ javax/rmi \
+ javax/script \
+ javax/security \
+ javax/sound \
+ javax/sql \
+ javax/swing \
+ javax/tools \
+ javax/xml \
+ org/ietf \
+ org/omg \
+ org/w3c/dom \
+ org/xml/sax \
+ #
+ SRC_ZIP_EXCLUDES = javax/swing/beaninfo
+endif
SRC_ZIP_SRCS = $(JDK_TOPDIR)/src/share/classes $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes
SRC_ZIP_SRCS += $(JDK_OUTPUTDIR)/gensrc
@@ -648,7 +661,7 @@
$(eval $(call SetupZipArchive,BUILD_SRC_ZIP, \
SRC := $(SRC_ZIP_SRCS) $(IMAGES_OUTPUTDIR)/src, \
INCLUDES := $(SRC_ZIP_INCLUDES) launcher, \
- EXCLUDES := javax/swing/beaninfo, \
+ EXCLUDES := $(SRC_ZIP_EXCLUDES), \
SUFFIXES := .java .c .h, \
ZIP := $(IMAGES_OUTPUTDIR)/src.zip, \
EXTRA_DEPS := $(LAUNCHER_ZIP_SRC)))

View File

@ -1,98 +0,0 @@
# HG changeset patch
# User sgehwolf
# Date 1537884792 -7200
# Tue Sep 25 16:13:12 2018 +0200
# Node ID fd140d7550992267e3f0f08a20b461b2ce9fa740
# Parent 21056af0d1eabbd04d7a223c01a28320c7010bfe
8073139: PPC64: User-visible arch directory and os.arch value on ppc64le cause issues with Java tooling
Reviewed-by: erikj, goetz, dholmes
diff --git openjdk.orig/jdk/make/lib/SoundLibraries.gmk openjdk/jdk/make/lib/SoundLibraries.gmk
--- openjdk/jdk/make/lib/SoundLibraries.gmk Tue Jan 12 21:01:12 2016 +0000
+++ openjdk/jdk/make/lib/SoundLibraries.gmk Wed Jan 13 00:18:02 2016 +0000
@@ -140,6 +140,10 @@
LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC64
endif
+ ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
+ LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC64LE
+ endif
+
ifeq ($(OPENJDK_TARGET_CPU), aarch64)
LIBJSOUND_CFLAGS += -DX_ARCH=X_AARCH64
endif
diff -r 1fe56343ecc8 openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h
--- openjdk.orig/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Tue Jan 12 21:01:12 2016 +0000
+++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h Wed Jan 13 00:18:02 2016 +0000
@@ -44,6 +44,8 @@
#define X_ARM 7
#define X_PPC 8
#define X_AARCH64 9
+#define X_PPC64 10
+#define X_PPC64LE 11
// **********************************
// Make sure you set X_PLATFORM and X_ARCH defines correctly.
diff --git openjdk.orig/jdk/src/solaris/bin/ppc64le/jvm.cfg openjdk/jdk/src/solaris/bin/ppc64le/jvm.cfg
new file mode 100644
--- /dev/null
+++ openjdk/jdk/src/solaris/bin/ppc64le/jvm.cfg
@@ -0,0 +1,34 @@
+# Copyright (c) 2011, 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# 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.
+#
+# List of JVMs that can be used as an option to java, javac, etc.
+# Order is important -- first in this list is the default JVM.
+# NOTE that this both this file and its format are UNSUPPORTED and
+# WILL GO AWAY in a future release.
+#
+# You may also select a JVM in an arbitrary location with the
+# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
+# and may not be available in a future release.
+#
+-server KNOWN
+-client IGNORE
diff --git openjdk.orig/test/sun/security/pkcs11/PKCS11Test.java openjdk/test/sun/security/pkcs11/PKCS11Test.java
--- openjdk.orig/jdk/test/sun/security/pkcs11/PKCS11Test.java
+++ openjdk/jdk/test/sun/security/pkcs11/PKCS11Test.java
@@ -505,6 +505,8 @@
osMap.put("Linux-amd64-64", new String[]{
"/usr/lib/x86_64-linux-gnu/", "/usr/lib/x86_64-linux-gnu/nss/",
"/usr/lib64/"});
+ osMap.put("Linux-ppc64-64", new String[]{"/usr/lib64/"});
+ osMap.put("Linux-ppc64le-64", new String[]{"/usr/lib64/"});
osMap.put("Windows-x86-32", new String[]{
PKCS11_BASE + "/nss/lib/windows-i586/".replace('/', SEP)});
osMap.put("Windows-amd64-64", new String[]{
diff --git openjdk.orig/jdk/test/tools/launcher/Settings.java openjdk/jdk/test/tools/launcher/Settings.java
--- openjdk.orig/jdk/test/tools/launcher/Settings.java
+++ openjdk/jdk/test/tools/launcher/Settings.java
@@ -74,7 +74,7 @@
static void runTestOptionDefault() throws IOException {
String stackSize = "256"; // in kb
- if (getArch().equals("ppc64")) {
+ if (getArch().equals("ppc64") || getArch().equals("ppc64le")) {
stackSize = "800";
}
TestResult tr = null;

View File

@ -1,47 +0,0 @@
# HG changeset patch
# User asmundak
# Date 1537883922 -7200
# Tue Sep 25 15:58:42 2018 +0200
# Node ID 2fabe07c0bd8bf21400313f3bb9b8e80fcb31724
# Parent 91867683f73de3882ef88981a79995beeeb1e980
8073139: PPC64: User-visible arch directory and os.arch value on ppc64le cause issues with Java tooling
Reviewed-by: erikj, goetz, dholmes
Contributed-by: Andrew Hughes <gnu.andrew@redhat.com>, Alexander Smundak <asmundak@google.com>
diff --git openjdk.orig///common/autoconf/flags.m4 openjdk///common/autoconf/flags.m4
--- openjdk.orig///common/autoconf/flags.m4
+++ openjdk///common/autoconf/flags.m4
@@ -549,6 +549,9 @@
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
fi
fi
+ if test "x$OPENJDK_TARGET_CPU" = xppc64le; then
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DABI_ELFv2"
+ fi
# Setup target OS define. Use OS target name but in upper case.
OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
diff --git openjdk.orig///common/autoconf/jdk-options.m4 openjdk///common/autoconf/jdk-options.m4
--- openjdk.orig///common/autoconf/jdk-options.m4
+++ openjdk///common/autoconf/jdk-options.m4
@@ -158,7 +158,7 @@
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
INCLUDE_SA=false
fi
- if test "x$VAR_CPU" = xppc64 ; then
+ if test "x$VAR_CPU" = xppc64 -o "x$VAR_CPU" = xppc64le ; then
INCLUDE_SA=false
fi
AC_SUBST(INCLUDE_SA)
diff --git openjdk.orig///common/autoconf/platform.m4 openjdk///common/autoconf/platform.m4
--- openjdk.orig///common/autoconf/platform.m4
+++ openjdk///common/autoconf/platform.m4
@@ -67,7 +67,7 @@
VAR_CPU_ENDIAN=big
;;
powerpc64le)
- VAR_CPU=ppc64
+ VAR_CPU=ppc64le
VAR_CPU_ARCH=ppc
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little

View File

@ -1,130 +0,0 @@
# HG changeset patch
# User sgehwolf
# Date 1537885415 -7200
# Tue Sep 25 16:23:35 2018 +0200
# Node ID 5044428520866481f438bfd1375da75adbc89243
# Parent a3df1579a8647b06559f41d345da7bea162b26e9
8073139: PPC64: User-visible arch directory and os.arch value on ppc64le cause issues with Java tooling
Reviewed-by: erikj, goetz, dholmes
diff --git a/make/defs.make b/make/defs.make
--- openjdk/hotspot/make/defs.make
+++ openjdk/hotspot/make/defs.make
@@ -285,7 +285,7 @@ ifneq ($(OSNAME),windows)
# Use uname output for SRCARCH, but deal with platform differences. If ARCH
# is not explicitly listed below, it is treated as x86.
- SRCARCH ?= $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64 zero aarch64,$(ARCH)))
+ SRCARCH ?= $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64 ppc64le zero aarch64,$(ARCH)))
ARCH/ = x86
ARCH/sparc = sparc
ARCH/sparc64= sparc
@@ -293,6 +293,7 @@ ifneq ($(OSNAME),windows)
ARCH/amd64 = x86
ARCH/x86_64 = x86
ARCH/ppc64 = ppc
+ ARCH/ppc64le= ppc
ARCH/ppc = ppc
ARCH/zero = zero
ARCH/aarch64 = aarch64
@@ -316,7 +317,12 @@
endif
endif
- # LIBARCH is 1:1 mapping from BUILDARCH
+ # LIBARCH is 1:1 mapping from BUILDARCH, except for ARCH=ppc64le
+ ifeq ($(ARCH),ppc64le)
+ LIBARCH ?= ppc64le
+ else
+ LIBARCH ?= $(LIBARCH/$(BUILDARCH))
+ endif
LIBARCH ?= $(LIBARCH/$(BUILDARCH))
LIBARCH/i486 = i386
LIBARCH/amd64 = amd64
diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
@@ -1956,7 +1956,7 @@
{EM_SPARCV9, EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"},
{EM_PPC, EM_PPC, ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"},
#if defined(VM_LITTLE_ENDIAN)
- {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64"},
+ {EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64 LE"},
#else
{EM_PPC64, EM_PPC64, ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"},
#endif
diff --git a/src/share/tools/hsdis/Makefile b/src/share/tools/hsdis/Makefile
--- openjdk/hotspot/src/share/tools/hsdis/Makefile
+++ openjdk/hotspot/src/share/tools/hsdis/Makefile
@@ -97,6 +97,7 @@
CFLAGS/sparcv9 += -m64
CFLAGS/amd64 += -m64
CFLAGS/ppc64 += -m64
+CFLAGS/ppc64le += -m64 -DABI_ELFv2
else
ARCH=$(ARCH1:amd64=i386)
CFLAGS/i386 += -m32
diff --git a/src/share/tools/hsdis/hsdis-demo.c b/src/share/tools/hsdis/hsdis-demo.c
--- openjdk/hotspot/src/share/tools/hsdis/hsdis-demo.c
+++ openjdk/hotspot/src/share/tools/hsdis/hsdis-demo.c
@@ -88,7 +88,7 @@
printf("...And now for something completely different:\n");
void *start = (void*) &main;
void *end = (void*) &end_of_file;
-#if defined(__ia64) || defined(__powerpc__)
+#if defined(__ia64) || (defined(__powerpc__) && !defined(ABI_ELFv2))
/* On IA64 and PPC function pointers are pointers to function descriptors */
start = *((void**)start);
end = *((void**)end);
diff --git a/src/share/tools/hsdis/hsdis.c b/src/share/tools/hsdis/hsdis.c
--- openjdk/hotspot/src/share/tools/hsdis/hsdis.c
+++ openjdk/hotspot/src/share/tools/hsdis/hsdis.c
@@ -461,7 +461,7 @@ static const char* native_arch_name() {
#ifdef LIBARCH_sparcv9
res = "sparc:v9b";
#endif
-#ifdef LIBARCH_ppc64
+#if defined(LIBARCH_ppc64) || defined(LIBARCH_ppc64le)
res = "powerpc:common64";
#endif
#else
diff --git a/src/share/vm/runtime/vm_version.cpp b/src/share/vm/runtime/vm_version.cpp
--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
@@ -187,11 +187,16 @@ const char* Abstract_VM_Version::jre_release_version() {
#ifndef CPU
#ifdef ZERO
#define CPU ZERO_LIBARCH
+#elif defined(PPC64)
+#if defined(VM_LITTLE_ENDIAN)
+#define CPU "ppc64le"
+#else
+#define CPU "ppc64"
+#endif
#else
#define CPU IA32_ONLY("x86") \
IA64_ONLY("ia64") \
AMD64_ONLY("amd64") \
- PPC64_ONLY("ppc64") \
AARCH64_ONLY("aarch64") \
SPARC_ONLY("sparc")
#endif // ZERO
diff --git a/test/test_env.sh b/test/test_env.sh
--- openjdk/hotspot/test/test_env.sh
+++ openjdk/hotspot/test/test_env.sh
@@ -185,6 +185,15 @@
if [ $? = 0 ]
then
VM_CPU="ppc"
+ if [ $VM_BITS = "64" ]
+ then
+ VM_CPU="ppc64"
+ grep "ppc64le" vm_version.out > ${NULL}
+ if [ $? = 0 ]
+ then
+ VM_CPU="ppc64le"
+ fi
+ fi
fi
grep "ia64" vm_version.out > ${NULL}
if [ $? = 0 ]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,87 +0,0 @@
# HG changeset patch
# User bpb
# Date 1515783982 28800
# Node ID b8843bca95b5e0eed5bbb4dc195c89c727c7aede
# Parent 61d7ce442d95f5f30c84037a50cf6361bf7c37e1
8165852: (fs) Mount point not found for a file which is present in overlayfs
Summary: Check /proc/mounts when the device ID boundary is reached
Reviewed-by: alanb
diff -r 61d7ce442d95 -r b8843bca95b5 src/solaris/classes/sun/nio/fs/LinuxFileStore.java
--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java Tue Jul 24 05:10:45 2018 -0400
+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java Fri Jan 12 11:06:22 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -66,6 +66,8 @@
}
// step 2: find mount point
+ List<UnixMountEntry> procMountsEntries =
+ fs.getMountEntries("/proc/mounts");
UnixPath parent = path.getParent();
while (parent != null) {
UnixFileAttributes attrs = null;
@@ -74,16 +76,23 @@
} catch (UnixException x) {
x.rethrowAsIOException(parent);
}
- if (attrs.dev() != dev())
- break;
+ if (attrs.dev() != dev()) {
+ // step 3: lookup mounted file systems (use /proc/mounts to
+ // ensure we find the file system even when not in /etc/mtab)
+ byte[] dir = path.asByteArray();
+ for (UnixMountEntry entry : procMountsEntries) {
+ if (Arrays.equals(dir, entry.dir()))
+ return entry;
+ }
+ }
path = parent;
parent = parent.getParent();
}
- // step 3: lookup mounted file systems (use /proc/mounts to ensure we
- // find the file system even when not in /etc/mtab)
+ // step 3: lookup mounted file systems (use /proc/mounts to
+ // ensure we find the file system even when not in /etc/mtab)
byte[] dir = path.asByteArray();
- for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
+ for (UnixMountEntry entry : procMountsEntries) {
if (Arrays.equals(dir, entry.dir()))
return entry;
}
diff -r 61d7ce442d95 -r b8843bca95b5 src/solaris/classes/sun/nio/fs/LinuxFileSystem.java
--- openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Tue Jul 24 05:10:45 2018 -0400
+++ openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Fri Jan 12 11:06:22 2018 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -75,7 +75,7 @@
/**
* Returns object to iterate over the mount entries in the given fstab file.
*/
- Iterable<UnixMountEntry> getMountEntries(String fstab) {
+ List<UnixMountEntry> getMountEntries(String fstab) {
ArrayList<UnixMountEntry> entries = new ArrayList<>();
try {
long fp = setmntent(Util.toBytes(fstab), Util.toBytes("r"));
@@ -101,7 +101,7 @@
* Returns object to iterate over the mount entries in /etc/mtab
*/
@Override
- Iterable<UnixMountEntry> getMountEntries() {
+ List<UnixMountEntry> getMountEntries() {
return getMountEntries("/etc/mtab");
}

View File

@ -1,213 +0,0 @@
# HG changeset patch
# User thartmann
# Date 1539594027 -7200
# Node ID e044997c2edaeae97866394a7f8e2ddebbd41392
# Parent 99212080341058548d449a22d1381e79353ec5b5
8172850: Anti-dependency on membar causes crash in register allocator due to invalid instruction scheduling
Summary: Regression test and additional asserts. The problem is fixed by 8087341.
Reviewed-by: kvn
diff -r 992120803410 -r e044997c2eda src/share/vm/opto/cfgnode.cpp
--- openjdk/hotspot/src/share/vm/opto/cfgnode.cpp Mon Oct 22 05:26:38 2018 -0400
+++ openjdk/hotspot/src/share/vm/opto/cfgnode.cpp Mon Oct 15 11:00:27 2018 +0200
@@ -2016,6 +2016,7 @@
uint ideal_reg = _type->ideal_reg();
assert( ideal_reg != Node::NotAMachineReg, "invalid type at Phi" );
if( ideal_reg == 0 ) return RegMask::Empty;
+ assert(ideal_reg != Op_RegFlags, "flags register is not spillable");
return *(Compile::current()->matcher()->idealreg2spillmask[ideal_reg]);
}
diff -r 992120803410 -r e044997c2eda src/share/vm/opto/coalesce.cpp
--- openjdk/hotspot/src/share/vm/opto/coalesce.cpp Mon Oct 22 05:26:38 2018 -0400
+++ openjdk/hotspot/src/share/vm/opto/coalesce.cpp Mon Oct 15 11:00:27 2018 +0200
@@ -292,7 +292,14 @@
// Copy any flags as well
_phc.clone_projs(pred, pred->end_idx(), m, copy, _phc._lrg_map);
} else {
- const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()];
+ int ireg = m->ideal_reg();
+ if (ireg == 0 || ireg == Op_RegFlags) {
+ assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
+ m->_idx, m->Name(), ireg));
+ C->record_method_not_compilable("attempted to spill a non-spillable item");
+ return;
+ }
+ const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];
copy = new (C) MachSpillCopyNode(m, *rm, *rm);
// Find a good place to insert. Kinda tricky, use a subroutine
insert_copy_with_overlap(pred,copy,phi_name,src_name);
@@ -326,7 +333,14 @@
b->insert_node(copy, l++);
l += _phc.clone_projs(b, l, m, copy, _phc._lrg_map);
} else {
- const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()];
+ int ireg = m->ideal_reg();
+ if (ireg == 0 || ireg == Op_RegFlags) {
+ assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
+ m->_idx, m->Name(), ireg));
+ C->record_method_not_compilable("attempted to spill a non-spillable item");
+ return;
+ }
+ const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];
copy = new (C) MachSpillCopyNode(m, *rm, *rm);
// Insert the copy in the basic block, just before us
b->insert_node(copy, l++);
@@ -373,7 +387,14 @@
if( k < b->_num_succs )
continue; // Live out; do not pre-split
// Split the lrg at this use
- const RegMask *rm = C->matcher()->idealreg2spillmask[inp->ideal_reg()];
+ int ireg = inp->ideal_reg();
+ if (ireg == 0 || ireg == Op_RegFlags) {
+ assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
+ inp->_idx, inp->Name(), ireg));
+ C->record_method_not_compilable("attempted to spill a non-spillable item");
+ return;
+ }
+ const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];
Node *copy = new (C) MachSpillCopyNode( inp, *rm, *rm );
// Insert the copy in the use-def chain
n->set_req(inpidx, copy );
diff -r 992120803410 -r e044997c2eda src/share/vm/opto/machnode.cpp
--- openjdk/hotspot/src/share/vm/opto/machnode.cpp Mon Oct 22 05:26:38 2018 -0400
+++ openjdk/hotspot/src/share/vm/opto/machnode.cpp Mon Oct 15 11:00:27 2018 +0200
@@ -619,6 +619,7 @@
}
// Values outside the domain represent debug info
+ assert(in(idx)->ideal_reg() != Op_RegFlags, "flags register is not spillable");
return *Compile::current()->matcher()->idealreg2spillmask[in(idx)->ideal_reg()];
}
diff -r 992120803410 -r e044997c2eda src/share/vm/opto/matcher.cpp
--- openjdk/hotspot/src/share/vm/opto/matcher.cpp Mon Oct 22 05:26:38 2018 -0400
+++ openjdk/hotspot/src/share/vm/opto/matcher.cpp Mon Oct 15 11:00:27 2018 +0200
@@ -95,6 +95,7 @@
idealreg2spillmask [Op_VecD] = NULL;
idealreg2spillmask [Op_VecX] = NULL;
idealreg2spillmask [Op_VecY] = NULL;
+ idealreg2spillmask [Op_RegFlags] = NULL;
idealreg2debugmask [Op_RegI] = NULL;
idealreg2debugmask [Op_RegN] = NULL;
@@ -106,6 +107,7 @@
idealreg2debugmask [Op_VecD] = NULL;
idealreg2debugmask [Op_VecX] = NULL;
idealreg2debugmask [Op_VecY] = NULL;
+ idealreg2debugmask [Op_RegFlags] = NULL;
idealreg2mhdebugmask[Op_RegI] = NULL;
idealreg2mhdebugmask[Op_RegN] = NULL;
@@ -117,6 +119,7 @@
idealreg2mhdebugmask[Op_VecD] = NULL;
idealreg2mhdebugmask[Op_VecX] = NULL;
idealreg2mhdebugmask[Op_VecY] = NULL;
+ idealreg2mhdebugmask[Op_RegFlags] = NULL;
debug_only(_mem_node = NULL;) // Ideal memory node consumed by mach node
}
diff -r 992120803410 -r e044997c2eda test/compiler/gcbarriers/TestMembarDependencies.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/hotspot/test/compiler/gcbarriers/TestMembarDependencies.java Mon Oct 15 11:00:27 2018 +0200
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2017, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * 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.
+ */
+
+/*
+ * @test TestMembarDependencies
+ * @bug 8172850
+ * @summary Tests correct scheduling of memory loads around MembarVolatile emitted by GC barriers.
+ * @library /testlibrary
+ * @run driver compiler.membars.TestMembarDependencies
+ */
+
+package compiler.membars;
+
+import com.oracle.java.testlibrary.*;
+
+public class TestMembarDependencies {
+ private static TestMembarDependencies f1;
+ private static TestMembarDependencies f2;
+
+ public static void main(String args[]) throws Throwable {
+ if (args.length == 0) {
+ // For debugging, add "-XX:+TraceOptoPipelining"
+ OutputAnalyzer oa = ProcessTools.executeTestJvm("-XX:+IgnoreUnrecognizedVMOptions",
+ "-XX:-TieredCompilation", "-XX:-BackgroundCompilation", "-XX:+PrintOpto",
+ "-XX:CompileCommand=compileonly,compiler.membars.TestMembarDependencies::test*",
+ "-XX:CompileCommand=dontinline,compiler.membars.TestMembarDependencies::test_m1",
+ TestMembarDependencies.class.getName(), "run");
+ // C2 should not crash or bail out from compilation
+ oa.shouldHaveExitValue(0);
+ oa.shouldNotMatch("Bailout: Recompile without subsuming loads");
+ System.out.println(oa.getOutput());
+ } else {
+ f2 = new TestMembarDependencies();
+ // Trigger compilation of test1 and test2
+ for (int i = 0; i < 10_000; ++i) {
+ f2.test1(f2);
+ f2.test2(f2);
+ }
+ }
+ }
+
+ public void test_m1() { }
+ public void test_m2() { }
+
+ public void test1(TestMembarDependencies obj) {
+ // Try/catch/finally is used to create a CFG block without a test + jmpCon
+ // allowing GCM to schedule the testN_mem_reg0 instruction into that block.
+ try {
+ // Method call defines memory state that is then
+ // used by subsequent instructions/blocks (see below).
+ test_m1();
+ } catch (Exception e) {
+
+ } finally {
+ // Oop write to field emits a GC post-barrier with a MembarVolatile
+ // which has a wide memory effect (kills all memory). This creates an
+ // anti-dependency on all surrounding memory loads.
+ f1 = obj;
+ }
+ // The empty method m2 is inlined but the null check of f2 remains. It is encoded
+ // as CmpN(LoadN(MEM), NULL) where MEM is the memory after the call to test_m1().
+ // This is matched to testN_mem_reg0 on x86 which is scheduled before the barrier
+ // in the try/catch block due to the anti-dependency on the MembarVolatile.
+ // C2 crashes in the register allocator when trying to spill the flag register
+ // to keep the result of the testN instruction live from the try/catch block
+ // until it is here.
+ f2.test_m2();
+ }
+
+ public void test2(TestMembarDependencies obj) {
+ // Same as test1 but without try/catch/finally.
+ // This causes C2 to bail out in block local scheduling because testN_mem_reg0 is
+ // scheduled into a block that already contains another test + jmpCon instruction.
+ test_m1();
+ f1 = obj;
+ f2.test_m2();
+ }
+}

View File

@ -1,13 +0,0 @@
--- openjdk/hotspot/make/linux/makefiles/gcc.make 2018-09-17 15:40:56.933127667 +0200
+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2018-09-17 15:40:56.831127850 +0200
@@ -184,6 +184,10 @@
LFLAGS += $(ARCHFLAG)
ASFLAGS += $(ARCHFLAG)
+ifeq ($(DEBUG_BINARIES), true)
+ ASFLAGS += $(ASFLAGS_DEBUG_SYMBOLS)
+endif
+
# Use C++ Interpreter
ifdef CC_INTERP
CFLAGS += -DCC_INTERP

View File

@ -1,52 +0,0 @@
diff --git openjdk.orig///common/autoconf/flags.m4 openjdk///common/autoconf/flags.m4
--- openjdk.orig///common/autoconf/flags.m4
+++ openjdk///common/autoconf/flags.m4
@@ -282,9 +282,11 @@
if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
CFLAGS_DEBUG_SYMBOLS="-g1"
CXXFLAGS_DEBUG_SYMBOLS="-g1"
+ ASFLAGS_DEBUG_SYMBOLS="-g1"
else
CFLAGS_DEBUG_SYMBOLS="-g"
CXXFLAGS_DEBUG_SYMBOLS="-g"
+ ASFLAGS_DEBUG_SYMBOLS="-g"
fi
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
CFLAGS_DEBUG_SYMBOLS="-g -xs"
@@ -295,6 +297,7 @@
fi
AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
+ AC_SUBST(ASFLAGS_DEBUG_SYMBOLS)
# Optimization levels
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in
--- openjdk.orig///common/autoconf/spec.gmk.in
+++ openjdk///common/autoconf/spec.gmk.in
@@ -414,6 +414,7 @@
# Options for generating debug symbols
ENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
+ASFLAGS_DEBUG_SYMBOLS:=@ASFLAGS_DEBUG_SYMBOLS@
CXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
ZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
STRIP_POLICY:=@STRIP_POLICY@
diff --git openjdk.orig///make/common/NativeCompilation.gmk openjdk///make/common/NativeCompilation.gmk
--- openjdk.orig///make/common/NativeCompilation.gmk
+++ openjdk///make/common/NativeCompilation.gmk
@@ -351,12 +351,14 @@
# Always add debug symbols
$1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
+ $1_EXTRA_ASFLAGS+=$(ASFLAGS_DEBUG_SYMBOLS)
else
# Programs don't get the debug symbols added in the old build. It's not clear if
# this is intentional.
ifeq ($$($1_PROGRAM),)
$1_EXTRA_CFLAGS+=$(CFLAGS_DEBUG_SYMBOLS)
$1_EXTRA_CXXFLAGS+=$(CXXFLAGS_DEBUG_SYMBOLS)
+ $1_EXTRA_ASFLAGS+=$(ASFLAGS_DEBUG_SYMBOLS)
endif
endif
endif

View File

@ -1,114 +0,0 @@
# HG changeset patch
# User roland
# Date 1540370574 -7200
# Node ID d853bac073f8a4851e313ba8fa9768b38396a204
# Parent e044997c2edaeae97866394a7f8e2ddebbd41392
8209639: assert failure in coalesce.cpp: attempted to spill a non-spillable item
Reviewed-by: neliasso, kvn
diff -r e044997c2eda -r d853bac073f8 src/share/vm/opto/coalesce.cpp
--- openjdk/hotspot/src/share/vm/opto/coalesce.cpp Mon Oct 15 11:00:27 2018 +0200
+++ openjdk/hotspot/src/share/vm/opto/coalesce.cpp Wed Oct 24 10:42:54 2018 +0200
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "memory/allocation.inline.hpp"
#include "opto/block.hpp"
+#include "opto/c2compiler.hpp"
#include "opto/cfgnode.hpp"
#include "opto/chaitin.hpp"
#include "opto/coalesce.hpp"
@@ -294,9 +295,13 @@
} else {
int ireg = m->ideal_reg();
if (ireg == 0 || ireg == Op_RegFlags) {
- assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
- m->_idx, m->Name(), ireg));
- C->record_method_not_compilable("attempted to spill a non-spillable item");
+ if (C->subsume_loads()) {
+ C->record_failure(C2Compiler::retry_no_subsuming_loads());
+ } else {
+ assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
+ m->_idx, m->Name(), ireg));
+ C->record_method_not_compilable("attempted to spill a non-spillable item");
+ }
return;
}
const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];
diff -r e044997c2eda -r d853bac073f8 test/compiler/c2/SubsumingLoadsCauseFlagSpill.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ openjdk/hotspot/test/compiler/c2/SubsumingLoadsCauseFlagSpill.java Wed Oct 24 10:42:54 2018 +0200
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 8209639
+ * @summary assert failure in coalesce.cpp: attempted to spill a non-spillable item
+ *
+ * @run main/othervm -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,SubsumingLoadsCauseFlagSpill::not_inlined -Xmx1024m SubsumingLoadsCauseFlagSpill
+ *
+ */
+
+public class SubsumingLoadsCauseFlagSpill {
+ private static Object field;
+ private static boolean do_throw;
+ private static volatile boolean barrier;
+
+ public static void main(String[] args) {
+ for (int i = 0; i < 20_000; i++) {
+ do_throw = true;
+ field = null;
+ test(0);
+ do_throw = false;
+ field = new Object();
+ test(0);
+ }
+ }
+
+ private static float test(float f) {
+ Object v = null;
+ try {
+ not_inlined();
+ v = field;
+ } catch (MyException me) {
+ v = field;
+ barrier = true;
+ }
+ if (v == null) {
+ return f * f;
+ }
+ return f;
+ }
+
+ private static void not_inlined() throws MyException{
+ if (do_throw) {
+ throw new MyException();
+ }
+ }
+
+ private static class MyException extends Throwable {
+ }
+}

View File

@ -20,4 +20,4 @@ diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot
+ $(SA_OPT_FLAGS) \ + $(SA_OPT_FLAGS) \
$(EXTRA_CFLAGS) \ $(EXTRA_CFLAGS) \
-o $@ \ -o $@ \
-lthread_db -lthread_db -ldl

View File

@ -1,29 +0,0 @@
# HG changeset patch
# User aph
# Date 1338206478 14400
# Mon May 28 08:01:18 2012 -0400
# Node ID 6275d7b419091092752d5a1854194c98897892ba
# Parent be1379a186ba527b32c93a83e04c9600735fe44b
PR3559: Use ldrexd for atomic reads on ARMv7.
2012-05-28 Andrew Haley <aph@redhat.com>
* os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
on ARMv7.
diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
@@ -54,6 +54,12 @@
"std %0, %1\n"
: "=&f"(tmp), "=Q"(*(volatile double*)dst)
: "Q"(*(volatile double*)src));
+#elif defined(__ARM_ARCH_7A__)
+ jlong tmp;
+ asm volatile ("ldrexd %0, [%1]\n"
+ : "=r"(tmp)
+ : "r"(src), "m"(src));
+ *(jlong *) dst = tmp;
#else
*(jlong *) dst = *(jlong *) src;
#endif

View File

@ -1,2 +1,2 @@
SHA512 (tapsets-icedtea-3.11.0.tar.xz) = f98420b2f9d7a0fc0af3a7e6a817c4330169db9378d9c38db56b0dd8281a3f1ff7747b4da0c66194695ca85a470b7963902d863d301e5e290dbfe11f6b6f2b5e SHA512 (tapsets-icedtea-3.11.0.tar.xz) = f98420b2f9d7a0fc0af3a7e6a817c4330169db9378d9c38db56b0dd8281a3f1ff7747b4da0c66194695ca85a470b7963902d863d301e5e290dbfe11f6b6f2b5e
SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u201-b13.tar.xz) = d7191695ed8f034ceae973bfa065f8fa7f92d17977903d7a8e75dcd04b159ce1157e3033aabbef446604f63da428dc5d4990016639f85b3e62724522526ea390 SHA512 (aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u202-b08.tar.xz) = 5c2fde5b6595a8daeb2216c0eed0a9a5b311d651745fa5d299d8d6da674c27133ce23726e3f8ec32314c929d5a814d8167d9a33877fbf5237a2595b3f488585e