Mercurial > hg > icedtea8
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