changeset 2961:2c02d50412c9

Bump shenandoah to aarch64-shenandoah-jdk8u262-b01. Upstream changes: - JDK-8003209: JFR events for network utilization - JDK-8030680: 292 cleanup from default method code assessment - JDK-8041626: Shutdown tracing event - JDK-8141056: Erroneous assignment in HeapRegionSet.cpp - JDK-8165675: Trace event for thread park has incorrect unit for timeout - JDK-8183925: [AArch64] Decouple crash protection from watcher thread - JDK-8183925: Decouple crash protection from watcher thread - JDK-8191393: Random crashes during cfree+0x1c - JDK-8195817: JFR.stop should require name of recording - JDK-8195818: JFR.start should increase autogenerated name by one - JDK-8195819: Remove recording=x from jcmd JFR.check output - JDK-8199712: [AArch64] Flight Recorder - JDK-8199712: Flight Recorder - JDK-8202578: Revisit location for class unload events - JDK-8202835: jfr/event/os/TestSystemProcess.java fails on missing events - JDK-8203287: Zero fails to build after JDK-8199712 (Flight Recorder) - JDK-8203346: JFR: Inconsistent signature of jfr_add_string_constant - JDK-8203664: JFR start failure after AppCDS archive created with JFR StartFlightRecording - JDK-8203921: JFR thread sampling is missing fixes from JDK-8194552 - JDK-8203929: Limit amount of data for JFR.dump - JDK-8205516: JFR tool - JDK-8207392: [PPC64] Implement JFR profiling - JDK-8209960: -Xlog:jfr* doesn't work with the JFR - JDK-8210024: JFR calls virtual is_Java_thread from ~Thread() - JDK-8210776: Upgrade X Window System 6.8.2 to the latest XWD 1.0.7 - JDK-8211239: Build fails without JFR: empty JFR events signatures mismatch - JDK-8213015: Inconsistent settings between JFR.configure and -XX:FlightRecorderOptions - JDK-8213421: Line number information for execution samples always 0 - JDK-8213617: JFR should record the PID of the recorded process - JDK-8213966: The ZGC JFR events should be marked as experimental - JDK-8214542: JFR: Old Object Sample event slow on a deep heap in debug builds - JDK-8215175: Inconsistencies in JFR event metadata - JDK-8215284: Reduce noise induced by periodic task getFileSize() - JDK-8215355: Object monitor deadlock with no threads holding the monitor (using jemalloc 5.1) - JDK-8215961: jdk/jfr/event/os/TestCPUInformation.java fails on AArch64 - JDK-8216064: -XX:StartFlightRecording:settings= doesn't work properly - JDK-8216486: Possibility of integer overflow in JfrThreadSampler::run() - JDK-8216559: [JFR] Native libraries not correctly parsed from /proc/self/maps - JDK-8216578: Remove unused/obsolete method in JFR code - JDK-8216995: Clean up JFR command line processing - JDK-8218935: Make jfr strncpy uses GCC 8.x friendly - JDK-8223147: JFR Backport - JDK-8223689: Add JFR Thread Sampling Support - JDK-8223690: Add JFR BiasedLock Event Support - JDK-8223691: Add JFR G1 Region Type Change Event Support - JDK-8223692: Add JFR G1 Heap Summary Event Support - JDK-8224172: assert(jfr_is_event_enabled(id)) failed: invariant - JDK-8227011: Starting a JFR recording in response to JVMTI VMInit and / or Java agent premain corrupts memory - JDK-8227605: Kitchensink fails "assert((((klass)->trace_id() & (JfrTraceIdEpoch::leakp_in_use_this_epoch_bit())) != 0)) failed: invariant" - JDK-8229366: JFR backport allows unchecked writing to memory - JDK-8229401: Fix JFR code cache test failures - JDK-8229708: JFR backport code does not initialize - JDK-8229873: 8229401 broke jdk8u-jfr-incubator - JDK-8230707: JFR related tests are failing - JDK-8231995: two jtreg tests failed after 8229366 is fixed - JDK-8236008: Some backup files were accidentally left in the hotspot tree - JDK-8238076: Fix OpenJDK 7 Bootstrap Broken by JFR Backport - JDK-8238589: Necessary code cleanup in JFR for JDK8u - JDK-8239476: JDK-8238589 broke windows build by moving OrderedPair - JDK-8239867: correct over use of INCLUDE_JFR macro - JDK-8241444: Metaspace::_class_vsm not initialized if compressed class pointers are disabled - JDK-8241902: AIX Build broken after integration of JDK-8223147 (JFR Backport) - JDK-8242788: Non-PCH build is broken after JDK-8191393 ChangeLog: 2020-08-09 Andrew John Hughes <gnu_andrew@member.fsf.org> Bump shenandoah to aarch64-shenandoah-jdk8u262-b01. * Makefile.am: (ICEDTEA_PATCHES): Add backport of JDK-8251120/PR3793 so that JFR in the new Shenandoah HotSpot is not partially enabled. * NEWS: Updated. * hotspot.map.in: Bump shenandoah to aarch64-shenandoah-jdk8u262-b01. * patches/hotspot/aarch32/8143245-pr3548.patch, * patches/hotspot/aarch32/8158260-pr2991-rh1341258.patch, * patches/hotspot/aarch32/pr1975.patch: Replace symlinks with copies of the Shenandoah versions, so the Shenandoah copies can be updated to apply against the new drop. * patches/hotspot/shenandoah/8143245-pr3548.patch: Regenerated due to changed context in thread_linux_zero.cpp from JDK-8203287 (JFR Zero support). * patches/hotspot/shenandoah/8158260-pr2991-rh1341258.patch: Regenerated due to changed globals.hpp context from JDK-8223147 (JFR backport) * patches/hotspot/shenandoah/8251120-pr3793.patch: New patch so that HotSpot builds with ENABLE_JFR unset. * patches/hotspot/shenandoah/pr1975.patch: Regenerated due to changed g1MarkSweep.cpp context from JDK-8223147 (JFR backport)
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Sun, 09 Aug 2020 23:37:37 +0100
parents 9a5af933ef21
children 3c695acbaf51
files ChangeLog Makefile.am NEWS hotspot.map.in patches/hotspot/aarch32/8143245-pr3548.patch patches/hotspot/aarch32/8158260-pr2991-rh1341258.patch patches/hotspot/aarch32/pr1975.patch patches/hotspot/shenandoah/8143245-pr3548.patch patches/hotspot/shenandoah/8158260-pr2991-rh1341258.patch patches/hotspot/shenandoah/8251120-pr3793.patch patches/hotspot/shenandoah/pr1975.patch
diffstat 11 files changed, 1267 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon May 04 01:50:31 2020 +0100
+++ b/ChangeLog	Sun Aug 09 23:37:37 2020 +0100
@@ -1,3 +1,30 @@
+2020-08-09  Andrew John Hughes  <gnu_andrew@member.fsf.org>
+
+	Bump shenandoah to aarch64-shenandoah-jdk8u262-b01.
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Add backport of JDK-8251120/PR3793
+	so that JFR in the new Shenandoah HotSpot is not partially
+	enabled.
+	* NEWS: Updated.
+	* hotspot.map.in: Bump shenandoah to
+	aarch64-shenandoah-jdk8u262-b01.
+	* patches/hotspot/aarch32/8143245-pr3548.patch,
+	* patches/hotspot/aarch32/8158260-pr2991-rh1341258.patch,
+	* patches/hotspot/aarch32/pr1975.patch:
+	Replace symlinks with copies of the Shenandoah versions, so the
+	Shenandoah copies can be updated to apply against the new drop.
+	* patches/hotspot/shenandoah/8143245-pr3548.patch:
+	Regenerated due to changed context in thread_linux_zero.cpp
+	from JDK-8203287 (JFR Zero support).
+	* patches/hotspot/shenandoah/8158260-pr2991-rh1341258.patch:
+	Regenerated due to changed globals.hpp context from
+	JDK-8223147 (JFR backport)
+	* patches/hotspot/shenandoah/8251120-pr3793.patch:
+	New patch so that HotSpot builds with ENABLE_JFR unset.
+	* patches/hotspot/shenandoah/pr1975.patch:
+	Regenerated due to changed g1MarkSweep.cpp context from
+	JDK-8223147 (JFR backport)
+
 2020-05-03  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
 	Start 3.17.0 release cycle.
--- a/Makefile.am	Mon May 04 01:50:31 2020 +0100
+++ b/Makefile.am	Sun Aug 09 23:37:37 2020 +0100
@@ -388,7 +388,8 @@
 ICEDTEA_PATCHES += \
 	patches/hotspot/$(HSBUILD)/8158260-pr2991-rh1341258-aarch64.patch \
 	patches/hotspot/$(HSBUILD)/8222286-pr3727-s390-shenandoah.patch \
-	patches/hotspot/$(HSBUILD)/pr3519-return_value-02.patch
+	patches/hotspot/$(HSBUILD)/pr3519-return_value-02.patch \
+	patches/hotspot/$(HSBUILD)/8251120-pr3793.patch
 endif
 endif
 
--- a/NEWS	Mon May 04 01:50:31 2020 +0100
+++ b/NEWS	Sun Aug 09 23:37:37 2020 +0100
@@ -13,6 +13,72 @@
 
 New in release 3.17.0 (2020-07-XX):
 
+* Shenandoah
+  - JDK-8003209: JFR events for network utilization
+  - JDK-8030680: 292 cleanup from default method code assessment
+  - JDK-8041626: Shutdown tracing event
+  - JDK-8141056: Erroneous assignment in HeapRegionSet.cpp
+  - JDK-8165675: Trace event for thread park has incorrect unit for timeout
+  - JDK-8183925: Decouple crash protection from watcher thread
+  - JDK-8191393: Random crashes during cfree+0x1c
+  - JDK-8195817: JFR.stop should require name of recording
+  - JDK-8195818: JFR.start should increase autogenerated name by one
+  - JDK-8195819: Remove recording=x from jcmd JFR.check output
+  - JDK-8199712: Flight Recorder
+  - JDK-8202578: Revisit location for class unload events
+  - JDK-8202835: jfr/event/os/TestSystemProcess.java fails on missing events
+  - JDK-8203287: Zero fails to build after JDK-8199712 (Flight Recorder)
+  - JDK-8203346: JFR: Inconsistent signature of jfr_add_string_constant
+  - JDK-8203664: JFR start failure after AppCDS archive created with JFR StartFlightRecording
+  - JDK-8203921: JFR thread sampling is missing fixes from JDK-8194552
+  - JDK-8203929: Limit amount of data for JFR.dump
+  - JDK-8205516: JFR tool
+  - JDK-8207392: [PPC64] Implement JFR profiling
+  - JDK-8209960: -Xlog:jfr* doesn't work with the JFR
+  - JDK-8210024: JFR calls virtual is_Java_thread from ~Thread()
+  - JDK-8210776: Upgrade X Window System 6.8.2 to the latest XWD 1.0.7
+  - JDK-8211239: Build fails without JFR: empty JFR events signatures mismatch
+  - JDK-8213015: Inconsistent settings between JFR.configure and -XX:FlightRecorderOptions
+  - JDK-8213421: Line number information for execution samples always 0
+  - JDK-8213617: JFR should record the PID of the recorded process
+  - JDK-8213966: The ZGC JFR events should be marked as experimental
+  - JDK-8214542: JFR: Old Object Sample event slow on a deep heap in debug builds
+  - JDK-8215175: Inconsistencies in JFR event metadata
+  - JDK-8215284: Reduce noise induced by periodic task getFileSize()
+  - JDK-8215355: Object monitor deadlock with no threads holding the monitor (using jemalloc 5.1)
+  - JDK-8216064: -XX:StartFlightRecording:settings= doesn't work properly
+  - JDK-8216486: Possibility of integer overflow in JfrThreadSampler::run()
+  - JDK-8216559: [JFR] Native libraries not correctly parsed from /proc/self/maps
+  - JDK-8216578: Remove unused/obsolete method in JFR code
+  - JDK-8216995: Clean up JFR command line processing
+  - JDK-8218935: Make jfr strncpy uses GCC 8.x friendly
+  - JDK-8223147: JFR Backport
+  - JDK-8223689: Add JFR Thread Sampling Support
+  - JDK-8223690: Add JFR BiasedLock Event Support
+  - JDK-8223691: Add JFR G1 Region Type Change Event Support
+  - JDK-8223692: Add JFR G1 Heap Summary Event Support
+  - JDK-8224172: assert(jfr_is_event_enabled(id)) failed: invariant
+  - JDK-8227011: Starting a JFR recording in response to JVMTI VMInit and / or Java agent premain corrupts memory
+  - JDK-8227605: Kitchensink fails "assert((((klass)->trace_id() & (JfrTraceIdEpoch::leakp_in_use_this_epoch_bit())) != 0)) failed: invariant"
+  - JDK-8229366: JFR backport allows unchecked writing to memory
+  - JDK-8229401: Fix JFR code cache test failures
+  - JDK-8229708: JFR backport code does not initialize
+  - JDK-8229873: 8229401 broke jdk8u-jfr-incubator
+  - JDK-8230707: JFR related tests are failing
+  - JDK-8231995: two jtreg tests failed after 8229366 is fixed
+  - JDK-8236008: Some backup files were accidentally left in the hotspot tree
+  - JDK-8238076: Fix OpenJDK 7 Bootstrap Broken by JFR Backport
+  - JDK-8238589: Necessary code cleanup in JFR for JDK8u
+  - JDK-8239476: JDK-8238589 broke windows build by moving OrderedPair
+  - JDK-8239867: correct over use of INCLUDE_JFR macro
+  - JDK-8241444: Metaspace::_class_vsm not initialized if compressed class pointers are disabled
+  - JDK-8241902: AIX Build broken after integration of JDK-8223147 (JFR Backport)
+  - JDK-8242788: Non-PCH build is broken after JDK-8191393
+* AArch64 port
+  - JDK-8183925: [AArch64] Decouple crash protection from watcher thread
+  - JDK-8199712: [AArch64] Flight Recorder
+  - JDK-8215961: jdk/jfr/event/os/TestCPUInformation.java fails on AArch64
+
 New in release 3.16.0 (2020-05-02):
 
 * Security fixes
--- a/hotspot.map.in	Mon May 04 01:50:31 2020 +0100
+++ b/hotspot.map.in	Sun Aug 09 23:37:37 2020 +0100
@@ -1,4 +1,4 @@
 # version type(drop/hg) url changeset sha256sum
 default drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ eeb08cfebded a6b3e5379b95d6263d8d397cf181d6c07946400f1d5a424a8bc06c1cce9ef1e3
-shenandoah drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ e4e81ae21643 9f3d54522e8d8f97d0d6bc4c3b2e2e8779bdffbac0b7fea5b7a27e6ec665db7c
+shenandoah drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ 7d23269db69a ca473d1f3bc0ac5ca6713a4df31d42d911c50f9789f0dce5b1726bd5a13536b1
 aarch32 drop https://icedtea.classpath.org/download/drops/icedtea8/@ICEDTEA_RELEASE@ ecc1eb1dc760 271c119ce3691af203f6d13709e65a3de1c43cc880fc1d3ffbc05e8ec595589b
--- a/patches/hotspot/aarch32/8143245-pr3548.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/aarch32/8143245-pr3548.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -1,1 +1,146 @@
-../shenandoah/8143245-pr3548.patch
\ No newline at end of file
+# HG changeset patch
+# User sgehwolf
+# Date 1525714161 -3600
+#      Mon May 07 18:29:21 2018 +0100
+# Node ID afb31413c73cbc06420fdb447aa90a7a38258904
+# Parent  bcbc64dfb629c5f188bbf59b8f986ad95963ed60
+8143245, PR3548: Zero build requires disabled warnings
+Reviewed-by: dholmes, coleenp
+
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make	2019-10-10 18:16:42.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make	2019-10-24 04:00:14.945588968 +0100
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ # Copyright 2007, 2008 Red Hat, Inc.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+@@ -29,11 +29,6 @@
+ ifeq ($(JVM_VARIANT_ZEROSHARK), true)
+   WARNING_FLAGS += -Wno-undef
+ endif
+-# Suppress some warning flags that are normally turned on for hotspot,
+-# because some of the zero code has not been updated accordingly.
+-WARNING_FLAGS += -Wno-return-type \
+-  -Wno-format-nonliteral -Wno-format-security \
+-  -Wno-maybe-uninitialized
+  
+ 
+ # If FDLIBM_CFLAGS is non-empty it holds CFLAGS needed to be passed to
+diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2019-10-10 18:16:42.000000000 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+@@ -100,7 +100,7 @@
+     case T_DOUBLE:
+     case T_VOID:
+       return result;
+-    default  : ShouldNotReachHere();
++    default  : ShouldNotReachHere(); return NULL_WORD;
+   }
+ }
+ 
+diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2019-10-10 18:16:42.000000000 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2007, 2008, 2010 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+@@ -62,7 +62,7 @@
+ }
+ 
+ void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) {
+-  ffi_type *ftype;
++  ffi_type *ftype = NULL;
+   switch (type) {
+   case T_VOID:
+     ftype = &ffi_type_void;
+diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2019-10-10 18:16:42.000000000 +0100
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+@@ -1,6 +1,6 @@
+ /*
+  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+- * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
++ * Copyright 2016 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -61,6 +61,7 @@
+ 
+ frame os::get_sender_for_C_frame(frame* fr) {
+   ShouldNotCallThis();
++  return frame(NULL, NULL); // silence compile warning.
+ }
+ 
+ frame os::current_frame() {
+@@ -98,16 +99,19 @@
+ 
+ address os::Linux::ucontext_get_pc(ucontext_t* uc) {
+   ShouldNotCallThis();
++  return NULL; // silence compile warnings
+ }
+ 
+ ExtendedPC os::fetch_frame_from_context(void* ucVoid,
+                                         intptr_t** ret_sp,
+                                         intptr_t** ret_fp) {
+   ShouldNotCallThis();
++  return NULL; // silence compile warnings
+ }
+ 
+ frame os::fetch_frame_from_context(void* ucVoid) {
+   ShouldNotCallThis();
++  return frame(NULL, NULL); // silence compile warnings
+ }
+ 
+ extern "C" JNIEXPORT int
+@@ -247,11 +251,16 @@
+   }
+ #endif // !PRODUCT
+ 
+-  const char *fmt = "caught unhandled signal %d";
+   char buf[64];
+ 
+-  sprintf(buf, fmt, sig);
++  sprintf(buf, "caught unhandled signal %d", sig);
++
++// Silence -Wformat-security warning for fatal()
++PRAGMA_DIAG_PUSH
++PRAGMA_FORMAT_NONLITERAL_IGNORED
+   fatal(buf);
++PRAGMA_DIAG_POP
++  return true; // silence compiler warnings
+ }
+ 
+ void os::Linux::init_thread_fpu_state(void) {
+@@ -260,6 +269,7 @@
+ 
+ int os::Linux::get_fpu_control_word() {
+   ShouldNotCallThis();
++  return -1; // silence compile warnings
+ }
+ 
+ void os::Linux::set_fpu_control_word(int fpu) {
+diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2019-10-10 18:16:42.000000000 +0100
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2019-10-24 03:59:57.009862016 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+@@ -110,6 +110,7 @@
+                                            void* ucontext,
+                                            bool isInJava) {
+     ShouldNotCallThis();
++    return false; // silence compile warning
+   }
+ 
+   // These routines are only used on cpu architectures that
--- a/patches/hotspot/aarch32/8158260-pr2991-rh1341258.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/aarch32/8158260-pr2991-rh1341258.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -1,1 +1,462 @@
-../shenandoah/8158260-pr2991-rh1341258.patch
\ No newline at end of file
+# HG changeset patch
+# User simonis
+# Date 1466155884 -7200
+#      Fri Jun 17 11:31:24 2016 +0200
+# Node ID 4b40867e627dd9043bc67a4795caa9834ef69478
+# Parent  3fc29347b27fdd2075e6ec6d80bb26ab2bf667c1
+8158260, PR2991, RH1341258: PPC64: unaligned Unsafe.getInt can lead to the generation of illegal instructions
+Summary: Adjust instruction generation. Includes portions of 8026049 for test case.
+Reviewed-by: goetz
+Contributed-by: gromero@linux.vnet.ibm.com, horii@jp.ibm.com
+
+diff -Nru openjdk.orig/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp
+--- openjdk.orig/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2019-01-25 13:46:51.799453897 +0000
+@@ -237,6 +251,11 @@
+   if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
+     UseMontgomerySquareIntrinsic = true;
+   }
++
++  // This machine allows unaligned memory accesses
++  if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
++    FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
++  }
+ }
+ 
+ void VM_Version::print_features() {
+diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
+--- openjdk.orig/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2019-01-25 13:46:51.799453897 +0000
+@@ -375,6 +375,13 @@
+     (cache_line_size > ContendedPaddingWidth))
+     ContendedPaddingWidth = cache_line_size;
+ 
++  // This machine does not allow unaligned memory accesses
++  if (UseUnalignedAccesses) {
++    if (!FLAG_IS_DEFAULT(UseUnalignedAccesses))
++      warning("Unaligned memory access is not available on this CPU");
++    FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
++  }
++
+ #ifndef PRODUCT
+   if (PrintMiscellaneous && Verbose) {
+     tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size());
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/vm_version_x86.cpp openjdk/hotspot/src/cpu/x86/vm/vm_version_x86.cpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2019-01-25 13:46:51.799453897 +0000
+@@ -1033,6 +1033,11 @@
+      (cache_line_size > ContendedPaddingWidth))
+      ContendedPaddingWidth = cache_line_size;
+ 
++  // This machine allows unaligned memory accesses
++  if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
++    FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
++  }
++
+ #ifndef PRODUCT
+   if (PrintMiscellaneous && Verbose) {
+     tty->print_cr("Logical CPUs per core: %u",
+diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/vm_version_zero.cpp openjdk/hotspot/src/cpu/zero/vm/vm_version_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2019-01-25 13:46:51.799453897 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+@@ -36,4 +36,11 @@
+ # include "os_bsd.inline.hpp"
+ #endif
+ 
+-// This file is intentionally empty
++
++void VM_Version::initialize() {
++  // This machine does not allow unaligned memory accesses
++  if (! FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
++    warning("Unaligned memory access is not available on this CPU");
++    FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
++  }
++}
+diff -Nru 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	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp	2019-01-25 13:50:10.160334728 +0000
+@@ -385,6 +385,24 @@
+ 
+ #endif // not SUPPORTS_NATIVE_CX8
+ 
++UNSAFE_ENTRY(jboolean, Unsafe_isBigEndian0(JNIEnv *env, jobject unsafe))
++  UnsafeWrapper("Unsafe_IsBigEndian0");
++  {
++#ifdef VM_LITTLE_ENDIAN
++    return false;
++#else
++    return true;
++#endif
++  }
++UNSAFE_END
++
++UNSAFE_ENTRY(jint, Unsafe_unalignedAccess0(JNIEnv *env, jobject unsafe))
++  UnsafeWrapper("Unsafe_UnalignedAccess0");
++  {
++    return UseUnalignedAccesses;
++  }
++UNSAFE_END
++
+ #define DEFINE_GETSETOOP(jboolean, Boolean) \
+  \
+ UNSAFE_ENTRY(jboolean, Unsafe_Get##Boolean##140(JNIEnv *env, jobject unsafe, jobject obj, jint offset)) \
+@@ -1716,6 +1734,11 @@
+     {CC "fullFence",          CC "()V",                    FN_PTR(Unsafe_FullFence)},
+ };
+ 
++JNINativeMethod cpu_methods[] = {
++    {CC"isBigEndian0",       CC"()Z",                    FN_PTR(Unsafe_isBigEndian0)},
++    {CC"unalignedAccess0",   CC"()Z",                    FN_PTR(Unsafe_unalignedAccess0)}
++};
++
+ #undef CC
+ #undef FN_PTR
+ 
+@@ -1815,5 +1838,8 @@
+ 
+     // Fence methods
+     register_natives("1.8 fence methods", env, unsafecls, fence_methods, sizeof(fence_methods)/sizeof(JNINativeMethod));
++
++    // CPU methods
++    register_natives("1.9 CPU methods", env, unsafecls, cpu_methods, sizeof(cpu_methods)/sizeof(JNINativeMethod));
+   }
+ JVM_END
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp	2019-01-16 07:13:59.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2019-01-25 13:46:51.803453833 +0000
+@@ -4003,6 +4003,9 @@
+   product(bool, UseLockedTracing, false,                                    \
+           "Use locked-tracing when doing event-based tracing")              \
+                                                                             \
++  diagnostic(bool, UseUnalignedAccesses, false,                             \
++          "Use unaligned memory accesses in sun.misc.Unsafe")               \
++                                                                            \
+   product_pd(bool, PreserveFramePointer,                                    \
+              "Use the FP register for holding the frame pointer "           \
+              "and not as a general purpose register.")
+diff -Nru openjdk.orig/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java openjdk/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java
+--- openjdk.orig/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	2019-01-25 13:46:51.803453833 +0000
+@@ -0,0 +1,315 @@
++/*
++ * Copyright (c) 2016 SAP SE. 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 8158260
++ * @summary Test unaligned Unsafe accesses
++ * @modules java.base/jdk.internal.misc
++ * @run main/othervm -Diters=20000 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation JdkInternalMiscUnsafeUnalignedAccess
++ * @author volker.simonis@gmail.com
++ */
++
++import java.lang.reflect.Field;
++import java.nio.ByteOrder;
++import sun.misc.Unsafe;
++
++public class JdkInternalMiscUnsafeUnalignedAccess {
++    static final int ITERS = Integer.getInteger("iters", 20_000);
++    private static final boolean BIG_ENDIAN = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN);
++    private static final Unsafe UNSAFE;
++    private static final int SIZE = 1024;
++    private static long memory;
++
++    static {
++        try {
++            Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
++            unsafeField.setAccessible(true);
++            UNSAFE = (Unsafe) unsafeField.get(null);
++        }
++        catch (Exception e) {
++            throw new RuntimeException("Unable to get Unsafe instance.", e);
++        }
++    }
++
++    static int getInt_0() {
++        return UNSAFE.getInt(memory + 0);
++    }
++    static int getInt_1() {
++        return UNSAFE.getInt(memory + 1);
++    }
++    static int getInt_4() {
++        return UNSAFE.getInt(memory + 4);
++    }
++    static int getInt_17() {
++        return UNSAFE.getInt(memory + 17);
++    }
++
++    static long getIntAsLong_0() {
++        return UNSAFE.getInt(memory + 0);
++    }
++    static long getIntAsLong_1() {
++        return UNSAFE.getInt(memory + 1);
++    }
++    static long getIntAsLong_4() {
++        return UNSAFE.getInt(memory + 4);
++    }
++    static long getIntAsLong_17() {
++        return UNSAFE.getInt(memory + 17);
++    }
++
++    static long getLong_0() {
++        return UNSAFE.getLong(memory + 0);
++    }
++    static long getLong_1() {
++        return UNSAFE.getLong(memory + 1);
++    }
++    static long getLong_4() {
++        return UNSAFE.getLong(memory + 4);
++    }
++    static long getLong_8() {
++        return UNSAFE.getLong(memory + 8);
++    }
++    static long getLong_17() {
++        return UNSAFE.getLong(memory + 17);
++    }
++
++    static void putInt_0(int i) {
++        UNSAFE.putInt(memory + 0, i);
++    }
++    static void putInt_1(int i) {
++        UNSAFE.putInt(memory + 1, i);
++    }
++    static void putInt_4(int i) {
++        UNSAFE.putInt(memory + 4, i);
++    }
++    static void putInt_17(int i) {
++        UNSAFE.putInt(memory + 17, i);
++    }
++
++    static void putLong_0(long l) {
++        UNSAFE.putLong(memory + 0, l);
++    }
++    static void putLong_1(long l) {
++        UNSAFE.putLong(memory + 1, l);
++    }
++    static void putLong_4(long l) {
++        UNSAFE.putLong(memory + 4, l);
++    }
++    static void putLong_8(long l) {
++        UNSAFE.putLong(memory + 8, l);
++    }
++    static void putLong_17(long l) {
++        UNSAFE.putLong(memory + 17, l);
++    }
++
++    public static void main(String[] args) throws Exception {
++
++        if (!UNSAFE.unalignedAccess()) {
++            System.out.println("Platform is not supporting unaligned access - nothing to test.");
++            return;
++        }
++
++        memory = UNSAFE.allocateMemory(SIZE);
++
++        UNSAFE.putInt(memory +  0, 0x00112233);
++        UNSAFE.putInt(memory +  4, 0x44556677);
++        UNSAFE.putInt(memory +  8, 0x8899aabb);
++        UNSAFE.putInt(memory + 12, 0xccddeeff);
++        UNSAFE.putInt(memory + 16, 0x01234567);
++        UNSAFE.putInt(memory + 20, 0x89abcdef);
++        UNSAFE.putInt(memory + 24, 0x01234567);
++
++        // Unsafe.getInt()
++        int res;
++        for (int i = 0; i < ITERS; i++) {
++            res = getInt_0();
++            if (res != 0x00112233) {
++                throw new Exception(res + " != 0x00112233");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            res = getInt_1();
++            if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) {
++                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            res = getInt_4();
++            if (res != 0x44556677) {
++                throw new Exception(res + " != 0x44556677");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            res = getInt_17();
++            if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) {
++                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345));
++            }
++        }
++
++        // (long)Unsafe.getInt()
++        long lres;
++        for (int i = 0; i < ITERS; i++) {
++            lres = getIntAsLong_0();
++            if (lres != (long)0x00112233) {
++                throw new Exception(lres + " != 0x00112233");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getIntAsLong_1();
++            if (lres != (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getIntAsLong_4();
++            if (lres != (long)0x44556677) {
++                throw new Exception(lres + " != 0x44556677");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getIntAsLong_17();
++            if (lres != (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345));
++            }
++        }
++
++        // Unsafe.getLong()
++        for (int i = 0; i < ITERS; i++) {
++            lres = getLong_0();
++            if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getLong_1();
++            if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getLong_4();
++            if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getLong_8();
++            if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            lres = getLong_17();
++            if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L));
++            }
++        }
++
++        // Unsafe.putInt()
++        for (int i = 0; i < ITERS; i++) {
++            putInt_0(0x00112233);
++            res = getInt_0();
++            if (res != 0x00112233) {
++                throw new Exception(res + " != 0x00112233");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putInt_1(BIG_ENDIAN ? 0x11223344 : 0x77001122);
++            res = getInt_1();
++            if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) {
++                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putInt_4(0x44556677);
++            res = getInt_4();
++            if (res != 0x44556677) {
++                throw new Exception(res + " != 0x44556677");
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putInt_17(BIG_ENDIAN ? 0x23456789 : 0xef012345);
++            res = getInt_17();
++            if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) {
++                throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345));
++            }
++        }
++
++
++        // Unsafe.putLong()
++        for (int i = 0; i < ITERS; i++) {
++            putLong_0(BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L);
++            lres = getLong_0();
++            if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putLong_1(BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L);
++            lres = getLong_1();
++            if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putLong_4(BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L);
++            lres = getLong_4();
++            if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putLong_8(BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL);
++            lres = getLong_8();
++            if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL));
++            }
++        }
++
++        for (int i = 0; i < ITERS; i++) {
++            putLong_17(BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L);
++            lres = getLong_17();
++            if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) {
++                throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L));
++            }
++        }
++    }
++
++}
--- a/patches/hotspot/aarch32/pr1975.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/aarch32/pr1975.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -1,1 +1,397 @@
-../shenandoah/pr1975.patch
\ No newline at end of file
+# HG changeset patch
+# User andrew
+# Date 1433440378 -3600
+#      Thu Jun 04 18:52:58 2015 +0100
+# Node ID 74654e3651a912ce5b8d61a2604e78264b13eace
+# Parent  9b0cf2504591dc6d53765cb4e987651027ee7650
+PR1975: SystemTap probes for the garbage collector.
+Contributed-by: Lukas Berk <lberk@redhat.com>
+
+diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/oopMap.cpp openjdk/hotspot/src/share/vm/compiler/oopMap.cpp
+--- openjdk.orig/hotspot/src/share/vm/compiler/oopMap.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/compiler/oopMap.cpp	2016-07-21 04:08:08.504603049 +0100
+@@ -33,9 +33,13 @@
+ #include "memory/resourceArea.hpp"
+ #include "runtime/frame.inline.hpp"
+ #include "runtime/signature.hpp"
++#include "utilities/dtrace.hpp"
+ #ifdef COMPILER1
+ #include "c1/c1_Defs.hpp"
+ #endif
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL1(provider, gc__collection__delete, *uintptr_t);
++#endif /* !USDT2 */
+ 
+ // OopMapStream
+ 
+@@ -664,6 +668,9 @@
+                     " - Derived: " INTPTR_FORMAT "  Base: " INTPTR_FORMAT " (Offset: " INTX_FORMAT ")",
+           p2i(derived_loc), p2i((address)*derived_loc), p2i((address)base), offset);
+     }
++#ifndef USDT2
++  HS_DTRACE_PROBE1(hotspot, gc__collection__delete, entry);
++#endif /* !USDT2 */
+ 
+     // Delete entry
+     delete entry;
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -63,6 +63,12 @@
+ #include "runtime/vmThread.hpp"
+ #include "services/memoryService.hpp"
+ #include "services/runtimeService.hpp"
++#include "utilities/dtrace.hpp"
++
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool);
++#endif /* !USDT2 */
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
+@@ -1674,7 +1680,13 @@
+                                             size_t size,
+                                             bool   tlab)
+ {
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, tlab);
++#endif /* !USDT2 */
+   collector()->collect(full, clear_all_soft_refs, size, tlab);
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, tlab);
++#endif /* !USDT2 */
+ }
+ 
+ void CMSCollector::collect(bool   full,
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -51,8 +51,13 @@
+ #include "runtime/thread.hpp"
+ #include "runtime/vmThread.hpp"
+ #include "utilities/copy.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/events.hpp"
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__begin, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__end, *uintptr_t, *uintptr_t);
++ #endif /* !USDT2 */ 
+ class HeapRegion;
+ 
+ void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
+@@ -86,6 +91,9 @@
+   // The marking doesn't preserve the marks of biased objects.
+   BiasedLocking::preserve_marks();
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__G1__begin, &sh, sh->gc_cause());
++#endif /* !USDT2 */
+   mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
+ 
+   mark_sweep_phase2();
+@@ -101,6 +109,9 @@
+   BiasedLocking::restore_marks();
+   GenMarkSweep::deallocate_stacks();
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__G1__end, &sh, sh->gc_cause());
++#endif /* !USDT2 */
+   // "free at last gc" is calculated from these.
+   // CHF: cheating for now!!!
+   //  Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity());
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -43,8 +43,14 @@
+ #include "runtime/java.hpp"
+ #include "runtime/vmThread.hpp"
+ #include "services/memTracker.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/vmError.hpp"
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__begin, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__end, *uintptr_t, *uintptr_t);
++#endif /* !USDT2 */
++
+ PSYoungGen*  ParallelScavengeHeap::_young_gen = NULL;
+ PSOldGen*    ParallelScavengeHeap::_old_gen = NULL;
+ PSAdaptiveSizePolicy* ParallelScavengeHeap::_size_policy = NULL;
+@@ -531,7 +537,13 @@
+   }
+ 
+   VM_ParallelGCSystemGC op(gc_count, full_gc_count, cause);
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__begin, &op, cause);
++#endif /* !USDT2 */
+   VMThread::execute(&op);
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__end, &op, cause);
++#endif /* !USDT2 */
+ }
+ 
+ void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) {
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -56,6 +56,7 @@
+ #include "services/management.hpp"
+ #include "services/memoryService.hpp"
+ #include "services/memTracker.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/events.hpp"
+ #include "utilities/stack.inline.hpp"
+ 
+@@ -63,6 +64,12 @@
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__ParallelCompact__clear, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__parallel__collect, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__move, *uintptr_t, *uintptr_t, *uintptr_t, *uintptr_t);
++#endif /* !USDT2 */
++
+ // All sizes are in HeapWords.
+ const size_t ParallelCompactData::Log2RegionSize  = 16; // 64K words
+ const size_t ParallelCompactData::RegionSize      = (size_t)1 << Log2RegionSize;
+@@ -453,6 +460,9 @@
+ 
+ void ParallelCompactData::clear()
+ {
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__ParallelCompact__clear, &_region_data, _region_data->data_location());
++#endif /* !USDT2 */
+   memset(_region_data, 0, _region_vspace->committed_size());
+   memset(_block_data, 0, _block_vspace->committed_size());
+ }
+@@ -1978,6 +1988,9 @@
+          "should be in vm thread");
+ 
+   ParallelScavengeHeap* heap = gc_heap();
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__parallel__collect, heap, heap->gc_cause());
++#endif /* !USDT2 */
+   GCCause::Cause gc_cause = heap->gc_cause();
+   assert(!heap->is_gc_active(), "not reentrant");
+ 
+@@ -3269,6 +3282,9 @@
+   // past the end of the partial object entering the region (if any).
+   HeapWord* const dest_addr = sd.partial_obj_end(dp_region);
+   HeapWord* const new_top = _space_info[space_id].new_top();
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__move, &beg_addr, &end_addr, &dest_addr, &new_top);
++#endif /* !USDT2 */
+   assert(new_top >= dest_addr, "bad new_top value");
+   const size_t words = pointer_delta(new_top, dest_addr);
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -54,10 +54,20 @@
+ #include "runtime/vmThread.hpp"
+ #include "runtime/vm_operations.hpp"
+ #include "services/memoryService.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/stack.inline.hpp"
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__begin, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__end, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__begin, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__end, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__begin, *uintptr_t, *uintptr_t);
++  HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__end, *uintptr_t, *uintptr_t);
++#endif /* !USDT2 */
++
+ HeapWord*                  PSScavenge::_to_space_top_before_gc = NULL;
+ int                        PSScavenge::_consecutive_skipped_scavenges = 0;
+ ReferenceProcessor*        PSScavenge::_ref_processor = NULL;
+@@ -229,7 +239,13 @@
+   PSAdaptiveSizePolicy* policy = heap->size_policy();
+   IsGCActiveMark mark;
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__begin, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+   const bool scavenge_done = PSScavenge::invoke_no_policy();
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__end, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+   const bool need_full_gc = !scavenge_done ||
+     policy->should_full_GC(heap->old_gen()->free_in_bytes());
+   bool full_gc_done = false;
+@@ -246,9 +262,21 @@
+     const bool clear_all_softrefs = cp->should_clear_all_soft_refs();
+ 
+     if (UseParallelOldGC) {
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__begin, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+       full_gc_done = PSParallelCompact::invoke_no_policy(clear_all_softrefs);
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__end, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+     } else {
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__begin, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+       full_gc_done = PSMarkSweep::invoke_no_policy(clear_all_softrefs);
++#ifndef USDT2
++  HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__end, &heap, heap->gc_cause());
++#endif /* !USDT2 */
+     }
+   }
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -54,6 +54,12 @@
+ #include "utilities/copy.hpp"
+ #include "utilities/globalDefinitions.hpp"
+ #include "utilities/workgroup.hpp"
++#include "utilities/dtrace.hpp"
++
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__begin, bool, bool, size_t, bool);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__end, bool, bool, size_t, bool);
++#endif /* !USDT2 */
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
+@@ -914,6 +920,9 @@
+                                bool   clear_all_soft_refs,
+                                size_t size,
+                                bool   is_tlab) {
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__begin, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+   assert(full || size > 0, "otherwise we don't want to collect");
+ 
+   GenCollectedHeap* gch = GenCollectedHeap::heap();
+@@ -1064,6 +1073,10 @@
+     gch->print_heap_change(gch_prev_used);
+   }
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__end, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
++
+   if (PrintGCDetails && ParallelGCVerbose) {
+     TASKQUEUE_STATS_ONLY(thread_state_set.print_termination_stats());
+     TASKQUEUE_STATS_ONLY(thread_state_set.print_taskqueue_stats());
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/defNewGeneration.cpp openjdk/hotspot/src/share/vm/memory/defNewGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/defNewGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/defNewGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -45,10 +45,16 @@
+ #include "runtime/prefetch.inline.hpp"
+ #include "runtime/thread.inline.hpp"
+ #include "utilities/copy.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/stack.inline.hpp"
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__begin, bool, bool, size_t, bool);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__end, bool, bool, size_t, bool);
++#endif /* !USDT2 */
++
+ //
+ // DefNewGeneration functions.
+ 
+@@ -561,6 +567,9 @@
+                                bool   clear_all_soft_refs,
+                                size_t size,
+                                bool   is_tlab) {
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__begin, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+   assert(full || size > 0, "otherwise we don't want to collect");
+ 
+   GenCollectedHeap* gch = GenCollectedHeap::heap();
+@@ -709,6 +718,10 @@
+   jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+   update_time_of_last_gc(now);
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__end, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
++
+   gch->trace_heap_after_gc(&gc_tracer);
+   gc_tracer.report_tenuring_threshold(tenuring_threshold());
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/generation.cpp openjdk/hotspot/src/share/vm/memory/generation.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/generation.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/generation.cpp	2016-07-21 04:08:08.508602985 +0100
+@@ -41,10 +41,16 @@
+ #include "oops/oop.inline.hpp"
+ #include "runtime/java.hpp"
+ #include "utilities/copy.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/events.hpp"
+ 
+ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool);
++#endif /* !USDT2 */
++
+ Generation::Generation(ReservedSpace rs, size_t initial_size, int level) :
+   _level(level),
+   _ref_processor(NULL) {
+@@ -636,7 +642,13 @@
+   SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer();
+   gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start());
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+   GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs);
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+ 
+   gc_timer->register_gc_end();
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/tenuredGeneration.cpp openjdk/hotspot/src/share/vm/memory/tenuredGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2016-07-21 04:08:38.520114048 +0100
+@@ -32,11 +32,17 @@
+ #include "memory/tenuredGeneration.hpp"
+ #include "oops/oop.inline.hpp"
+ #include "runtime/java.hpp"
++#include "utilities/dtrace.hpp"
+ #include "utilities/macros.hpp"
+ #if INCLUDE_ALL_GCS
+ #include "gc_implementation/shared/parGCAllocBuffer.hpp"
+ #endif
+ 
++#ifndef USDT2
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__begin, bool, bool, size_t, bool);
++  HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__end, bool, bool, size_t, bool);
++#endif /* !USDT2 */
++
+ TenuredGeneration::TenuredGeneration(ReservedSpace rs,
+                                      size_t initial_byte_size, int level,
+                                      GenRemSet* remset) :
+@@ -154,8 +160,14 @@
+                                 size_t size,
+                                 bool   is_tlab) {
+   retire_alloc_buffers_before_full_gc();
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__begin, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+   OneContigSpaceCardGeneration::collect(full, clear_all_soft_refs,
+                                         size, is_tlab);
++#ifndef USDT2
++  HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__end, full, clear_all_soft_refs, size, is_tlab);
++#endif  /* !USDT2 */
+ }
+ 
+ void TenuredGeneration::compute_new_size() {
--- a/patches/hotspot/shenandoah/8143245-pr3548.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/shenandoah/8143245-pr3548.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -8,8 +8,8 @@
 Reviewed-by: dholmes, coleenp
 
 diff -Nru openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make
---- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make	2019-10-10 18:16:42.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/zeroshark.make	2019-10-24 04:00:14.945588968 +0100
+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make	2020-07-21 03:22:17.875932021 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
@@ -30,8 +30,8 @@
  
  # If FDLIBM_CFLAGS is non-empty it holds CFLAGS needed to be passed to
 diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2019-10-10 18:16:42.000000000 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2020-07-21 03:22:17.875932021 +0100
 @@ -100,7 +100,7 @@
      case T_DOUBLE:
      case T_VOID:
@@ -42,8 +42,8 @@
  }
  
 diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2019-10-10 18:16:42.000000000 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp	2020-07-21 03:22:17.876932032 +0100
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -61,8 +61,8 @@
    case T_VOID:
      ftype = &ffi_type_void;
 diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
---- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2019-10-10 18:16:42.000000000 +0100
-+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2019-10-24 03:59:57.009862016 +0100
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	2020-07-21 03:22:17.876932032 +0100
 @@ -1,6 +1,6 @@
  /*
   * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
@@ -127,8 +127,8 @@
  
  void os::Linux::set_fpu_control_word(int fpu) {
 diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
---- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2019-10-10 18:16:42.000000000 +0100
-+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2019-10-24 03:59:57.009862016 +0100
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp	2020-07-21 03:22:43.949200090 +0100
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
@@ -143,4 +143,4 @@
 +    return false; // silence compile warning
    }
  
-   // These routines are only used on cpu architectures that
+   bool pd_get_top_frame_for_profiling(frame* fr_addr,
--- a/patches/hotspot/shenandoah/8158260-pr2991-rh1341258.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/shenandoah/8158260-pr2991-rh1341258.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -10,9 +10,9 @@
 Contributed-by: gromero@linux.vnet.ibm.com, horii@jp.ibm.com
 
 diff -Nru openjdk.orig/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp
---- openjdk.orig/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2019-01-25 13:46:51.799453897 +0000
-@@ -237,6 +251,11 @@
+--- openjdk.orig/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp	2020-07-20 21:22:39.888675486 +0100
+@@ -242,6 +242,11 @@
    if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
      UseMontgomerySquareIntrinsic = true;
    }
@@ -25,9 +25,9 @@
  
  void VM_Version::print_features() {
 diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
---- openjdk.orig/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2019-01-25 13:46:51.799453897 +0000
-@@ -375,6 +375,13 @@
+--- openjdk.orig/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	2020-07-20 21:22:39.889675497 +0100
+@@ -386,6 +386,13 @@
      (cache_line_size > ContendedPaddingWidth))
      ContendedPaddingWidth = cache_line_size;
  
@@ -42,9 +42,9 @@
    if (PrintMiscellaneous && Verbose) {
      tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size());
 diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/vm_version_x86.cpp openjdk/hotspot/src/cpu/x86/vm/vm_version_x86.cpp
---- openjdk.orig/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2019-01-25 13:46:51.799453897 +0000
-@@ -1033,6 +1033,11 @@
+--- openjdk.orig/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	2020-07-20 21:22:39.889675497 +0100
+@@ -1056,6 +1056,11 @@
       (cache_line_size > ContendedPaddingWidth))
       ContendedPaddingWidth = cache_line_size;
  
@@ -57,8 +57,8 @@
    if (PrintMiscellaneous && Verbose) {
      tty->print_cr("Logical CPUs per core: %u",
 diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/vm_version_zero.cpp openjdk/hotspot/src/cpu/zero/vm/vm_version_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2019-01-25 13:46:51.799453897 +0000
+--- openjdk.orig/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/vm_version_zero.cpp	2020-07-20 21:22:39.889675497 +0100
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
@@ -80,9 +80,9 @@
 +  }
 +}
 diff -Nru 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	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp	2019-01-25 13:50:10.160334728 +0000
-@@ -385,6 +385,24 @@
+--- openjdk.orig/hotspot/src/share/vm/prims/unsafe.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/prims/unsafe.cpp	2020-07-20 21:22:39.889675497 +0100
+@@ -395,6 +395,24 @@
  
  #endif // not SUPPORTS_NATIVE_CX8
  
@@ -107,7 +107,7 @@
  #define DEFINE_GETSETOOP(jboolean, Boolean) \
   \
  UNSAFE_ENTRY(jboolean, Unsafe_Get##Boolean##140(JNIEnv *env, jobject unsafe, jobject obj, jint offset)) \
-@@ -1716,6 +1734,11 @@
+@@ -1715,6 +1733,11 @@
      {CC "fullFence",          CC "()V",                    FN_PTR(Unsafe_FullFence)},
  };
  
@@ -119,7 +119,7 @@
  #undef CC
  #undef FN_PTR
  
-@@ -1815,5 +1838,8 @@
+@@ -1814,5 +1837,8 @@
  
      // Fence methods
      register_natives("1.8 fence methods", env, unsafecls, fence_methods, sizeof(fence_methods)/sizeof(JNINativeMethod));
@@ -129,21 +129,21 @@
    }
  JVM_END
 diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
---- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp	2019-01-16 07:13:59.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2019-01-25 13:46:51.803453833 +0000
-@@ -4003,6 +4003,9 @@
-   product(bool, UseLockedTracing, false,                                    \
-           "Use locked-tracing when doing event-based tracing")              \
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2020-07-20 21:26:19.916023747 +0100
+@@ -4001,6 +4001,9 @@
+           "Allocation less than this value will be allocated "              \
+           "using malloc. Larger allocations will use mmap.")                \
                                                                              \
 +  diagnostic(bool, UseUnalignedAccesses, false,                             \
 +          "Use unaligned memory accesses in sun.misc.Unsafe")               \
 +                                                                            \
    product_pd(bool, PreserveFramePointer,                                    \
               "Use the FP register for holding the frame pointer "           \
-              "and not as a general purpose register.")
+              "and not as a general purpose register.")                      \
 diff -Nru openjdk.orig/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java openjdk/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java
 --- openjdk.orig/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	2019-01-25 13:46:51.803453833 +0000
++++ openjdk/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java	2020-07-20 21:22:39.899675604 +0100
 @@ -0,0 +1,315 @@
 +/*
 + * Copyright (c) 2016 SAP SE. All rights reserved.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/shenandoah/8251120-pr3793.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -0,0 +1,96 @@
+diff --git openjdk.orig/hotspot/make/aix/makefiles/buildtree.make openjdk/hotspot/make/aix/makefiles/buildtree.make
+--- openjdk.orig/hotspot/make/aix/makefiles/buildtree.make
++++ openjdk/hotspot/make/aix/makefiles/buildtree.make
+@@ -111,7 +111,7 @@
+ endif
+ endif
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ ALWAYS_EXCLUDE_DIRS += -o -name jfr
+ endif
+ 
+diff --git openjdk.orig/hotspot/make/aix/makefiles/vm.make openjdk/hotspot/make/aix/makefiles/vm.make
+--- openjdk.orig/hotspot/make/aix/makefiles/vm.make
++++ openjdk/hotspot/make/aix/makefiles/vm.make
+@@ -147,7 +147,7 @@
+ LIBJVM_DEBUGINFO   = lib$(JVM).debuginfo
+ LIBJVM_DIZ         = lib$(JVM).diz
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ EXCLUDE_JFR_PATHS:= -o -name jfr -prune
+ endif
+ 
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/buildtree.make openjdk/hotspot/make/bsd/makefiles/buildtree.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/buildtree.make
++++ openjdk/hotspot/make/bsd/makefiles/buildtree.make
+@@ -113,7 +113,7 @@
+ endif
+ endif
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ ALWAYS_EXCLUDE_DIRS += -o -name jfr
+ endif
+ 
+diff --git openjdk.orig/hotspot/make/bsd/makefiles/vm.make openjdk/hotspot/make/bsd/makefiles/vm.make
+--- openjdk.orig/hotspot/make/bsd/makefiles/vm.make
++++ openjdk/hotspot/make/bsd/makefiles/vm.make
+@@ -165,7 +165,7 @@
+   LIBJVM_DIZ         = lib$(JVM).diz
+ endif
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ EXCLUDE_JFR_PATHS:= -o -name jfr -prune
+ endif
+ SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt
+diff --git openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make
+--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make
++++ openjdk/hotspot/make/linux/makefiles/buildtree.make
+@@ -112,7 +112,7 @@
+ endif
+ endif
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ ALWAYS_EXCLUDE_DIRS += -o -name jfr
+ endif
+ 
+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
+@@ -150,7 +150,7 @@
+ LIBJVM_DEBUGINFO   = lib$(JVM).debuginfo
+ LIBJVM_DIZ         = lib$(JVM).diz
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ EXCLUDE_JFR_PATHS:= -o -name jfr -prune
+ endif
+ SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt
+diff --git openjdk.orig/hotspot/make/solaris/makefiles/buildtree.make openjdk/hotspot/make/solaris/makefiles/buildtree.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/buildtree.make
++++ openjdk/hotspot/make/solaris/makefiles/buildtree.make
+@@ -103,7 +103,7 @@
+ endif
+ endif
+ 
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ ALWAYS_EXCLUDE_DIRS += -o -name jfr
+ endif
+ 
+diff --git openjdk.orig/hotspot/make/solaris/makefiles/vm.make openjdk/hotspot/make/solaris/makefiles/vm.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/vm.make
++++ openjdk/hotspot/make/solaris/makefiles/vm.make
+@@ -164,7 +164,7 @@
+ 
+ LIBJVM_DEBUGINFO   = lib$(JVM).debuginfo
+ LIBJVM_DIZ         = lib$(JVM).diz
+-ifeq ($(ENABLE_JFR),false)
++ifneq ($(ENABLE_JFR),true)
+ EXCLUDE_JFR_PATHS:= -o -name jfr -prune
+ endif
+ SPECIAL_PATHS:=adlc c1 dist gc_implementation opto shark libadt
--- a/patches/hotspot/shenandoah/pr1975.patch	Mon May 04 01:50:31 2020 +0100
+++ b/patches/hotspot/shenandoah/pr1975.patch	Sun Aug 09 23:37:37 2020 +0100
@@ -8,8 +8,8 @@
 Contributed-by: Lukas Berk <lberk@redhat.com>
 
 diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/oopMap.cpp openjdk/hotspot/src/share/vm/compiler/oopMap.cpp
---- openjdk.orig/hotspot/src/share/vm/compiler/oopMap.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/compiler/oopMap.cpp	2016-07-21 04:08:08.504603049 +0100
+--- openjdk.orig/hotspot/src/share/vm/compiler/oopMap.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/compiler/oopMap.cpp	2020-07-20 21:45:58.967022854 +0100
 @@ -33,9 +33,13 @@
  #include "memory/resourceArea.hpp"
  #include "runtime/frame.inline.hpp"
@@ -24,7 +24,7 @@
  
  // OopMapStream
  
-@@ -664,6 +668,9 @@
+@@ -663,6 +667,9 @@
                      " - Derived: " INTPTR_FORMAT "  Base: " INTPTR_FORMAT " (Offset: " INTX_FORMAT ")",
            p2i(derived_loc), p2i((address)*derived_loc), p2i((address)base), offset);
      }
@@ -35,8 +35,8 @@
      // Delete entry
      delete entry;
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2020-07-20 21:45:58.968022866 +0100
 @@ -63,6 +63,12 @@
  #include "runtime/vmThread.hpp"
  #include "services/memoryService.hpp"
@@ -50,7 +50,7 @@
  
  PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
  
-@@ -1674,7 +1680,13 @@
+@@ -1678,7 +1684,13 @@
                                              size_t size,
                                              bool   tlab)
  {
@@ -65,23 +65,27 @@
  
  void CMSCollector::collect(bool   full,
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2016-07-21 04:08:08.508602985 +0100
-@@ -51,8 +51,13 @@
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	2020-07-20 21:46:37.233452471 +0100
+@@ -51,11 +51,17 @@
  #include "runtime/thread.hpp"
  #include "runtime/vmThread.hpp"
  #include "utilities/copy.hpp"
 +#include "utilities/dtrace.hpp"
  #include "utilities/events.hpp"
+ #if INCLUDE_JFR
+ #include "jfr/jfr.hpp"
+ #endif // INCLUDE_JFR
  
 +#ifndef USDT2
 +  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__begin, *uintptr_t, *uintptr_t);
 +  HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__end, *uintptr_t, *uintptr_t);
 + #endif /* !USDT2 */ 
++
  class HeapRegion;
  
  void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
-@@ -86,6 +91,9 @@
+@@ -89,6 +95,9 @@
    // The marking doesn't preserve the marks of biased objects.
    BiasedLocking::preserve_marks();
  
@@ -91,7 +95,7 @@
    mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
  
    mark_sweep_phase2();
-@@ -101,6 +109,9 @@
+@@ -104,6 +113,9 @@
    BiasedLocking::restore_marks();
    GenMarkSweep::deallocate_stacks();
  
@@ -102,8 +106,8 @@
    // CHF: cheating for now!!!
    //  Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity());
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	2020-07-20 21:45:58.968022866 +0100
 @@ -43,8 +43,14 @@
  #include "runtime/java.hpp"
  #include "runtime/vmThread.hpp"
@@ -119,7 +123,7 @@
  PSYoungGen*  ParallelScavengeHeap::_young_gen = NULL;
  PSOldGen*    ParallelScavengeHeap::_old_gen = NULL;
  PSAdaptiveSizePolicy* ParallelScavengeHeap::_size_policy = NULL;
-@@ -531,7 +537,13 @@
+@@ -535,7 +541,13 @@
    }
  
    VM_ParallelGCSystemGC op(gc_count, full_gc_count, cause);
@@ -134,8 +138,8 @@
  
  void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) {
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2020-07-20 21:47:00.084709013 +0100
 @@ -56,6 +56,7 @@
  #include "services/management.hpp"
  #include "services/memoryService.hpp"
@@ -143,8 +147,8 @@
 +#include "utilities/dtrace.hpp"
  #include "utilities/events.hpp"
  #include "utilities/stack.inline.hpp"
- 
-@@ -63,6 +64,12 @@
+ #if INCLUDE_JFR
+@@ -66,6 +67,12 @@
  
  PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
  
@@ -157,7 +161,7 @@
  // All sizes are in HeapWords.
  const size_t ParallelCompactData::Log2RegionSize  = 16; // 64K words
  const size_t ParallelCompactData::RegionSize      = (size_t)1 << Log2RegionSize;
-@@ -453,6 +460,9 @@
+@@ -456,6 +463,9 @@
  
  void ParallelCompactData::clear()
  {
@@ -167,7 +171,7 @@
    memset(_region_data, 0, _region_vspace->committed_size());
    memset(_block_data, 0, _block_vspace->committed_size());
  }
-@@ -1978,6 +1988,9 @@
+@@ -1981,6 +1991,9 @@
           "should be in vm thread");
  
    ParallelScavengeHeap* heap = gc_heap();
@@ -177,7 +181,7 @@
    GCCause::Cause gc_cause = heap->gc_cause();
    assert(!heap->is_gc_active(), "not reentrant");
  
-@@ -3269,6 +3282,9 @@
+@@ -3266,6 +3279,9 @@
    // past the end of the partial object entering the region (if any).
    HeapWord* const dest_addr = sd.partial_obj_end(dp_region);
    HeapWord* const new_top = _space_info[space_id].new_top();
@@ -188,8 +192,8 @@
    const size_t words = pointer_delta(new_top, dest_addr);
  
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	2020-07-20 21:45:58.969022877 +0100
 @@ -54,10 +54,20 @@
  #include "runtime/vmThread.hpp"
  #include "runtime/vm_operations.hpp"
@@ -248,8 +252,8 @@
    }
  
 diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2020-07-20 21:45:58.970022888 +0100
 @@ -54,6 +54,12 @@
  #include "utilities/copy.hpp"
  #include "utilities/globalDefinitions.hpp"
@@ -285,8 +289,8 @@
      TASKQUEUE_STATS_ONLY(thread_state_set.print_termination_stats());
      TASKQUEUE_STATS_ONLY(thread_state_set.print_taskqueue_stats());
 diff -Nru openjdk.orig/hotspot/src/share/vm/memory/defNewGeneration.cpp openjdk/hotspot/src/share/vm/memory/defNewGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/defNewGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/defNewGeneration.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/memory/defNewGeneration.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/defNewGeneration.cpp	2020-07-20 21:45:58.970022888 +0100
 @@ -45,10 +45,16 @@
  #include "runtime/prefetch.inline.hpp"
  #include "runtime/thread.inline.hpp"
@@ -326,8 +330,8 @@
    gc_tracer.report_tenuring_threshold(tenuring_threshold());
  
 diff -Nru openjdk.orig/hotspot/src/share/vm/memory/generation.cpp openjdk/hotspot/src/share/vm/memory/generation.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/generation.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/generation.cpp	2016-07-21 04:08:08.508602985 +0100
+--- openjdk.orig/hotspot/src/share/vm/memory/generation.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/generation.cpp	2020-07-20 21:45:58.970022888 +0100
 @@ -41,10 +41,16 @@
  #include "oops/oop.inline.hpp"
  #include "runtime/java.hpp"
@@ -345,7 +349,7 @@
  Generation::Generation(ReservedSpace rs, size_t initial_size, int level) :
    _level(level),
    _ref_processor(NULL) {
-@@ -636,7 +642,13 @@
+@@ -642,7 +648,13 @@
    SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer();
    gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start());
  
@@ -360,8 +364,8 @@
    gc_timer->register_gc_end();
  
 diff -Nru openjdk.orig/hotspot/src/share/vm/memory/tenuredGeneration.cpp openjdk/hotspot/src/share/vm/memory/tenuredGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2016-05-12 21:03:31.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2016-07-21 04:08:38.520114048 +0100
+--- openjdk.orig/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2019-01-03 15:14:40.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/tenuredGeneration.cpp	2020-07-20 21:45:58.970022888 +0100
 @@ -32,11 +32,17 @@
  #include "memory/tenuredGeneration.hpp"
  #include "oops/oop.inline.hpp"