diff --git a/8334780-Crash-assert-h_array_list.not_null-failed-in.patch b/8334780-Crash-assert-h_array_list.not_null-failed-in.patch deleted file mode 100644 index 52dde77a9def47c92bc3c156b29016682fe2c992..0000000000000000000000000000000000000000 --- a/8334780-Crash-assert-h_array_list.not_null-failed-in.patch +++ /dev/null @@ -1,25 +0,0 @@ -Subject: 8334780: Crash: assert(h_array_list.not_null()) failed: invariant - ---- - src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp b/src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp -index 5388349c3..1f594a19e 100644 ---- a/src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp -+++ b/src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp -@@ -136,8 +136,9 @@ jobject JdkJfrEvent::get_all_klasses(TRAPS) { - transform_klasses_to_local_jni_handles(event_subklasses, THREAD); - - Handle h_array_list(THREAD, new_java_util_arraylist(THREAD)); -- assert(h_array_list.not_null(), "invariant"); -- -+ if (h_array_list.is_null()) { -+ return empty_java_util_arraylist; -+ } - static const char add_method_name[] = "add"; - static const char add_method_signature[] = "(Ljava/lang/Object;)Z"; - const Klass* const array_list_klass = JfrJavaSupport::klass(empty_java_util_arraylist); --- -2.33.0 - diff --git a/8352716-tz-Update-Timezone-Data-to-2025b.patch b/8352716-tz-Update-Timezone-Data-to-2025b.patch deleted file mode 100644 index 06f702c08e9a3d8e7380a3cc520bf8b7db4517e7..0000000000000000000000000000000000000000 --- a/8352716-tz-Update-Timezone-Data-to-2025b.patch +++ /dev/null @@ -1,241 +0,0 @@ -From ffbb19474b77e5892735ebaf0f6f734982f48ab7 Mon Sep 17 00:00:00 2001 -Date: Tue, 29 Apr 2025 14:23:11 +0800 -Subject: [PATCH] 8352716: (tz) Update Timezone Data to 2025b - ---- - src/java.base/share/data/tzdata/VERSION | 2 +- - src/java.base/share/data/tzdata/asia | 12 ++- - src/java.base/share/data/tzdata/northamerica | 9 ++ - src/java.base/share/data/tzdata/southamerica | 86 +++++++++++++++---- - src/java.base/share/data/tzdata/zone.tab | 3 +- - .../java/util/TimeZone/TimeZoneData/VERSION | 2 +- - 6 files changed, 94 insertions(+), 20 deletions(-) - -diff --git a/src/java.base/share/data/tzdata/VERSION b/src/java.base/share/data/tzdata/VERSION -index 9c056fac3..4bd54efbc 100644 ---- a/src/java.base/share/data/tzdata/VERSION -+++ b/src/java.base/share/data/tzdata/VERSION -@@ -21,4 +21,4 @@ - # or visit www.oracle.com if you need additional information or have any - # questions. - # --tzdata2025a -+tzdata2025b -diff --git a/src/java.base/share/data/tzdata/asia b/src/java.base/share/data/tzdata/asia -index b0a6fa01d..55b13134f 100644 ---- a/src/java.base/share/data/tzdata/asia -+++ b/src/java.base/share/data/tzdata/asia -@@ -1523,6 +1523,16 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov - # (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977). - # UIT is the Operational Bulletin of International Telecommunication Union. - -+# From Roozbeh Pournader (2025-03-18): -+# ... the exact time of Iran's transition from +0400 to +0330 ... was Friday -+# 1357/8/19 AP=1978-11-10. Here's a newspaper clip from the Ettela'at -+# newspaper, dated 1357/8/14 AP=1978-11-05, translated from Persian -+# (at https://w.wiki/DUEY): -+# Following the government's decision about returning the official time -+# to the previous status, the spokesperson for the Ministry of Energy -+# announced today: At the hour 24 of Friday 19th of Aban (=1978-11-10), -+# the country's time will be pulled back half an hour. -+# - # From Roozbeh Pournader (2003-03-15): - # This is an English translation of what I just found (originally in Persian). - # The Gregorian dates in brackets are mine: -@@ -1650,7 +1660,7 @@ Rule Iran 2021 2022 - Sep 21 24:00 0 - - Zone Asia/Tehran 3:25:44 - LMT 1916 - 3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time - 3:30 Iran %z 1977 Oct 20 24:00 -- 4:00 Iran %z 1979 -+ 4:00 Iran %z 1978 Nov 10 24:00 - 3:30 Iran %z - - -diff --git a/src/java.base/share/data/tzdata/northamerica b/src/java.base/share/data/tzdata/northamerica -index 0a54e63be..21f178ee8 100644 ---- a/src/java.base/share/data/tzdata/northamerica -+++ b/src/java.base/share/data/tzdata/northamerica -@@ -1634,6 +1634,15 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 - # For more on Orillia, see: Daubs K. Bold attempt at daylight saving - # time became a comic failure in Orillia. Toronto Star 2017-07-08. - # https://www.thestar.com/news/insight/2017/07/08/bold-attempt-at-daylight-saving-time-became-a-comic-failure-in-orillia.html -+# From Paul Eggert (2025-03-20): -+# Also see the 1912-06-17 front page of The Evening Sunbeam, -+# reproduced in: Richardson M. "Daylight saving was a confusing -+# time in Orillia" in the 2025-03-15 Orillia Matters. Richardson writes, -+# "The first Sunday after the switch was made, [DST proponent and -+# Orillia mayor William Sword] Frost walked into church an hour late. -+# This became a symbol of the downfall of daylight saving in Orillia." -+# The mayor became known as "Daylight Bill". -+# https://www.orilliamatters.com/local-news/column-daylight-saving-was-a-confusing-time-in-orillia-10377529 - - # From Mark Brader (2010-03-06): - # -diff --git a/src/java.base/share/data/tzdata/southamerica b/src/java.base/share/data/tzdata/southamerica -index 0a5859600..ca3c33859 100644 ---- a/src/java.base/share/data/tzdata/southamerica -+++ b/src/java.base/share/data/tzdata/southamerica -@@ -1269,35 +1269,45 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 - # dates to 2014. - # DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC) - # DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC) --# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf -+# From Tim Parenti (2025-03-22): -+# Decreto 307 of 2014 of the Ministry of the Interior and Public Security, -+# promulgated 2014-01-30 and published 2014-02-19: -+# https://www.diariooficial.interior.gob.cl/media/2014/02/19/do-20140219.pdf#page=1 -+# https://www.bcn.cl/leychile/navegar?idNorma=1059557 - - # From Eduardo Romero Urra (2015-03-03): - # Today has been published officially that Chile will use the DST time - # permanently until March 25 of 2017 --# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg --# --# From Paul Eggert (2015-03-03): --# For now, assume that the extension will persist indefinitely. -+# From Tim Parenti (2025-03-22): -+# Decreto 106 of 2015 of the Ministry of the Interior and Public Security, -+# promulgated 2015-01-27 and published 2015-03-03: -+# https://www.diariooficial.interior.gob.cl/media/2015/03/03/do-20150303.pdf#page=1 -+# https://www.bcn.cl/leychile/navegar?idNorma=1075157 - - # From Juan Correa (2016-03-18): --# The decree regarding DST has been published in today's Official Gazette: --# http://www.diariooficial.interior.gob.cl/versiones-anteriores/do/20160318/ --# http://www.leychile.cl/Navegar?idNorma=1088502 -+# The decree regarding DST has been published in today's Official Gazette... - # It does consider the second Saturday of May and August as the dates - # for the transition; and it lists DST dates until 2019, but I think - # this scheme will stick. --# - # From Paul Eggert (2016-03-18): --# For now, assume the pattern holds for the indefinite future. - # The decree says transitions occur at 24:00; in practice this appears - # to mean 24:00 mainland time, not 24:00 local time, so that Easter - # Island is always two hours behind the mainland. -+# From Tim Parenti (2025-03-22): -+# Decreto 253 of 2016 of the Ministry of the Interior and Public Security, -+# promulgated 2016-03-16 and published 2016-03-18. -+# https://www.diariooficial.interior.gob.cl/media/2016/03/18/do-20160318.pdf#page=1 -+# https://www.bcn.cl/leychile/navegar?idNorma=1088502 - - # From Juan Correa (2016-12-04): - # Magallanes region ... will keep DST (UTC -3) all year round.... - # http://www.soychile.cl/Santiago/Sociedad/2016/12/04/433428/Bachelet-firmo-el-decreto-para-establecer-un-horario-unico-para-la-Region-de-Magallanes.aspx --# From Deborah Goldsmith (2017-01-19): --# http://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf -+# From Tim Parenti (2025-03-22), via Deborah Goldsmith (2017-01-19): -+# Decreto 1820 of 2016 of the Ministry of the Interior and Public Security, -+# promulgated 2016-12-02 and published 2017-01-17: -+# https://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf -+# https://www.bcn.cl/leychile/Navegar?idNorma=1099217 -+# Model this as a change to standard offset effective 2016-12-04. - - # From Juan Correa (2018-08-13): - # As of moments ago, the Ministry of Energy in Chile has announced the new -@@ -1316,13 +1326,20 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 - # https://twitter.com/MinEnergia/status/1029009354001973248 - # "We will keep the new time policy unchanged for at least the next 4 years." - # So we extend the new rules on Saturdays at 24:00 mainland time indefinitely. --# From Juan Correa (2019-02-04): --# http://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf -+# From Tim Parenti (2025-03-22), via Juan Correa (2019-02-04): -+# Decreto 1286 of 2018 of the Ministry of the Interior and Public Security, -+# promulgated 2018-09-21 and published 2018-11-23: -+# https://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf -+# https://www.bcn.cl/leychile/Navegar?idNorma=1125760 - - # From Juan Correa (2022-04-02): - # I found there was a decree published last Thursday that will keep --# Magallanes region to UTC -3 "indefinitely". The decree is available at -+# Magallanes region to UTC -3 "indefinitely". -+# From Tim Parenti (2025-03-22): -+# Decreto 143 of 2022 of the Ministry of the Interior and Public Security, -+# promulgated 2022-03-29 and published 2022-03-31: - # https://www.diariooficial.interior.gob.cl/publicaciones/2022/03/31/43217-B/01/2108910.pdf -+# https://www.bcn.cl/leychile/Navegar?idNorma=1174342 - - # From Juan Correa (2022-08-09): - # the Internal Affairs Ministry (Ministerio del Interior) informed DST -@@ -1331,13 +1348,36 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 - # will keep UTC -3 "indefinitely"... This is because on September 4th - # we will have a voting whether to approve a new Constitution. - # --# From Eduardo Romero Urra (2022-08-17): -+# From Tim Parenti (2025-03-22), via Eduardo Romero Urra (2022-08-17): -+# Decreto 224 of 2022 of the Ministry of the Interior and Public Security, -+# promulgated 2022-07-14 and published 2022-08-13: - # https://www.diariooficial.interior.gob.cl/publicaciones/2022/08/13/43327/01/2172567.pdf -+# https://www.bcn.cl/leychile/navegar?idNorma=1179983 - # - # From Paul Eggert (2022-08-17): - # Although the presidential decree stops at fall 2026, assume that - # similar DST rules will continue thereafter. - -+# From Paul Eggert (2025-01-15): -+# Diario Regional Aysén's Sebastián Martel reports that 94% of Aysén -+# citizens polled in November favored changing the rules from -+# -04/-03-with-DST to -03 all year... -+# https://www.diarioregionalaysen.cl/noticia/actualidad/2024/12/presentan-decision-que-gano-la-votacion-sobre-el-cambio-del-huso-horario-en-aysen -+# -+# From Yonathan Dossow (2025-03-20): -+# [T]oday we have more confirmation of the change. [Aysén] region will keep -+# UTC-3 all year... -+# https://www.cnnchile.com/pais/region-de-aysen-mantendra-horario-de-verano-todo-el-ano_20250320/ -+# https://www.latercera.com/nacional/noticia/tras-consulta-ciudadana-region-de-aysen-mantendra-el-horario-de-verano-durante-todo-el-ano/ -+# https://x.com/min_interior/status/1902692504270672098 -+# -+# From Tim Parenti (2025-03-22), via Eduardo Romero Urra (2025-03-20): -+# Decreto 93 of 2025 of the Ministry of the Interior and Public Security, -+# promulgated 2025-03-11 and published 2025-03-20: -+# https://www.diariooficial.interior.gob.cl/publicaciones/2025/03/20/44104/01/2624263.pdf -+# https://www.bcn.cl/leychile/Navegar?idNorma=1211955 -+# Model this as a change to standard offset effective 2025-03-20. -+ - # Rule NAME FROM TO - IN ON AT SAVE LETTER/S - Rule Chile 1927 1931 - Sep 1 0:00 1:00 - - Rule Chile 1928 1932 - Apr 1 0:00 0 - -@@ -1394,6 +1434,20 @@ Zone America/Santiago -4:42:45 - LMT 1890 - -5:00 1:00 %z 1947 Mar 31 24:00 - -5:00 - %z 1947 May 21 23:00 - -4:00 Chile %z -+Zone America/Coyhaique -4:48:16 - LMT 1890 -+ -4:42:45 - SMT 1910 Jan 10 -+ -5:00 - %z 1916 Jul 1 -+ -4:42:45 - SMT 1918 Sep 10 -+ -4:00 - %z 1919 Jul 1 -+ -4:42:45 - SMT 1927 Sep 1 -+ -5:00 Chile %z 1932 Sep 1 -+ -4:00 - %z 1942 Jun 1 -+ -5:00 - %z 1942 Aug 1 -+ -4:00 - %z 1946 Aug 28 24:00 -+ -5:00 1:00 %z 1947 Mar 31 24:00 -+ -5:00 - %z 1947 May 21 23:00 -+ -4:00 Chile %z 2025 Mar 20 -+ -3:00 - %z - Zone America/Punta_Arenas -4:43:40 - LMT 1890 - -4:42:45 - SMT 1910 Jan 10 - -5:00 - %z 1916 Jul 1 -diff --git a/src/java.base/share/data/tzdata/zone.tab b/src/java.base/share/data/tzdata/zone.tab -index e7a4868c3..c8fc60104 100644 ---- a/src/java.base/share/data/tzdata/zone.tab -+++ b/src/java.base/share/data/tzdata/zone.tab -@@ -162,7 +162,8 @@ CH +4723+00832 Europe/Zurich - CI +0519-00402 Africa/Abidjan - CK -2114-15946 Pacific/Rarotonga - CL -3327-07040 America/Santiago most of Chile --CL -5309-07055 America/Punta_Arenas Region of Magallanes -+CL -4534-07204 America/Coyhaique Aysen Region -+CL -5309-07055 America/Punta_Arenas Magallanes Region - CL -2709-10926 Pacific/Easter Easter Island - CM +0403+00942 Africa/Douala - CN +3114+12128 Asia/Shanghai Beijing Time -diff --git a/test/jdk/java/util/TimeZone/TimeZoneData/VERSION b/test/jdk/java/util/TimeZone/TimeZoneData/VERSION -index 5159b3786..750d9fae2 100644 ---- a/test/jdk/java/util/TimeZone/TimeZoneData/VERSION -+++ b/test/jdk/java/util/TimeZone/TimeZoneData/VERSION -@@ -1 +1 @@ --tzdata2025a -+tzdata2025b --- - diff --git a/Backport-JDK-7036144-GZIPInputStream-readTrailer-use.patch b/Backport-JDK-7036144-GZIPInputStream-readTrailer-use.patch new file mode 100644 index 0000000000000000000000000000000000000000..b9dad132eaf6cfdf048cfca7eda8279209e3636f --- /dev/null +++ b/Backport-JDK-7036144-GZIPInputStream-readTrailer-use.patch @@ -0,0 +1,148 @@ +Subject: [PATCH] Backport JDK-8337393: GZIPInputStream readTrailer uses faulty + available() test for end-of-stream + +--- + .../java/util/zip/GZIPInputStream.java | 24 ++--- + .../zip/GZIP/GZIPInputStreamAvailable.java | 93 +++++++++++++++++++ + 2 files changed, 102 insertions(+), 15 deletions(-) + create mode 100644 test/jdk/java/util/zip/GZIP/GZIPInputStreamAvailable.java + +diff --git a/src/java.base/share/classes/java/util/zip/GZIPInputStream.java b/src/java.base/share/classes/java/util/zip/GZIPInputStream.java +index 850691e02..ad819e271 100644 +--- a/src/java.base/share/classes/java/util/zip/GZIPInputStream.java ++++ b/src/java.base/share/classes/java/util/zip/GZIPInputStream.java +@@ -260,23 +260,17 @@ public class GZIPInputStream extends InflaterInputStream { + (readUInt(in) != (inf.getBytesWritten() & 0xffffffffL))) + throw new ZipException("Corrupt GZIP trailer"); + +- // If there are more bytes available in "in" or +- // the leftover in the "inf" is > 26 bytes: +- // this.trailer(8) + next.header.min(10) + next.trailer(8) + // try concatenated case +- if (this.in.available() > 0 || n > 26) { +- int m = 8; // this.trailer +- try { +- m += readHeader(in); // next.header +- } catch (IOException ze) { +- return true; // ignore any malformed, do nothing +- } +- inf.reset(); +- if (n > m) +- inf.setInput(buf, len - n + m, n - m); +- return false; ++ int m = 8; // this.trailer ++ try { ++ m += readHeader(in); // next.header ++ } catch (IOException ze) { ++ return true; // ignore any malformed, do nothing + } +- return true; ++ inf.reset(); ++ if (n > m) ++ inf.setInput(buf, len - n + m, n - m); ++ return false; + } + + /* +diff --git a/test/jdk/java/util/zip/GZIP/GZIPInputStreamAvailable.java b/test/jdk/java/util/zip/GZIP/GZIPInputStreamAvailable.java +new file mode 100644 +index 000000000..1468c104f +--- /dev/null ++++ b/test/jdk/java/util/zip/GZIP/GZIPInputStreamAvailable.java +@@ -0,0 +1,93 @@ ++/* ++ * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/* @test ++ * @bug 7036144 ++ * @summary Test concatenated gz streams when available() returns zero ++ * @run junit GZIPInputStreamAvailable ++ */ ++ ++import org.junit.jupiter.api.Test; ++ ++import java.io.*; ++import java.util.*; ++import java.util.zip.*; ++ ++import static org.junit.jupiter.api.Assertions.assertArrayEquals; ++ ++public class GZIPInputStreamAvailable { ++ ++ public static final int NUM_COPIES = 100; ++ ++ @Test ++ public void testZeroAvailable() throws IOException { ++ ++ // Create some uncompressed data and then repeat it NUM_COPIES times ++ byte[] uncompressed1 = "this is a test".getBytes("ASCII"); ++ byte[] uncompressedN = repeat(uncompressed1, NUM_COPIES); ++ ++ // Compress the original data and then repeat that NUM_COPIES times ++ byte[] compressed1 = deflate(uncompressed1); ++ byte[] compressedN = repeat(compressed1, NUM_COPIES); ++ ++ // (a) Read back inflated data from a stream where available() is accurate and verify ++ byte[] readback1 = inflate(new ByteArrayInputStream(compressedN)); ++ assertArrayEquals(uncompressedN, readback1); ++ ++ // (b) Read back inflated data from a stream where available() always returns zero and verify ++ byte[] readback2 = inflate(new ZeroAvailableStream(new ByteArrayInputStream(compressedN))); ++ assertArrayEquals(uncompressedN, readback2); ++ } ++ ++ public static byte[] repeat(byte[] data, int count) { ++ byte[] repeat = new byte[data.length * count]; ++ int off = 0; ++ for (int i = 0; i < count; i++) { ++ System.arraycopy(data, 0, repeat, off, data.length); ++ off += data.length; ++ } ++ return repeat; ++ } ++ ++ public static byte[] deflate(byte[] data) throws IOException { ++ ByteArrayOutputStream buf = new ByteArrayOutputStream(); ++ try (GZIPOutputStream out = new GZIPOutputStream(buf)) { ++ out.write(data); ++ } ++ return buf.toByteArray(); ++ } ++ ++ public static byte[] inflate(InputStream in) throws IOException { ++ return new GZIPInputStream(in).readAllBytes(); ++ } ++ ++ public static class ZeroAvailableStream extends FilterInputStream { ++ public ZeroAvailableStream(InputStream in) { ++ super(in); ++ } ++ @Override ++ public int available() { ++ return 0; ++ } ++ } ++} +-- +2.48.1 + diff --git a/Backport-JDK-8326957-Implement-JEP-474-ZGC-Generatio.patch b/Backport-JDK-8326957-Implement-JEP-474-ZGC-Generatio.patch index 1bc34960686834afaf3bf3ea4f4b027f0af1e15c..2e6333fcf1d9426046f1d8961c20fd84bdfecba7 100644 --- a/Backport-JDK-8326957-Implement-JEP-474-ZGC-Generatio.patch +++ b/Backport-JDK-8326957-Implement-JEP-474-ZGC-Generatio.patch @@ -83,113 +83,113 @@ index 000000000..17e2e70f4 --- /dev/null +++ b/test/hotspot/jtreg/gc/x/TestDeprecated.java @@ -0,0 +1,50 @@ -+/* -+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package gc.x; -+ -+/* -+ * @test TestDeprecated -+ * @requires vm.gc.ZSinglegen -+ * @summary Test ZGenerational Deprecated -+ * @library /test/lib -+ * @run driver gc.x.TestDeprecated -+ */ -+ -+import java.util.LinkedList; -+import jdk.test.lib.process.ProcessTools; -+ -+public class TestDeprecated { -+ static class Test { -+ public static void main(String[] args) throws Exception {} -+ } -+ public static void main(String[] args) throws Exception { -+ ProcessTools.executeLimitedTestJava("-XX:+UseZGC", -+ "-XX:-ZGenerational", -+ "-Xlog:gc+init", -+ Test.class.getName()) -+ .shouldContain("Option ZGenerational was deprecated") -+ .shouldContain("Using deprecated non-generational mode") -+ .shouldHaveExitValue(0); -+ } -+} ++/* ++ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package gc.x; ++ ++/* ++ * @test TestDeprecated ++ * @requires vm.gc.ZSinglegen ++ * @summary Test ZGenerational Deprecated ++ * @library /test/lib ++ * @run driver gc.x.TestDeprecated ++ */ ++ ++import java.util.LinkedList; ++import jdk.test.lib.process.ProcessTools; ++ ++public class TestDeprecated { ++ static class Test { ++ public static void main(String[] args) throws Exception {} ++ } ++ public static void main(String[] args) throws Exception { ++ ProcessTools.executeLimitedTestJava("-XX:+UseZGC", ++ "-XX:-ZGenerational", ++ "-Xlog:gc+init", ++ Test.class.getName()) ++ .shouldContain("Option ZGenerational was deprecated") ++ .shouldContain("Using deprecated non-generational mode") ++ .shouldHaveExitValue(0); ++ } ++} diff --git a/test/hotspot/jtreg/gc/z/TestDefault.java b/test/hotspot/jtreg/gc/z/TestDefault.java new file mode 100644 index 000000000..c693e8745 --- /dev/null +++ b/test/hotspot/jtreg/gc/z/TestDefault.java @@ -0,0 +1,51 @@ -+/* -+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package gc.z; -+ -+/* -+ * @test TestDefault -+ * @requires vm.gc.ZGenerational -+ * @summary Test that ZGC Generational Mode is Default -+ * @library /test/lib -+ * @run driver gc.z.TestDefault -+ */ -+ -+import java.util.LinkedList; -+import jdk.test.lib.process.ProcessTools; -+ -+public class TestDefault { -+ static class Test { -+ public static void main(String[] args) throws Exception {} -+ } -+ public static void main(String[] args) throws Exception { -+ ProcessTools.executeLimitedTestJava("-XX:+UseZGC", -+ "-Xlog:gc+init", -+ Test.class.getName()) -+ .shouldNotContain("Option ZGenerational was deprecated") -+ .shouldNotContain("Using deprecated non-generational mode") -+ .shouldContain("GC Workers for Old Generation") -+ .shouldContain("GC Workers for Young Generation") -+ .shouldHaveExitValue(0); -+ } -+} ++/* ++ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package gc.z; ++ ++/* ++ * @test TestDefault ++ * @requires vm.gc.ZGenerational ++ * @summary Test that ZGC Generational Mode is Default ++ * @library /test/lib ++ * @run driver gc.z.TestDefault ++ */ ++ ++import java.util.LinkedList; ++import jdk.test.lib.process.ProcessTools; ++ ++public class TestDefault { ++ static class Test { ++ public static void main(String[] args) throws Exception {} ++ } ++ public static void main(String[] args) throws Exception { ++ ProcessTools.executeLimitedTestJava("-XX:+UseZGC", ++ "-Xlog:gc+init", ++ Test.class.getName()) ++ .shouldNotContain("Option ZGenerational was deprecated") ++ .shouldNotContain("Using deprecated non-generational mode") ++ .shouldContain("GC Workers for Old Generation") ++ .shouldContain("GC Workers for Young Generation") ++ .shouldHaveExitValue(0); ++ } ++} diff --git a/test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java b/test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java index 95dd88c72..0c9c2d6ea 100644 --- a/test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java diff --git a/Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch b/Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch deleted file mode 100644 index b6a47291de0cb32161093d91b3ce1372e7bc456f..0000000000000000000000000000000000000000 --- a/Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch +++ /dev/null @@ -1,120 +0,0 @@ -Subject: Backport JDK-8328107 Shenandoah/C2: TestVerifyLoopOptimizations test failure - ---- - .../gc/shenandoah/c2/shenandoahSupport.cpp | 8 ++ - .../compiler/TestBarrierOnLoopBackedge.java | 84 +++++++++++++++++++ - 2 files changed, 92 insertions(+) - create mode 100644 test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java - -diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp -index acf4b8f08..ce6403cb4 100644 ---- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp -+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp -@@ -1321,6 +1321,14 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) { - OuterStripMinedLoopNode* outer = head->as_OuterStripMinedLoop(); - hide_strip_mined_loop(outer, outer->unique_ctrl_out()->as_CountedLoop(), phase); - } -+ if (head->is_BaseCountedLoop() && ctrl->is_IfProj() && ctrl->in(0)->is_BaseCountedLoopEnd() && -+ head->as_BaseCountedLoop()->loopexit() == ctrl->in(0)) { -+ Node* entry = head->in(LoopNode::EntryControl); -+ Node* backedge = head->in(LoopNode::LoopBackControl); -+ Node* new_head = new LoopNode(entry, backedge); -+ phase->register_control(new_head, phase->get_loop(entry), entry); -+ phase->lazy_replace(head, new_head); -+ } - } - - // Expand load-reference-barriers -diff --git a/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java b/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java -new file mode 100644 -index 000000000..a72c7d69d ---- /dev/null -+++ b/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java -@@ -0,0 +1,84 @@ -+/* -+ * Copyright (c) 2024, Red Hat, Inc. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/** -+ * @test -+ * @bug 8328107 -+ * @summary Barrier expanded on backedge break loop verification code -+ * @requires vm.gc.Shenandoah -+ * -+ * @run main/othervm -XX:+UseShenandoahGC -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestBarrierOnLoopBackedge::notInlined -+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyLoopOptimizations TestBarrierOnLoopBackedge -+ * @run main/othervm -XX:+UseShenandoahGC -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestBarrierOnLoopBackedge::notInlined -+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyLoopOptimizations -XX:-UseCountedLoopSafepoints TestBarrierOnLoopBackedge -+ */ -+ -+public class TestBarrierOnLoopBackedge { -+ private static A field = new A(); -+ private static final A finalField = new A(); -+ private static float floatField; -+ -+ public static void main(String[] args) { -+ A[] array = new A[1]; -+ array[0] = finalField; -+ for (int i = 0; i < 20_000; i++) { -+ test1(); -+ test2(); -+ } -+ } -+ -+ private static void test1() { -+ floatField = field.f; -+ for (int i = 0; i < 1000; i++) { -+ notInlined(field); // load barrier split thru phi and ends up on back edge -+ if (i % 2 == 0) { -+ field = finalField; -+ } -+ } -+ } -+ -+ private static void test2() { -+ A[] array = new A[1]; -+ notInlined(array); -+ int i = 0; -+ A a = array[0]; -+ for (;;) { -+ synchronized (new Object()) { -+ } -+ notInlined(a); -+ i++; -+ if (i >= 1000) { -+ break; -+ } -+ a = array[0]; // load barrier pinned on backedge -+ } -+ } -+ -+ private static void notInlined(Object a) { -+ -+ } -+ -+ private static class A { -+ float f; -+ } -+} --- -2.33.0 - diff --git a/Backport-JDK-8333805-Replaying-compilation-with-null.patch b/Backport-JDK-8333805-Replaying-compilation-with-null.patch deleted file mode 100644 index df99142cf9cf3ecb9b5c42b110ce7bd832626b8e..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333805-Replaying-compilation-with-null.patch +++ /dev/null @@ -1,242 +0,0 @@ -Subject: Backport JDK-8333805 Replaying compilation with null static final fields results in a crash - ---- - src/hotspot/share/ci/ciInstanceKlass.cpp | 10 ++- - src/hotspot/share/ci/ciReplay.cpp | 89 ++++++++++--------- - .../ciReplay/TestNullStaticField.java | 82 +++++++++++++++++ - 3 files changed, 136 insertions(+), 45 deletions(-) - create mode 100644 test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java - -diff --git a/src/hotspot/share/ci/ciInstanceKlass.cpp b/src/hotspot/share/ci/ciInstanceKlass.cpp -index fa084e228..240bb25ae 100644 ---- a/src/hotspot/share/ci/ciInstanceKlass.cpp -+++ b/src/hotspot/share/ci/ciInstanceKlass.cpp -@@ -661,7 +661,8 @@ class StaticFinalFieldPrinter : public FieldClosure { - ResourceMark rm; - oop mirror = fd->field_holder()->java_mirror(); - _out->print("staticfield %s %s %s ", _holder, fd->name()->as_quoted_ascii(), fd->signature()->as_quoted_ascii()); -- switch (fd->field_type()) { -+ BasicType field_type = fd->field_type(); -+ switch (field_type) { - case T_BYTE: _out->print_cr("%d", mirror->byte_field(fd->offset())); break; - case T_BOOLEAN: _out->print_cr("%d", mirror->bool_field(fd->offset())); break; - case T_SHORT: _out->print_cr("%d", mirror->short_field(fd->offset())); break; -@@ -682,9 +683,12 @@ class StaticFinalFieldPrinter : public FieldClosure { - case T_OBJECT: { - oop value = mirror->obj_field_acquire(fd->offset()); - if (value == nullptr) { -- _out->print_cr("null"); -+ if (field_type == T_ARRAY) { -+ _out->print("%d", -1); -+ } -+ _out->cr(); - } else if (value->is_instance()) { -- assert(fd->field_type() == T_OBJECT, ""); -+ assert(field_type == T_OBJECT, ""); - if (value->is_a(vmClasses::String_klass())) { - const char* ascii_value = java_lang_String::as_quoted_ascii(value); - _out->print_cr("\"%s\"", (ascii_value != nullptr) ? ascii_value : ""); -diff --git a/src/hotspot/share/ci/ciReplay.cpp b/src/hotspot/share/ci/ciReplay.cpp -index 68d4308a2..3171a5d51 100644 ---- a/src/hotspot/share/ci/ciReplay.cpp -+++ b/src/hotspot/share/ci/ciReplay.cpp -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it -@@ -1065,46 +1065,48 @@ class CompileReplay : public StackObj { - int length = parse_int("array length"); - oop value = nullptr; - -- if (field_signature[1] == JVM_SIGNATURE_ARRAY) { -- // multi dimensional array -- ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK); -- if (kelem == nullptr) { -- return; -- } -- int rank = 0; -- while (field_signature[rank] == JVM_SIGNATURE_ARRAY) { -- rank++; -- } -- jint* dims = NEW_RESOURCE_ARRAY(jint, rank); -- dims[0] = length; -- for (int i = 1; i < rank; i++) { -- dims[i] = 1; // These aren't relevant to the compiler -- } -- value = kelem->multi_allocate(rank, dims, CHECK); -- } else { -- if (strcmp(field_signature, "[B") == 0) { -- value = oopFactory::new_byteArray(length, CHECK); -- } else if (strcmp(field_signature, "[Z") == 0) { -- value = oopFactory::new_boolArray(length, CHECK); -- } else if (strcmp(field_signature, "[C") == 0) { -- value = oopFactory::new_charArray(length, CHECK); -- } else if (strcmp(field_signature, "[S") == 0) { -- value = oopFactory::new_shortArray(length, CHECK); -- } else if (strcmp(field_signature, "[F") == 0) { -- value = oopFactory::new_floatArray(length, CHECK); -- } else if (strcmp(field_signature, "[D") == 0) { -- value = oopFactory::new_doubleArray(length, CHECK); -- } else if (strcmp(field_signature, "[I") == 0) { -- value = oopFactory::new_intArray(length, CHECK); -- } else if (strcmp(field_signature, "[J") == 0) { -- value = oopFactory::new_longArray(length, CHECK); -- } else if (field_signature[0] == JVM_SIGNATURE_ARRAY && -- field_signature[1] == JVM_SIGNATURE_CLASS) { -- parse_klass(CHECK); // eat up the array class name -- Klass* kelem = resolve_klass(field_signature + 1, CHECK); -- value = oopFactory::new_objArray(kelem, length, CHECK); -+ if (length != -1) { -+ if (field_signature[1] == JVM_SIGNATURE_ARRAY) { -+ // multi dimensional array -+ ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK); -+ if (kelem == nullptr) { -+ return; -+ } -+ int rank = 0; -+ while (field_signature[rank] == JVM_SIGNATURE_ARRAY) { -+ rank++; -+ } -+ jint* dims = NEW_RESOURCE_ARRAY(jint, rank); -+ dims[0] = length; -+ for (int i = 1; i < rank; i++) { -+ dims[i] = 1; // These aren't relevant to the compiler -+ } -+ value = kelem->multi_allocate(rank, dims, CHECK); - } else { -- report_error("unhandled array staticfield"); -+ if (strcmp(field_signature, "[B") == 0) { -+ value = oopFactory::new_byteArray(length, CHECK); -+ } else if (strcmp(field_signature, "[Z") == 0) { -+ value = oopFactory::new_boolArray(length, CHECK); -+ } else if (strcmp(field_signature, "[C") == 0) { -+ value = oopFactory::new_charArray(length, CHECK); -+ } else if (strcmp(field_signature, "[S") == 0) { -+ value = oopFactory::new_shortArray(length, CHECK); -+ } else if (strcmp(field_signature, "[F") == 0) { -+ value = oopFactory::new_floatArray(length, CHECK); -+ } else if (strcmp(field_signature, "[D") == 0) { -+ value = oopFactory::new_doubleArray(length, CHECK); -+ } else if (strcmp(field_signature, "[I") == 0) { -+ value = oopFactory::new_intArray(length, CHECK); -+ } else if (strcmp(field_signature, "[J") == 0) { -+ value = oopFactory::new_longArray(length, CHECK); -+ } else if (field_signature[0] == JVM_SIGNATURE_ARRAY && -+ field_signature[1] == JVM_SIGNATURE_CLASS) { -+ Klass* actual_array_klass = parse_klass(CHECK); -+ Klass* kelem = ObjArrayKlass::cast(actual_array_klass)->element_klass(); -+ value = oopFactory::new_objArray(kelem, length, CHECK); -+ } else { -+ report_error("unhandled array staticfield"); -+ } - } - } - java_mirror->obj_field_put(fd.offset(), value); -@@ -1142,8 +1144,11 @@ class CompileReplay : public StackObj { - Handle value = java_lang_String::create_from_str(string_value, CHECK); - java_mirror->obj_field_put(fd.offset(), value()); - } else if (field_signature[0] == JVM_SIGNATURE_CLASS) { -- Klass* k = resolve_klass(string_value, CHECK); -- oop value = InstanceKlass::cast(k)->allocate_instance(CHECK); -+ oop value = nullptr; -+ if (string_value != nullptr) { -+ Klass* k = resolve_klass(string_value, CHECK); -+ value = InstanceKlass::cast(k)->allocate_instance(CHECK); -+ } - java_mirror->obj_field_put(fd.offset(), value); - } else { - report_error("unhandled staticfield"); -diff --git a/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java b/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java -new file mode 100644 -index 000000000..47a78ad5e ---- /dev/null -+++ b/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java -@@ -0,0 +1,82 @@ -+/* -+ * Copyright (c) 2024, Red Hat, Inc. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * @test -+ * @bug 8333805 -+ * @library / /test/lib -+ * @summary Replaying compilation with null static final fields results in a crash -+ * @requires vm.flightRecorder != true & vm.compMode != "Xint" & vm.compMode != "Xcomp" & vm.debug == true & vm.compiler2.enabled -+ * @modules java.base/jdk.internal.misc -+ * @build jdk.test.whitebox.WhiteBox -+ * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox -+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -+ * compiler.ciReplay.TestNullStaticField -+ */ -+ -+package compiler.ciReplay; -+ -+public class TestNullStaticField extends DumpReplayBase { -+ -+ public static void main(String[] args) { -+ new TestNullStaticField().runTest(TIERED_DISABLED_VM_OPTION); -+ } -+ -+ @Override -+ public void testAction() { -+ positiveTest(TIERED_DISABLED_VM_OPTION, "-XX:+ReplayIgnoreInitErrors"); -+ } -+ -+ @Override -+ public String getTestClass() { -+ return TestClassNullStaticField.class.getName(); -+ } -+ -+} -+ -+class TestClassNullStaticField { -+ -+ static final Object[] staticNullArrayField = null; -+ static final Object[][] staticNullMultiArrayField = null; -+ static final Object staticNullObjectField = null; -+ static final String staticNullStringField = null; -+ static final int[] staticNullIntArrayField = null; -+ static final Object[] staticNotNullArrayField = new A[10]; -+ static final Object[][] staticNotNullMultiArrayField = new A[10][10]; -+ static final Object staticNotNullObjectField = new A(); -+ static final String staticNotNullStringField = "Not null"; -+ static final int[] staticNotNullIntArrayField = new int[10]; -+ -+ public static void main(String[] args) { -+ for (int i = 0; i < 20_000; i++) { -+ test(); -+ } -+ } -+ public static void test() { -+ -+ } -+ -+ private static class A { -+ } -+} -+ --- -2.33.0 - diff --git a/Backport-JDK-8338010-WB_IsFrameDeoptimized-miss-Reso.patch b/Backport-JDK-8338010-WB_IsFrameDeoptimized-miss-Reso.patch deleted file mode 100644 index 761150fd686eccb1b7b44329ea546542eba25dc9..0000000000000000000000000000000000000000 --- a/Backport-JDK-8338010-WB_IsFrameDeoptimized-miss-Reso.patch +++ /dev/null @@ -1,28 +0,0 @@ -Subject: Backport JDK-8338010 WB_IsFrameDeoptimized miss ResourceMark - ---- - src/hotspot/share/prims/whitebox.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp -index 4a7e69ca8..f83e84e30 100644 ---- a/src/hotspot/share/prims/whitebox.cpp -+++ b/src/hotspot/share/prims/whitebox.cpp -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it -@@ -771,6 +771,7 @@ WB_END - WB_ENTRY(jboolean, WB_IsFrameDeoptimized(JNIEnv* env, jobject o, jint depth)) - bool result = false; - if (thread->has_last_Java_frame()) { -+ ResourceMark rm(THREAD); - RegisterMap reg_map(thread, - RegisterMap::UpdateMap::include, - RegisterMap::ProcessFrames::include, --- -2.33.0 - diff --git a/Backport-JDK-8340532-C2-assert-is_OuterStripMinedLoo.patch b/Backport-JDK-8340532-C2-assert-is_OuterStripMinedLoo.patch new file mode 100644 index 0000000000000000000000000000000000000000..3892e5426b121b7bda33f59e537f51686a855d8a --- /dev/null +++ b/Backport-JDK-8340532-C2-assert-is_OuterStripMinedLoo.patch @@ -0,0 +1,116 @@ +Subject: [PATCH] Backport JDK-8340532: C2: assert(is_OuterStripMinedLoop()) + failed: invalid node class: IfTrue + +--- + src/hotspot/share/opto/ifnode.cpp | 8 +++ + src/hotspot/share/opto/loopTransform.cpp | 1 - + .../TestIdenticalDominatingCLE.java | 66 +++++++++++++++++++ + 3 files changed, 74 insertions(+), 1 deletion(-) + create mode 100644 test/hotspot/jtreg/compiler/loopstripmining/TestIdenticalDominatingCLE.java + +diff --git a/src/hotspot/share/opto/ifnode.cpp b/src/hotspot/share/opto/ifnode.cpp +index f63f4ae80..f0e1b154d 100644 +--- a/src/hotspot/share/opto/ifnode.cpp ++++ b/src/hotspot/share/opto/ifnode.cpp +@@ -1494,6 +1494,14 @@ Node* IfNode::Ideal(PhaseGVN *phase, bool can_reshape) { + Node* prev_dom = search_identical(dist); + + if (prev_dom != nullptr) { ++ // Dominating CountedLoopEnd (left over from some now dead loop) will become the new loop exit. Outer strip mined ++ // loop will go away. Mark this loop as no longer strip mined. ++ if (is_CountedLoopEnd()) { ++ CountedLoopNode* counted_loop_node = as_CountedLoopEnd()->loopnode(); ++ if (counted_loop_node != nullptr) { ++ counted_loop_node->clear_strip_mined(); ++ } ++ } + // Replace dominated IfNode + return dominated_by(prev_dom, igvn, false); + } +diff --git a/src/hotspot/share/opto/loopTransform.cpp b/src/hotspot/share/opto/loopTransform.cpp +index e35657cd1..bb9a54919 100644 +--- a/src/hotspot/share/opto/loopTransform.cpp ++++ b/src/hotspot/share/opto/loopTransform.cpp +@@ -717,7 +717,6 @@ void PhaseIdealLoop::do_peeling(IdealLoopTree *loop, Node_List &old_new) { + #endif + } + } +- Node* entry = head->in(LoopNode::EntryControl); + + // Step 1: Clone the loop body. The clone becomes the peeled iteration. + // The pre-loop illegally has 2 control users (old & new loops). +diff --git a/test/hotspot/jtreg/compiler/loopstripmining/TestIdenticalDominatingCLE.java b/test/hotspot/jtreg/compiler/loopstripmining/TestIdenticalDominatingCLE.java +new file mode 100644 +index 000000000..371c0fb2b +--- /dev/null ++++ b/test/hotspot/jtreg/compiler/loopstripmining/TestIdenticalDominatingCLE.java +@@ -0,0 +1,66 @@ ++/* ++ * Copyright (c) 2024, Red Hat, Inc. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/** ++ * @test ++ * @bug 8340532 ++ * @summary C2: assert(is_OuterStripMinedLoop()) failed: invalid node class: IfTrue ++ * @requires vm.compiler2.enabled ++ * @run main/othervm -XX:CompileOnly=TestIdenticalDominatingCLE::* -XX:CompileThreshold=100 -Xcomp -XX:-TieredCompilation ++ * -XX:-RangeCheckElimination -XX:LoopMaxUnroll=0 TestIdenticalDominatingCLE ++ * ++ */ ++ ++ ++public class TestIdenticalDominatingCLE { ++ boolean bFld; ++ long lFld; ++ float[][] fArr = new float[6][6]; ++ ++ public static void main(String[] var0) { ++ TestIdenticalDominatingCLE t = new TestIdenticalDominatingCLE(); ++ t.test(); ++ } ++ ++ void test() { ++ int i = 0; ++ do { ++ for (int j = 0; j < 2; j++) { ++ float f = fArr[j][3] / Float.valueOf((float)1.318095814E9); ++ switch (i) { ++ case 1: ++ if (bFld ^ bFld) { ++ } else { ++ for (int k = 0; k < 600; k++) { ++ } ++ } ++ break; ++ default: ++ if (bFld) { ++ } ++ } ++ } ++ lFld = ++i; ++ } while (i < 6); ++ } ++} +-- +2.48.1 + diff --git a/Backport-JDK-8348554-Enhance-Linux-kernel-version-ch.patch b/Backport-JDK-8348554-Enhance-Linux-kernel-version-ch.patch index 0e74d63883d714b350a9d8c2d4fe87c28cb76ec5..383b74c166d1be8b15b8c9f1a4867708d353a3f2 100644 --- a/Backport-JDK-8348554-Enhance-Linux-kernel-version-ch.patch +++ b/Backport-JDK-8348554-Enhance-Linux-kernel-version-ch.patch @@ -56,13 +56,13 @@ index 7cb862d7c3e..22216a568bc 100644 FILE* fh; uint64_t userTicks, niceTicks, systemTicks, idleTicks; diff --git a/src/hotspot/os/linux/os_linux.hpp b/src/hotspot/os/linux/os_linux.hpp -index 029f2aa7a52..f2901480d29 100644 +index 49f2777d1..b8fde8265 100644 --- a/src/hotspot/os/linux/os_linux.hpp +++ b/src/hotspot/os/linux/os_linux.hpp -@@ -109,7 +109,13 @@ class os::Linux { - bool has_steal_ticks; +@@ -107,7 +107,13 @@ class os::Linux { }; + static int active_processor_count(); - static void kernel_version(long* major, long* minor); + static void kernel_version(long* major, long* minor, long* patch); + diff --git a/OpenJDK20U-jdk_aarch64_linux_hotspot_20.0.2_9.tar.xz b/OpenJDK20U-jdk_aarch64_linux_hotspot_20.0.2_9.tar.xz deleted file mode 100644 index 896dce1cf72940b0bf4ffe2abe329216d335eedc..0000000000000000000000000000000000000000 Binary files a/OpenJDK20U-jdk_aarch64_linux_hotspot_20.0.2_9.tar.xz and /dev/null differ diff --git a/OpenJDK20U-jdk_x64_linux_hotspot_20.0.2_9.tar.xz b/OpenJDK20U-jdk_x64_linux_hotspot_20.0.2_9.tar.xz deleted file mode 100644 index ffd60eaaa73c14b209fee3386efedef6c45001be..0000000000000000000000000000000000000000 Binary files a/OpenJDK20U-jdk_x64_linux_hotspot_20.0.2_9.tar.xz and /dev/null differ diff --git a/huawei-AArch64-Incorrect-matching-rule.patch b/huawei-AArch64-Incorrect-matching-rule.patch new file mode 100644 index 0000000000000000000000000000000000000000..9437a3e156349fb473fa1c92ce0cd160b0e3a5f8 --- /dev/null +++ b/huawei-AArch64-Incorrect-matching-rule.patch @@ -0,0 +1,22 @@ +Subject: [PATCH] Backport JDK-8361892: AArch64: Incorrect matching rule + leading to improper oop instruction encoding + +--- + src/hotspot/cpu/aarch64/aarch64.ad | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad +index 015bfabc2..6932dd8df 100644 +--- a/src/hotspot/cpu/aarch64/aarch64.ad ++++ b/src/hotspot/cpu/aarch64/aarch64.ad +@@ -4694,6 +4694,7 @@ operand immByteMapBase() + %{ + // Get base of card map + predicate(BarrierSet::barrier_set()->is_a(BarrierSet::CardTableBarrierSet) && ++ n->get_ptr_type()->isa_rawptr() != nullptr && + (CardTable::CardValue*)n->get_ptr() == ((CardTableBarrierSet*)(BarrierSet::barrier_set()))->card_table()->byte_map_base()); + match(ConP); + +-- +2.34.1 + diff --git a/huawei-Add-KAE-zip-feature.patch b/huawei-Add-KAE-zip-feature.patch index 49d556c68da1dd766e7b0bb3ef81935ad4b65582..026e33f2750ab914a99fb770e16afa97b77edc6c 100644 --- a/huawei-Add-KAE-zip-feature.patch +++ b/huawei-Add-KAE-zip-feature.patch @@ -202,21 +202,27 @@ index d704fd3c9..850691e02 100644 /** * Check to make sure that this stream has not been closed */ -@@ -74,8 +91,13 @@ public class GZIPInputStream extends InflaterInputStream { - * @throws IllegalArgumentException if {@code size <= 0} - */ +@@ -77,6 +77,11 @@ public class GZIPInputStream extends InflaterInputStream { public GZIPInputStream(InputStream in, int size) throws IOException { -- super(in, in != null ? new Inflater(true) : null, size); -+ super(in, in != null ? (GZIP_USE_KAE ? new Inflater(WINDOWBITS, FLUSHKAE) : new Inflater(true)) : null, size); + super(in, createInflater(in, size), size); usesDefaultInflater = true; + + // When GZIP_USE_KAE is true, the header of the file is readed + // through the native zlib library, not in java code. + if (GZIP_USE_KAE) return; + - readHeader(in); + try { + readHeader(in); + } catch (IOException ioe) { +@@ -97,7 +102,7 @@ public class GZIPInputStream extends InflaterInputStream { + if (size <= 0) { + throw new IllegalArgumentException("buffer size <= 0"); + } +- return new Inflater(true); ++ return GZIP_USE_KAE ? new Inflater(WINDOWBITS, FLUSHKAE) : new Inflater(true); } - + + /** @@ -127,13 +149,16 @@ public class GZIPInputStream extends InflaterInputStream { } int n = super.read(buf, off, len); diff --git a/huawei-fix-arm32-build-fail-undefined-reference-_Copy_conjo.patch b/huawei-fix-arm32-build-fail-undefined-reference-_Copy_conjo.patch new file mode 100644 index 0000000000000000000000000000000000000000..8c1c5ed416092d066f043d1f9b4d3851675c4a21 --- /dev/null +++ b/huawei-fix-arm32-build-fail-undefined-reference-_Copy_conjo.patch @@ -0,0 +1,23 @@ +Subject: [PATCH] fix arm32 build fail: undefined reference + _Copy_conjoint_bytes + +--- + src/hotspot/os_cpu/linux_arm/linux_arm_32.S | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/hotspot/os_cpu/linux_arm/linux_arm_32.S b/src/hotspot/os_cpu/linux_arm/linux_arm_32.S +index aa839a1e3..cfac173b1 100644 +--- a/src/hotspot/os_cpu/linux_arm/linux_arm_32.S ++++ b/src/hotspot/os_cpu/linux_arm/linux_arm_32.S +@@ -28,8 +28,6 @@ + # point or use it in the same manner as does the server + # compiler. + +- .globl _Copy_conjoint_bytes +- .type _Copy_conjoint_bytes, %function + .globl _Copy_arrayof_conjoint_bytes + .type _Copy_arrayof_conjoint_bytes, %function + .globl _Copy_disjoint_words +-- +2.34.1 + diff --git a/huawei-remove-provides-in-kaeprovider-module-info.patch b/huawei-remove-provides-in-kaeprovider-module-info.patch new file mode 100644 index 0000000000000000000000000000000000000000..0ae87053b32dd924fcc6442cf3c133b734facced --- /dev/null +++ b/huawei-remove-provides-in-kaeprovider-module-info.patch @@ -0,0 +1,19 @@ +Subject: [PATCH] remove provides in kaeprovider module info + +--- + src/jdk.crypto.kaeprovider/linux/classes/module-info.java | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/jdk.crypto.kaeprovider/linux/classes/module-info.java b/src/jdk.crypto.kaeprovider/linux/classes/module-info.java +index 802ac8960..0b3f7fe64 100644 +--- a/src/jdk.crypto.kaeprovider/linux/classes/module-info.java ++++ b/src/jdk.crypto.kaeprovider/linux/classes/module-info.java +@@ -35,5 +35,4 @@ module jdk.crypto.kaeprovider { + requires jdk.crypto.ec; + + exports org.openeuler.security.openssl to java.base; +- provides java.security.Provider with org.openeuler.security.openssl.KAEProvider; + } +-- +2.34.1 + diff --git a/jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz b/jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz deleted file mode 100644 index 17a24f498b2b503670f6687d067e75ab331833bd..0000000000000000000000000000000000000000 Binary files a/jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz and /dev/null differ diff --git a/jdk-updates-jdk21u-jdk-21.0.7+6.tar.gz b/jdk-updates-jdk21u-jdk-21.0.8+9.tar.gz similarity index 86% rename from jdk-updates-jdk21u-jdk-21.0.7+6.tar.gz rename to jdk-updates-jdk21u-jdk-21.0.8+9.tar.gz index 48562cf217c8af99e67ec04ee8c31979053b6091..1ea9749566b155457ac32292521f7df3f57cae5e 100644 Binary files a/jdk-updates-jdk21u-jdk-21.0.7+6.tar.gz and b/jdk-updates-jdk21u-jdk-21.0.8+9.tar.gz differ diff --git a/openjdk-21.spec b/openjdk-21.spec index 98ce7a842ed6c066f8b52bdd9e7204be6d5916f4..c2e74a4e25582ca70c9370e4106f13c0b86337d1 100644 --- a/openjdk-21.spec +++ b/openjdk-21.spec @@ -83,7 +83,7 @@ # By default, we build a debug build during main build on JIT architectures %if %{with slowdebug} %ifarch %{jit_arches} -%global include_debug_build 0 +%global include_debug_build 1 %else %global include_debug_build 0 %endif @@ -160,7 +160,7 @@ # Used via new version scheme. JDK 19 was # GA'ed in March 2022 => 22.3 %global vendor_version_string BiSheng -%global securityver 7 +%global securityver 8 # buildjdkver is usually same as %%{majorver}, # but in time of bootstrap of next jdk, it is majorver-1, # and this it is better to change it here, on single place @@ -180,7 +180,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{origin} %global minorver 0 -%global buildver 6 +%global buildver 9 %global rpmrelease 1 # priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit %if %is_system_jdk @@ -905,7 +905,7 @@ Name: java-21-%{origin} Version: %{newjavaver}.%{buildver} # This package needs `.rolling` as part of Release so as to not conflict on install with # java-X-openjdk. I.e. when latest rolling release is also an LTS release packaged as -Release: 5 +Release: 2 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages @@ -985,11 +985,9 @@ Patch9: add-downgrade-the-glibc-symbol-of-fcntl.patch Patch10: Backport-JDK-8336855-Duplicate-protected-declaration.patch Patch11: Backport-JDK-8334758-Incorrect-note-in-Javadoc-for-a.patch Patch12: Backport-JDK-8323699-MessageFormat.toPattern-generat.patch -Patch16: Backport-JDK-8333805-Replaying-compilation-with-null.patch Patch19: 8339351-Remove-duplicate-line-in-FileMapHeader-print.patch Patch21: 8339149-jfr_flush_event_writer-return-value-type-mis.patch Patch22: 8300800-UB-Shift-exponent-32-is-too-large-for-32-bit.patch -Patch23: 8334780-Crash-assert-h_array_list.not_null-failed-in.patch Patch24: 8337982-Remove-dead-undef-assrt0n.patch Patch26: 8335610-DiagnosticFramework-CmdLine-is_executable-co.patch Patch27: Backport-of-8337245-Fix-wrong-comment-of-StringConca.patch @@ -1001,7 +999,6 @@ Patch38: Backport-JDK-8336152-Remove-unused-forward-declarati.patch Patch39: Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch Patch40: Backport-of-8337787-Fix-Wzero-as-null-pointer-consta.patch Patch41: Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch -Patch49: Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch Patch51: Backport-JDK-8329754-The-ThreadSafe-attribute-is-ign.patch Patch53: Backport-JDK-8335638-Calling-VarHandle.-access-mode-.patch Patch54: Backport-JDK-8338938-The-result-of-the-combine-metho.patch @@ -1013,7 +1010,6 @@ Patch60: Backport-JDK-8333599-Improve-description-of-b-matche.patch Patch63: Backport-JDK-8336879-Always-true-condition-img-null-.patch Patch64: Backport-JDK-8337334-Test-tools-javac-7142086-T71420.patch Patch65: Backport-JDK-8340623-Remove-outdated-PROCESSOR_ARCHI.patch -Patch66: Backport-JDK-8338010-WB_IsFrameDeoptimized-miss-Reso.patch Patch67: Backport-JDK-8340186-Shenandoah-Missing-load_referen.patch Patch68: Backport-JDK-8340273-Remove-CounterHalfLifeTime.patch Patch69: Backport-JDK-8339460-CDS-error-when-module-is-locate.patch @@ -1035,8 +1031,15 @@ Patch85: huawei-Adapt-to-clang-build-toolchain.patch #21.0.7 Patch87: huawei-fix-build-fail-realpath.patch -Patch88: 8352716-tz-Update-Timezone-Data-to-2025b.patch Patch89: heapdump-bug-fix.patch +Patch90: Backport-JDK-7036144-GZIPInputStream-readTrailer-use.patch +Patch92: Backport-JDK-8340532-C2-assert-is_OuterStripMinedLoo.patch +Patch93: huawei-fix-arm32-build-fail-undefined-reference-_Copy_conjo.patch +Patch94: huawei-AArch64-Incorrect-matching-rule.patch + +#21.0.8 +Patch95: huawei-remove-provides-in-kaeprovider-module-info.patch + ############################################ # # LoongArch64 specific patches @@ -1290,11 +1293,9 @@ pushd %{top_level_dir_name} %patch10 -p1 %patch11 -p1 %patch12 -p1 -%patch16 -p1 %patch19 -p1 %patch21 -p1 %patch22 -p1 -%patch23 -p1 %patch24 -p1 %patch26 -p1 %patch27 -p1 @@ -1306,7 +1307,6 @@ pushd %{top_level_dir_name} %patch39 -p1 %patch40 -p1 %patch41 -p1 -%patch49 -p1 %patch51 -p1 %patch53 -p1 %patch54 -p1 @@ -1318,7 +1318,6 @@ pushd %{top_level_dir_name} %patch63 -p1 %patch64 -p1 %patch65 -p1 -%patch66 -p1 %patch67 -p1 %patch68 -p1 %patch69 -p1 @@ -1338,8 +1337,12 @@ pushd %{top_level_dir_name} %patch84 -p1 %patch85 -p1 %patch87 -p1 -%patch88 -p1 %patch89 -p1 +%patch90 -p1 +%patch92 -p1 +%patch93 -p1 +%patch94 -p1 +%patch95 -p1 popd # openjdk %endif @@ -1915,6 +1918,34 @@ cjc.mainProgram(args) -- the returns from copy_jdk_configs.lua should not affect %changelog +* Mon Jul 21 2025 Dingli Zhang - 1:21.0.8.9-2 +- Fix build error for riscv64 + +* Thu Jul 17 2025 Benshuai5D - 1:21.0.8.9-1 +- huawei-remove-provides-in-kaeprovider-module-info.patch + +* Tue Jul 15 2025 Benshuai5D - 1:21.0.8.9-0 +- update to jdk21.0.8-ga +- delete 8334780-Crash-assert-h_array_list.not_null-failed-in.patch +- delete Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch +- delete Backport-JDK-8333805-Replaying-compilation-with-null.patch +- delete Backport-JDK-8338010-WB_IsFrameDeoptimized-miss-Reso.patch +- delete 8352716-tz-Update-Timezone-Data-to-2025b.patch +- delete Backport-JDK-8314236-Overflow-in-Collections.rotate.patch +- modify huawei-Add-KAE-zip-feature.patch + +* Tue Jul 15 2025 gaoxiang - 1:21.0.7.6-8 +- enable slowdebug build + +* Tue Jul 15 2025 Benshuai5D - 1:21.0.7.6-7 +- add huawei-AArch64-Incorrect-matching-rule.patch + +* Thu Jul 10 2025 Benshuai5D - 1:21.0.7.6-6 +- add Backport-JDK-7036144-GZIPInputStream-readTrailer-use.patch +- add Backport-JDK-8314236-Overflow-in-Collections.rotate.patch +- add Backport-JDK-8340532-C2-assert-is_OuterStripMinedLoo.patch +- add huawei-fix-arm32-build-fail-undefined-reference-_Copy_conjo.patch + * Sat May 17 2025 Benshuai5D - 1:21.0.7.6-5 - add heapdump-bug-fix.patch