diff --git a/.gitignore b/.gitignore index 5ed2f0e..7e468c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -SOURCES/aarch64-port-jdk8u-aarch64-jdk8u181-b13.tar.xz -SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u181-b13.tar.xz +SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u191-b12.tar.xz SOURCES/systemtap-tapset-3.6.0pre02.tar.xz diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata index 02f3ed9..535140f 100644 --- a/.java-1.8.0-openjdk.metadata +++ b/.java-1.8.0-openjdk.metadata @@ -1,3 +1,2 @@ -68194807c61d6b6a6bfbda6a9b5cd56a8e63ad8b SOURCES/aarch64-port-jdk8u-aarch64-jdk8u181-b13.tar.xz -174fc5d1c647f3846ca6e1e0ab08e287db5c47cc SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u181-b13.tar.xz +e197cf1d4caa32e21c54e5d625d642b12909ee2c SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u191-b12.tar.xz 93bca27ce5eeeb2bc1f6f3cd4ffe34c3567a3c73 SOURCES/systemtap-tapset-3.6.0pre02.tar.xz diff --git a/SOURCES/8165489-pr3589.patch b/SOURCES/8165489-pr3589.patch deleted file mode 100644 index 1674dec..0000000 --- a/SOURCES/8165489-pr3589.patch +++ /dev/null @@ -1,123 +0,0 @@ -# HG changeset patch -# User mdoerr -# Date 1473159687 -7200 -# Tue Sep 06 13:01:27 2016 +0200 -# Node ID 7f6e1069a5719c8908b53774d3560ce851c7cd70 -# Parent b8fc1e640c4c7f38ca94131279cb67c4d3de6961 -8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile -Summary: Add missing barrier, sharing code with Unsafe_GetObject. -Reviewed-by: kbarrett, mgerdin, pliden, tschatzl - -diff --git openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp openjdk/hotspot/src/share/vm/prims/unsafe.cpp ---- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp -+++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp -@@ -199,37 +199,40 @@ - - // Get/SetObject must be special-cased, since it works with handles. - -+// We could be accessing the referent field in a reference -+// object. If G1 is enabled then we need to register non-null -+// referent with the SATB barrier. -+ -+#if INCLUDE_ALL_GCS -+static bool is_java_lang_ref_Reference_access(oop o, jlong offset) { -+ if (offset == java_lang_ref_Reference::referent_offset && o != NULL) { -+ Klass* k = o->klass(); -+ if (InstanceKlass::cast(k)->reference_type() != REF_NONE) { -+ assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity"); -+ return true; -+ } -+ } -+ return false; -+} -+#endif -+ -+static void ensure_satb_referent_alive(oop o, jlong offset, oop v) { -+#if INCLUDE_ALL_GCS -+ if (UseG1GC && v != NULL && is_java_lang_ref_Reference_access(o, offset)) { -+ G1SATBCardTableModRefBS::enqueue(v); -+ } -+#endif -+} -+ - // The xxx140 variants for backward compatibility do not allow a full-width offset. - UNSAFE_ENTRY(jobject, Unsafe_GetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset)) - UnsafeWrapper("Unsafe_GetObject"); - if (obj == NULL) THROW_0(vmSymbols::java_lang_NullPointerException()); - GET_OOP_FIELD(obj, offset, v) -- jobject ret = JNIHandles::make_local(env, v); --#if INCLUDE_ALL_GCS -- // We could be accessing the referent field in a reference -- // object. If G1 is enabled then we need to register a non-null -- // referent with the SATB barrier. -- if (UseG1GC) { -- bool needs_barrier = false; - -- if (ret != NULL) { -- if (offset == java_lang_ref_Reference::referent_offset) { -- oop o = JNIHandles::resolve_non_null(obj); -- Klass* k = o->klass(); -- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) { -- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity"); -- needs_barrier = true; -- } -- } -- } -+ ensure_satb_referent_alive(p, offset, v); - -- if (needs_barrier) { -- oop referent = JNIHandles::resolve(ret); -- G1SATBCardTableModRefBS::enqueue(referent); -- } -- } --#endif // INCLUDE_ALL_GCS -- return ret; -+ return JNIHandles::make_local(env, v); - UNSAFE_END - - UNSAFE_ENTRY(void, Unsafe_SetObject140(JNIEnv *env, jobject unsafe, jobject obj, jint offset, jobject x_h)) -@@ -262,32 +265,10 @@ - UNSAFE_ENTRY(jobject, Unsafe_GetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset)) - UnsafeWrapper("Unsafe_GetObject"); - GET_OOP_FIELD(obj, offset, v) -- jobject ret = JNIHandles::make_local(env, v); --#if INCLUDE_ALL_GCS -- // We could be accessing the referent field in a reference -- // object. If G1 is enabled then we need to register non-null -- // referent with the SATB barrier. -- if (UseG1GC) { -- bool needs_barrier = false; - -- if (ret != NULL) { -- if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) { -- oop o = JNIHandles::resolve(obj); -- Klass* k = o->klass(); -- if (InstanceKlass::cast(k)->reference_type() != REF_NONE) { -- assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity"); -- needs_barrier = true; -- } -- } -- } -+ ensure_satb_referent_alive(p, offset, v); - -- if (needs_barrier) { -- oop referent = JNIHandles::resolve(ret); -- G1SATBCardTableModRefBS::enqueue(referent); -- } -- } --#endif // INCLUDE_ALL_GCS -- return ret; -+ return JNIHandles::make_local(env, v); - UNSAFE_END - - UNSAFE_ENTRY(void, Unsafe_SetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject x_h)) -@@ -312,6 +293,9 @@ - } else { - (void)const_cast(v = *(volatile oop*) addr); - } -+ -+ ensure_satb_referent_alive(p, offset, v); -+ - OrderAccess::acquire(); - return JNIHandles::make_local(env, v); - UNSAFE_END diff --git a/SOURCES/pr3539-rh1548475.patch b/SOURCES/pr3539-rh1548475.patch index 492a080..9b40a7f 100644 --- a/SOURCES/pr3539-rh1548475.patch +++ b/SOURCES/pr3539-rh1548475.patch @@ -85,8 +85,8 @@ diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/m # cause problems with interposing. See CR: 6466665 # LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE)) --LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) -+LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(EXTRA_LDFLAGS) +-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) ++LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE) $(LDFLAGS_NO_EXEC_STACK) $(EXTRA_LDFLAGS) # DEBUG_BINARIES overrides everything, use full -g debug information ifeq ($(DEBUG_BINARIES), true) @@ -105,7 +105,7 @@ diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot diff --git openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make --- openjdk.orig/hotspot/make/linux/makefiles/vm.make +++ openjdk/hotspot/make/linux/makefiles/vm.make -@@ -130,7 +130,7 @@ +@@ -122,7 +122,7 @@ # Extra flags from gnumake's invocation or environment CFLAGS += $(EXTRA_CFLAGS) diff --git a/SOURCES/pr3634.patch b/SOURCES/pr3634.patch new file mode 100644 index 0000000..caba2ac --- /dev/null +++ b/SOURCES/pr3634.patch @@ -0,0 +1,16 @@ +diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoah_globals.hpp openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoah_globals.hpp +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoah_globals.hpp ++++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoah_globals.hpp +@@ -55,10 +55,10 @@ + "Size of the Shenandoah regions. " \ + "Determined automatically by default.") \ + \ +- experimental(uintx, ShenandoahMinRegionSize, 256 * K, \ ++ experimental(size_t, ShenandoahMinRegionSize, 256 * K, \ + "Minimum heap region size. ") \ + \ +- experimental(uintx, ShenandoahMaxRegionSize, 32 * M, \ ++ experimental(size_t, ShenandoahMaxRegionSize, 32 * M, \ + "Maximum heap region size. ") \ + \ + experimental(intx, ShenandoahHumongousThreshold, 100, \ diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec index e81c4d5..460dab8 100644 --- a/SPECS/java-1.8.0-openjdk.spec +++ b/SPECS/java-1.8.0-openjdk.spec @@ -34,13 +34,6 @@ %global include_debug_build 0 %endif -# On x86_64 and AArch64, we use the Shenandoah HotSpot -%ifarch x86_64 %{aarch64} -%global use_shenandoah_hotspot 1 -%else -%global use_shenandoah_hotspot 0 -%endif - %if %{include_debug_build} %global build_loop2 %{debug_suffix} %else @@ -175,12 +168,13 @@ %global origin openjdk %global top_level_dir_name %{origin} # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. -%global project aarch64-port -%global repo jdk8u -%global revision aarch64-jdk8u181-b13 %global shenandoah_project aarch64-port %global shenandoah_repo jdk8u-shenandoah -%global shenandoah_revision aarch64-shenandoah-jdk8u181-b13 +%global shenandoah_revision aarch64-shenandoah-jdk8u191-b12 +# Define old aarch64/jdk8u tree variables for compatibility +%global project %{shenandoah_project} +%global repo %{shenandoah_repo} +%global revision %{shenandoah_revision} # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) %global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*}) @@ -795,8 +789,8 @@ Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{releas %global __jar_repack 0 Name: java-%{javaver}-%{origin} -Version: %{javaver}.%{updatever} -Release: 3.%{buildver}%{?dist} +Version: %{javaver}.%{updatever}.%{buildver} +Release: 0%{?dist} # 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 # also included the epoch in their virtual provides. This created a @@ -824,22 +818,15 @@ Group: Development/Languages License: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib URL: http://openjdk.java.net/ -# aarch64-port now contains integration forest of both aarch64 and normal jdk -# Source from upstream OpenJDK8 project. To regenerate, use -# VERSION=%%{revision} FILE_NAME_ROOT=%%{project}-%%{repo}-${VERSION} -# REPO_ROOT= generate_source_tarball.sh -# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} -Source0: %{project}-%{repo}-%{revision}.tar.xz - # Shenandoah HotSpot # aarch64-port/jdk8u-shenandoah contains an integration forest of # OpenJDK 8u, the aarch64 port and Shenandoah # To regenerate, use: # VERSION=%%{shenandoah_revision} # FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION} -# REPO_ROOT= REPOS=hotspot generate_source_tarball.sh +# REPO_ROOT= generate_source_tarball.sh # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} -Source1: %{shenandoah_project}-%{shenandoah_repo}-%{shenandoah_revision}.tar.xz +Source0: %{shenandoah_project}-%{shenandoah_repo}-%{shenandoah_revision}.tar.xz # Custom README for -src subpackage Source2: README.src @@ -980,8 +967,6 @@ Patch206: 8207057-pr3613-hotspot-assembler-debuginfo.patch # Patches appearing in 8u192 # 8205104, PR3539, RH1548475: Pass EXTRA_LDFLAGS to HotSpot build Patch562: pr3539-rh1548475.patch -# 8165489, PR3589: Missing G1 barrier in Unsafe_GetObjectVolatile -Patch570: 8165489-pr3589.patch # 8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list Patch580: 8206406-pr3610-rh1597825.patch # 8206425: .gnu_debuglink sections added unconditionally when no debuginfo is stripped @@ -1002,6 +987,8 @@ Patch539: pr2888.patch Patch540: pr3575-rh1567204.patch # Shenandoah fixes +# PR3634: Shenandoah still broken on s390 with aarch64-shenandoah-jdk8u181-b16 +Patch582: pr3634.patch # Non-OpenJDK fixes @@ -1269,16 +1256,6 @@ if [ $prioritylength -ne 7 ] ; then fi # For old patches ln -s %{top_level_dir_name} jdk8 -%if %{use_shenandoah_hotspot} -# On Shenandoah-supported architectures, replace HotSpot with -# the Shenandoah version -pushd %{top_level_dir_name} -tar -xf %{SOURCE1} -rm -rf hotspot -mv %{top_level_dir_name}/hotspot . -rm -rf %{top_level_dir_name} -popd -%endif cp %{SOURCE2} . @@ -1372,11 +1349,8 @@ sh %{SOURCE12} %patch534 %endif -# Shenandoah-only patches -%if %{use_shenandoah_hotspot} -%else -%patch570 -%endif +# Shenandoah patches +%patch582 # Extract systemtap tapsets %if %{with_systemtap} @@ -2015,7 +1989,70 @@ require "copy_jdk_configs.lua" %endif %changelog -* Mon Jul 16 2018 Andrew Hughes - 1:1.8.0.181-7.b13 +* Tue Oct 09 2018 Andrew Hughes - 1:1.8.0.191.b12-0 +- Update to aarch64-shenandoah-jdk8u191-b12. +- Resolves: rhbz#1633817 + +* Tue Oct 02 2018 Andrew Hughes - 1:1.8.0.191.b10-0 +- Update to aarch64-shenandoah-jdk8u191-b10. +- Drop 8146115/PR3508/RH1463098 applied upstream. +- Resolves: rhbz#1633817 + +* Mon Oct 01 2018 Andrew Hughes - 1:1.8.0.181.b16-0 +- Add new Shenandoah patch PR3634 as upstream still fails on s390. +- Resolves: rhbz#1633817 + +* Mon Oct 01 2018 Andrew Hughes - 1:1.8.0.181.b16-0 +- Update to aarch64-shenandoah-jdk8u181-b16. +- Drop PR3619 & PR3620 Shenandoah patches which should now be fixed upstream. +- Resolves: rhbz#1633817 + +* Thu Aug 23 2018 Andrew Hughes - 1:1.8.0.181.b15-0 +- Move to single OpenJDK tarball build, based on aarch64/shenandoah-jdk8u. +- Update to aarch64-shenandoah-jdk8u181-b15. +- Drop 8165489-pr3589.patch which was only applied to aarch64/jdk8u builds. +- Move buildver to where it should be in the OpenJDK version. +- Split ppc64 Shenandoah fix into separate patch file with its own bug ID (PR3620). +- Update pr3539-rh1548475.patch to apply after 8187045. +- Resolves: rhbz#1633817 + +* Sat Aug 11 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Remove unneeded functions from ppc shenandoahBarrierSet. +- Resolves: rhbz#1633817 + +* Wed Aug 08 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Add missing shenandoahBarrierSet implementation for ppc64{be,le}. +- Resolves: rhbz#1633817 + +* Tue Aug 07 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Fix wrong format specifiers in Shenandoah code. +- Resolves: rhbz#1633817 + +* Tue Aug 07 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Avoid changing variable types to fix size_t, at least for now. +- Resolves: rhbz#1633817 + +* Tue Aug 07 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- More size_t fixes for Shenandoah. +- Resolves: rhbz#1633817 + +* Fri Aug 03 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Add additional s390 size_t case for Shenandoah. +- Resolves: rhbz#1633817 + +* Fri Aug 03 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Actually add the patch... +- Resolves: rhbz#1633817 + +* Fri Aug 03 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Attempt to fix Shenandoah build issues on s390. +- Resolves: rhbz#1633817 + +* Mon Jul 23 2018 Andrew Hughes - 1:1.8.0.181-4.b13 +- Use the Shenandoah HotSpot on all architectures. +- Resolves: rhbz#1633817 + +* Mon Jul 16 2018 Andrew Hughes - 1:1.8.0.181-3.b13 - Update to aarch64-jdk8u181-b13 and aarch64-shenandoah-jdk8u181-b13. - Remove 8187577/PR3578 now applied upstream. - Resolves: rhbz#1594249