changeset 2847:363243729df8

Fix Shenandoah to build on all supported architectures. PR3619: Shenandoah broken on s390 PR3620: Shenandoah broken on ppc64 2018-09-12 Andrew John Hughes <gnu_andrew@member.fsf.org> PR3619: Shenandoah broken on s390 PR3620: Shenandoah broken on ppc64 * Makefile.am: (ICEDTEA_PATCHES): Add new patches on Shenandoah builds. * NEWS: Updated. * patches/hotspot/shenandoah/pr3619.patch: Fix Shenandoah build on s390 where size_t is not equal to uintx. * patches/hotspot/shenandoah/pr3620.patch: Add shenandoahBarrierSet implementation for ppc so it builds on ppc64.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Thu, 13 Sep 2018 04:44:05 +0100
parents a71ed6325859
children 18c1e20f119c
files ChangeLog Makefile.am NEWS patches/hotspot/shenandoah/pr3619.patch patches/hotspot/shenandoah/pr3620.patch
diffstat 5 files changed, 139 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Sep 11 21:53:38 2018 +0100
+++ b/ChangeLog	Thu Sep 13 04:44:05 2018 +0100
@@ -1,3 +1,18 @@
+2018-09-12  Andrew John Hughes  <gnu_andrew@member.fsf.org>
+
+	PR3619: Shenandoah broken on s390
+	PR3620: Shenandoah broken on ppc64
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Add new patches on Shenandoah
+	builds.
+	* NEWS: Updated.
+	* patches/hotspot/shenandoah/pr3619.patch:
+	Fix Shenandoah build on s390 where
+	size_t is not equal to uintx.
+	* patches/hotspot/shenandoah/pr3620.patch:
+	Add shenandoahBarrierSet implementation for
+	ppc so it builds on ppc64.
+
 2018-09-10  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
 	Bump aarch32 to jdk8u181-b13-aarch32-180802.
--- a/Makefile.am	Tue Sep 11 21:53:38 2018 +0100
+++ b/Makefile.am	Thu Sep 13 04:44:05 2018 +0100
@@ -399,10 +399,13 @@
 endif
 
 # Shenandoah has the AArch64 port so should get the return value & debug build fixes
+# Shenandoah also needs some fixes to build on all architectures
 if WITH_SHENANDOAH_HSBUILD
 ICEDTEA_PATCHES += \
 	patches/hotspot/$(HSBUILD)/8158260-pr2991-rh1341258-aarch64.patch \
-	patches/hotspot/$(HSBUILD)/pr3519-return_value-02.patch
+	patches/hotspot/$(HSBUILD)/pr3519-return_value-02.patch \
+	patches/hotspot/$(HSBUILD)/pr3619.patch \
+	patches/hotspot/$(HSBUILD)/pr3620.patch
 endif
 
 if BUILD_CACAO
--- a/NEWS	Tue Sep 11 21:53:38 2018 +0100
+++ b/NEWS	Thu Sep 13 04:44:05 2018 +0100
@@ -101,6 +101,8 @@
   - PR3600: jni_util.c does not import header file which declares getLastErrorString
   - PR3601: Fix additional -Wreturn-type issues introduced by 8061651
 * Shenandoah
+  - PR3619: Shenandoah broken on s390
+  - PR3620: Shenandoah broken on ppc64
   - Allocation failure injection machinery
   - [backport] AArch64 shenandoah_store_check should read evacuation_in_progress as byte
   - [backport] Account trashed regions from coalesced CM-with-UR
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/shenandoah/pr3619.patch	Thu Sep 13 04:44:05 2018 +0100
@@ -0,0 +1,47 @@
+# PR3619: Shenandoah broken on s390
+
+diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
+@@ -108,7 +108,7 @@
+   step = MIN2(step, (intx) MaxNormalStep);
+ 
+   log_info(gc, ergo)("Capacity: " SIZE_FORMAT "M, Peak Occupancy: " SIZE_FORMAT
+-                             "M, Lowest Free: " SIZE_FORMAT "M, Free Threshold: " UINTX_FORMAT "M",
++                             "M, Lowest Free: " SIZE_FORMAT "M, Free Threshold: " SIZE_FORMAT "M",
+                      capacity / M, _peak_occupancy / M,
+                      (capacity - _peak_occupancy) / M, ShenandoahMinFreeThreshold * capacity / 100 / M);
+ 
+diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahStaticHeuristics.cpp openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
+@@ -36,7 +36,7 @@
+ }
+ 
+ void ShenandoahStaticHeuristics::print_thresholds() {
+-  log_info(gc, init)("Shenandoah heuristics thresholds: allocation "SIZE_FORMAT", free "SIZE_FORMAT", garbage "SIZE_FORMAT,
++  log_info(gc, init)("Shenandoah heuristics thresholds: allocation "UINTX_FORMAT", free "UINTX_FORMAT", garbage "UINTX_FORMAT,
+                      ShenandoahAllocationThreshold,
+                      ShenandoahFreeThreshold,
+                      ShenandoahGarbageThreshold);
+diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeapRegion.cpp openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeapRegion.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeapRegion.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahHeapRegion.cpp
+@@ -539,7 +539,7 @@
+     }
+     size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
+     region_size = MAX2(average_heap_size / ShenandoahTargetNumRegions,
+-                       ShenandoahMinRegionSize);
++                       (size_t) ShenandoahMinRegionSize);
+ 
+     // Now make sure that we don't go over or under our limits.
+     region_size = MAX2(ShenandoahMinRegionSize, region_size);
+@@ -573,7 +573,7 @@
+   // Otherwise, mem-protecting one region may falsely protect the adjacent
+   // regions too.
+   if (UseLargePages) {
+-    region_size = MAX2(region_size, os::large_page_size());
++    region_size = MAX2((size_t) region_size, os::large_page_size());
+   }
+ 
+   int region_size_log = log2_long((jlong) region_size);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/shenandoah/pr3620.patch	Thu Sep 13 04:44:05 2018 +0100
@@ -0,0 +1,71 @@
+# PR3620: Shenandoah broken on ppc64
+diff --git openjdk.orig/hotspot/make/excludeSrc.make openjdk/hotspot/make/excludeSrc.make
+--- openjdk.orig/hotspot/make/excludeSrc.make
++++ openjdk/hotspot/make/excludeSrc.make
+@@ -121,6 +121,7 @@
+       Src_Files_EXCLUDE +=                                              \
+         shenandoahBarrierSet_x86.cpp                                    \
+         shenandoahBarrierSet_aarch64.cpp                                \
++        shenandoahBarrierSet_ppc.cpp                                    \
+         shenandoahBarrierSet_sparc.cpp                                  \
+         shenandoahBarrierSet_zero.cpp
+ endif
+diff --git openjdk.orig/hotspot/src/cpu/ppc/vm/shenandoahBarrierSet_ppc.cpp openjdk/hotspot/src/cpu/ppc/vm/shenandoahBarrierSet_ppc.cpp
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/src/cpu/ppc/vm/shenandoahBarrierSet_ppc.cpp
+@@ -0,0 +1,54 @@
++/*
++ * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
++ *
++ * 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.
++ *
++ */
++
++#include "precompiled.hpp"
++#include "gc_implementation/shenandoah/brooksPointer.hpp"
++#include "gc_implementation/shenandoah/shenandoahBarrierSet.inline.hpp"
++
++#include "asm/macroAssembler.hpp"
++#include "interpreter/interpreter.hpp"
++
++#define __ masm->
++
++#ifndef CC_INTERP
++
++void ShenandoahBarrierSet::interpreter_read_barrier(MacroAssembler* masm, Register dst) {
++  Unimplemented();
++}
++
++void ShenandoahBarrierSet::interpreter_read_barrier_not_null(MacroAssembler* masm, Register dst) {
++  Unimplemented();
++}
++
++void ShenandoahBarrierSet::interpreter_write_barrier(MacroAssembler* masm, Register dst) {
++  Unimplemented();
++}
++
++void ShenandoahBarrierSet::asm_acmp_barrier(MacroAssembler* masm, Register op1, Register op2) {
++  Unimplemented();
++}
++
++void ShenandoahHeap::compile_prepare_oop(MacroAssembler* masm, Register obj) {
++  Unimplemented();
++}
++#endif