diff --git a/8264805-Backport-Ahead-of-Time-Compiler.patch b/8264805-Backport-Ahead-of-Time-Compiler.patch index 55945af73dbc5ecf319b316dedea2ebc131ec1c3..4ac19f3ec5f2e753e053ebe7e12980fe3b913fb8 100644 --- a/8264805-Backport-Ahead-of-Time-Compiler.patch +++ b/8264805-Backport-Ahead-of-Time-Compiler.patch @@ -2502,7 +2502,7 @@ index 535b795fa..c9b9e2676 100644 +++ b/src/hotspot/os/windows/os_windows.cpp @@ -1,5 +1,5 @@ /* -- * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. +- * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * diff --git a/8264806-Backport-Graal-Compiler.patch b/8264806-Backport-Graal-Compiler.patch index 044f35d8c4f6a79c8639c39854ccd953e17cac63..48a10ba4e69d1ba09500761247a82ff1aeb19776 100644 --- a/8264806-Backport-Graal-Compiler.patch +++ b/8264806-Backport-Graal-Compiler.patch @@ -6075,8 +6075,8 @@ index 69ea97ddf..529e2df27 100644 --- a/make/autoconf/lib-tests.m4 +++ b/make/autoconf/lib-tests.m4 @@ -30,6 +30,38 @@ - # Minimum supported version JTREG_MINIMUM_VERSION=7.3.1 + GTEST_MINIMUM_VERSION=1.13.0 +############################################################################### +# diff --git a/8335610-DiagnosticFramework-CmdLine-is_executable-co.patch b/8335610-DiagnosticFramework-CmdLine-is_executable-co.patch new file mode 100644 index 0000000000000000000000000000000000000000..2390ef8bea7b5d47fc1ae6399bd5318c417238ec --- /dev/null +++ b/8335610-DiagnosticFramework-CmdLine-is_executable-co.patch @@ -0,0 +1,22 @@ +Subject: 8335610: DiagnosticFramework: CmdLine::is_executable() correction + +--- + src/hotspot/share/services/diagnosticFramework.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hotspot/share/services/diagnosticFramework.hpp b/src/hotspot/share/services/diagnosticFramework.hpp +index e182e5440..166384193 100644 +--- a/src/hotspot/share/services/diagnosticFramework.hpp ++++ b/src/hotspot/share/services/diagnosticFramework.hpp +@@ -67,7 +67,7 @@ public: + const char* cmd_addr() const { return _cmd; } + size_t cmd_len() const { return _cmd_len; } + bool is_empty() const { return _cmd_len == 0; } +- bool is_executable() const { return is_empty() || _cmd[0] != '#'; } ++ bool is_executable() const { return !is_empty() && _cmd[0] != '#'; } + bool is_stop() const { return !is_empty() && strncmp("stop", _cmd, _cmd_len) == 0; } + }; + +-- +2.33.0 + diff --git a/8337274-Remove-repeated-the-in-StyleSheet.create-Sma.patch b/8337274-Remove-repeated-the-in-StyleSheet.create-Sma.patch new file mode 100644 index 0000000000000000000000000000000000000000..c829490d81fea92780e13c8faa95a2b1f4890bc2 --- /dev/null +++ b/8337274-Remove-repeated-the-in-StyleSheet.create-Sma.patch @@ -0,0 +1,40 @@ +Subject: 8337274: Remove repeated 'the' in StyleSheet.create{Small,Large}AttributeSet + +--- + .../share/classes/javax/swing/text/html/StyleSheet.java | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java b/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java +index 958b3a899..25490291a 100644 +--- a/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java ++++ b/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java +@@ -691,7 +691,7 @@ public class StyleSheet extends StyleContext { + * to return an AttributeSet that provides some sort of + * attribute conversion. + * +- * @param a The set of attributes to be represented in the ++ * @param a The set of attributes to be represented in + * the compact form. + */ + protected SmallAttributeSet createSmallAttributeSet(AttributeSet a) { +@@ -707,7 +707,7 @@ public class StyleSheet extends StyleContext { + * to return a MutableAttributeSet that provides some sort of + * attribute conversion. + * +- * @param a The set of attributes to be represented in the ++ * @param a The set of attributes to be represented in + * the larger form. + */ + protected MutableAttributeSet createLargeAttributeSet(AttributeSet a) { +@@ -2140,7 +2140,7 @@ public class StyleSheet extends StyleContext { + /** + * Returns a string that represents the value + * of the HTML.Attribute.TYPE attribute. +- * If this attributes is not defined, then ++ * If this attributes is not defined, + * then the type defaults to "disc" unless + * the tag is on Ordered list. In the case + * of the latter, the default type is "decimal". +-- +2.33.0 + diff --git a/8337982-Remove-dead-undef-assrt0n.patch b/8337982-Remove-dead-undef-assrt0n.patch new file mode 100644 index 0000000000000000000000000000000000000000..760d1f05a8b3de004f0fb97816cbc234a02f62e9 --- /dev/null +++ b/8337982-Remove-dead-undef-assrt0n.patch @@ -0,0 +1,21 @@ +Subject: 8337982: Remove dead undef assrt0n + +--- + src/hotspot/share/memory/metaspace/blockTree.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/hotspot/share/memory/metaspace/blockTree.cpp b/src/hotspot/share/memory/metaspace/blockTree.cpp +index ed2964534..9c78eef84 100644 +--- a/src/hotspot/share/memory/metaspace/blockTree.cpp ++++ b/src/hotspot/share/memory/metaspace/blockTree.cpp +@@ -180,7 +180,6 @@ void BlockTree::verify() const { + // as many nodes as are in this tree) + _counter.check(counter); + +- #undef assrt0n + } + + void BlockTree::zap_range(MetaWord* p, size_t word_size) { +-- +2.33.0 + diff --git a/8338785-The-java.awt.datatransfer.SystemFlavorMap-FL.patch b/8338785-The-java.awt.datatransfer.SystemFlavorMap-FL.patch new file mode 100644 index 0000000000000000000000000000000000000000..13fba95a3528c1f0c2962ddb3014cf6f9017a8e5 --- /dev/null +++ b/8338785-The-java.awt.datatransfer.SystemFlavorMap-FL.patch @@ -0,0 +1,22 @@ +Subject: 8338785: The java.awt.datatransfer.SystemFlavorMap#FLAVOR_MAP_KEY field is not used + +--- + .../share/classes/java/awt/datatransfer/SystemFlavorMap.java | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/java.datatransfer/share/classes/java/awt/datatransfer/SystemFlavorMap.java b/src/java.datatransfer/share/classes/java/awt/datatransfer/SystemFlavorMap.java +index d48146513..4bde236fc 100644 +--- a/src/java.datatransfer/share/classes/java/awt/datatransfer/SystemFlavorMap.java ++++ b/src/java.datatransfer/share/classes/java/awt/datatransfer/SystemFlavorMap.java +@@ -61,8 +61,6 @@ public final class SystemFlavorMap implements FlavorMap, FlavorTable { + */ + private static String JavaMIME = "JAVA_DATAFLAVOR:"; + +- private static final Object FLAVOR_MAP_KEY = new Object(); +- + /** + * The list of valid, decoded text flavor representation classes, in order + * from best to worst. +-- +2.33.0 + diff --git a/Add-JBooster-Lazy-AOT-module.patch b/Add-JBooster-Lazy-AOT-module.patch index 5816e3c60d1b713b7660f63950fbde74ce86eb0d..97543e35699012366b1e673c8f9ca94b274ce260 100644 --- a/Add-JBooster-Lazy-AOT-module.patch +++ b/Add-JBooster-Lazy-AOT-module.patch @@ -1263,7 +1263,7 @@ index 8ceca7cd3..0d501e494 100644 +++ b/src/hotspot/share/prims/jvm.cpp @@ -1,5 +1,5 @@ /* -- * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. +- * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * diff --git a/Apply-TBI-to-ZGC-of-JDK17.patch b/Apply-TBI-to-ZGC-of-JDK17.patch index e8d050d5aedbcf04210804284f80dd0cfb0b3164..a960c1c0005216b0c06e7f706a409f5e0fd0ede9 100644 --- a/Apply-TBI-to-ZGC-of-JDK17.patch +++ b/Apply-TBI-to-ZGC-of-JDK17.patch @@ -1584,7 +1584,7 @@ index f8900a13b..356c6ca8b 100644 +#endif while (len > 0) { const unsigned int nBytes = len > INT_MAX ? INT_MAX : (unsigned int)len; - const ssize_t num_written = (ssize_t)os::write(_fd, buf, nBytes); + const bool successful_write = os::write(_fd, buf, nBytes); diff --git a/src/hotspot/share/prims/jni.cpp b/src/hotspot/share/prims/jni.cpp index cd0115248..41e946563 100644 --- a/src/hotspot/share/prims/jni.cpp diff --git a/Backport-Important-Fixed-Issues.patch b/Backport-Important-Fixed-Issues.patch index 3d453ba0e1449b48d56ca5d19f64e320af7ffa41..af236a8ba8151585a6d1befd271d65f7c9c1abab 100644 --- a/Backport-Important-Fixed-Issues.patch +++ b/Backport-Important-Fixed-Issues.patch @@ -141,19 +141,6 @@ index 52e6ab86c..88a9289b9 100644 if (j >= 1024) { st->print_cr(UINT64_FORMAT " k", uint64_t(j) / 1024); } else { -diff --git a/src/hotspot/os/linux/os_perf_linux.cpp b/src/hotspot/os/linux/os_perf_linux.cpp -index 7c42379a0..958848dc8 100644 ---- a/src/hotspot/os/linux/os_perf_linux.cpp -+++ b/src/hotspot/os/linux/os_perf_linux.cpp -@@ -847,7 +847,7 @@ SystemProcessInterface::SystemProcesses::ProcessIterator::ProcessIterator() { - bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() { - _dir = os::opendir("/proc"); - _entry = NULL; -- _valid = true; -+ _valid = _dir != nullptr; // May be null if /proc is not accessible. - next_process(); - - return true; diff --git a/src/hotspot/share/c1/c1_globals.hpp b/src/hotspot/share/c1/c1_globals.hpp index 7564b2b8a..41d4607f8 100644 --- a/src/hotspot/share/c1/c1_globals.hpp @@ -190,7 +177,7 @@ index 98ab42022..56ed8a5dd 100644 * * This code is free software; you can redistribute it and/or modify it @@ -750,12 +750,14 @@ bool PSScavenge::should_attempt_scavenge() { - // changed, decide if that test should also be changed. + size_t avg_promoted = (size_t) policy->padded_average_promoted_in_bytes(); size_t promotion_estimate = MIN2(avg_promoted, young_gen->used_in_bytes()); - bool result = promotion_estimate < old_gen->free_in_bytes(); @@ -206,19 +193,6 @@ index 98ab42022..56ed8a5dd 100644 if (young_gen->used_in_bytes() < (size_t) policy->padded_average_promoted_in_bytes()) { log_trace(ergo)(" padded_promoted_average is greater than maximum promotion = " SIZE_FORMAT, young_gen->used_in_bytes()); } -diff --git a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp -index 78d6ab48f..a72c15a49 100644 ---- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp -+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp -@@ -228,7 +228,7 @@ static int write_klass(JfrCheckpointWriter* writer, KlassPtr klass, bool leakp) - writer->write(cld != NULL ? cld_id(cld, leakp) : 0); - writer->write(mark_symbol(klass, leakp)); - writer->write(package_id(klass, leakp)); -- writer->write(get_flags(klass)); -+ writer->write(klass->modifier_flags()); - writer->write(klass->is_hidden()); - return 1; - } diff --git a/src/hotspot/share/opto/c2compiler.cpp b/src/hotspot/share/opto/c2compiler.cpp index 13de7651e..411733814 100644 --- a/src/hotspot/share/opto/c2compiler.cpp @@ -661,191 +635,6 @@ index 050f27e72..197f3238b 100644 return; if ( comboBox.isEditable() ) { -diff --git a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java -index 34c53ca91..81972a052 100644 ---- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java -+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java -@@ -98,10 +98,13 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - * This method is used to interrupt file loading thread. - */ - public void invalidateFileCache() { -- if (filesLoader != null) { -- filesLoader.loadThread.interrupt(); -- filesLoader.cancelRunnables(); -- filesLoader = null; -+ synchronized (this) { -+ if (filesLoader != null) { -+ filesLoader.loadThread.interrupt(); -+ filesLoader = null; -+ // Increment fetch ID to invalidate pending DoChangeContents -+ fetchID.incrementAndGet(); -+ } - } - } - -@@ -156,14 +159,15 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - if (currentDirectory == null) { - return; - } -- if (filesLoader != null) { -- filesLoader.loadThread.interrupt(); -- filesLoader.cancelRunnables(); -- } - -- int fid = fetchID.incrementAndGet(); -- setBusy(true, fid); -- filesLoader = new FilesLoader(currentDirectory, fid); -+ synchronized (this) { -+ if (filesLoader != null) { -+ filesLoader.loadThread.interrupt(); -+ } -+ int fid = fetchID.incrementAndGet(); -+ setBusy(true, fid); -+ filesLoader = new FilesLoader(currentDirectory, fid); -+ } - } - - /** -@@ -276,7 +280,6 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - private final boolean fileSelectionEnabled; - private final int fid; - private final File currentDirectory; -- private volatile DoChangeContents runnable; - private final Thread loadThread; - - private FilesLoader(File currentDirectory, int fid) { -@@ -297,22 +300,20 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - } - - private void run0() { -- FileSystemView fileSystem = fileSystemView; -- - if (loadThread.isInterrupted()) { - return; - } - -- File[] list = fileSystem.getFiles(currentDirectory, useFileHiding); -+ File[] list = fileSystemView.getFiles(currentDirectory, useFileHiding); - - if (loadThread.isInterrupted()) { - return; - } - - final Vector newFileCache = new Vector(); -- Vector newFiles = new Vector(); -+ final Vector newFiles = new Vector(); - -- // run through the file list, add directories and selectable files to fileCache -+ // Run through the file list, add directories and selectable files to fileCache - // Note that this block must be OUTSIDE of Invoker thread because of - // deadlock possibility with custom synchronized FileSystemView - for (File file : list) { -@@ -339,7 +340,7 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - - // To avoid loads of synchronizations with Invoker and improve performance we - // execute the whole block on the COM thread -- runnable = ShellFolder.invoke(new Callable() { -+ DoChangeContents runnable = ShellFolder.invoke(new Callable() { - public DoChangeContents call() { - int newSize = newFileCache.size(); - int oldSize = fileCache.size(); -@@ -388,7 +389,7 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - } - if (!fileCache.equals(newFileCache)) { - if (loadThread.isInterrupted()) { -- cancelRunnables(); -+ return null; - } - return new DoChangeContents(newFileCache, 0, fileCache, 0, fid); - } -@@ -400,12 +401,6 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - SwingUtilities.invokeLater(runnable); - } - } -- -- private void cancelRunnables() { -- if (runnable != null) { -- runnable.cancel(); -- } -- } - } - - -@@ -514,13 +509,13 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - private final class DoChangeContents implements Runnable { - private final List addFiles; - private final List remFiles; -- private boolean doFire = true; - private final int fid; -- private int addStart = 0; -- private int remStart = 0; -+ private final int addStart; -+ private final int remStart; - -- DoChangeContents(List addFiles, int addStart, List remFiles, -- int remStart, int fid) { -+ private DoChangeContents(List addFiles, int addStart, -+ List remFiles, int remStart, -+ int fid) { - this.addFiles = addFiles; - this.addStart = addStart; - this.remFiles = remFiles; -@@ -528,31 +523,31 @@ public class BasicDirectoryModel extends AbstractListModel implements Pr - this.fid = fid; - } - -- synchronized void cancel() { -- doFire = false; -- } -- -- public synchronized void run() { -- if (fetchID.get() == fid && doFire) { -- int remSize = (remFiles == null) ? 0 : remFiles.size(); -- int addSize = (addFiles == null) ? 0 : addFiles.size(); -- synchronized(fileCache) { -- if (remSize > 0) { -- fileCache.removeAll(remFiles); -- } -- if (addSize > 0) { -- fileCache.addAll(addStart, addFiles); -- } -- files = null; -- directories = null; -- } -- if (remSize > 0 && addSize == 0) { -- fireIntervalRemoved(BasicDirectoryModel.this, remStart, remStart + remSize - 1); -- } else if (addSize > 0 && remSize == 0 && addStart + addSize <= fileCache.size()) { -- fireIntervalAdded(BasicDirectoryModel.this, addStart, addStart + addSize - 1); -- } else { -- fireContentsChanged(); -+ @Override -+ public void run() { -+ if (fetchID.get() != fid) { -+ return; -+ } -+ final int remSize = (remFiles == null) ? 0 : remFiles.size(); -+ final int addSize = (addFiles == null) ? 0 : addFiles.size(); -+ final int cacheSize; -+ synchronized (fileCache) { -+ if (remSize > 0) { -+ fileCache.removeAll(remFiles); -+ } -+ if (addSize > 0) { -+ fileCache.addAll(addStart, addFiles); - } -+ files = null; -+ directories = null; -+ cacheSize = fileCache.size(); -+ } -+ if (remSize > 0 && addSize == 0) { -+ fireIntervalRemoved(BasicDirectoryModel.this, remStart, remStart + remSize - 1); -+ } else if (addSize > 0 && remSize == 0 && addStart + addSize <= cacheSize) { -+ fireIntervalAdded(BasicDirectoryModel.this, addStart, addStart + addSize - 1); -+ } else { -+ fireContentsChanged(); - } - } - } diff --git a/src/java.desktop/share/classes/javax/swing/text/html/CSS.java b/src/java.desktop/share/classes/javax/swing/text/html/CSS.java index c14b5a126..311f172b8 100644 --- a/src/java.desktop/share/classes/javax/swing/text/html/CSS.java @@ -2020,127 +1809,6 @@ index 000000000..830216f0d + passFailJFrame.awaitAndCheck(); + } +} -diff --git a/test/jdk/jdk/jfr/api/consumer/TestRecordedClass.java b/test/jdk/jdk/jfr/api/consumer/TestRecordedClass.java -new file mode 100644 -index 000000000..19c637049 ---- /dev/null -+++ b/test/jdk/jdk/jfr/api/consumer/TestRecordedClass.java -@@ -0,0 +1,115 @@ -+/* -+ * 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. -+ */ -+ -+package jdk.jfr.api.consumer; -+ -+import java.lang.reflect.Modifier; -+import java.util.List; -+ -+import jdk.jfr.Event; -+import jdk.jfr.Recording; -+import jdk.jfr.consumer.RecordedClass; -+import jdk.jfr.consumer.RecordedEvent; -+import jdk.test.lib.jfr.Events; -+ -+/** -+ * @test -+ * @summary Verifies methods of RecordedClass -+ * @key jfr -+ * @requires vm.hasJFR -+ * @library /test/lib -+ * @run main/othervm jdk.jfr.api.consumer.TestRecordedClass -+ */ -+public class TestRecordedClass { -+ -+ static class TestEvent extends Event { -+ Class typeA; -+ Class typeB; -+ } -+ -+ private static class TypeA { -+ } -+ -+ public final static class TypeB { -+ } -+ -+ public static void main(String[] args) throws Exception { -+ try (Recording recording = new Recording()) { -+ recording.start(); -+ TestEvent event = new TestEvent(); -+ event.typeA = TypeA.class; -+ event.typeB = TypeB.class; -+ event.commit(); -+ recording.stop(); -+ -+ List events = Events.fromRecording(recording); -+ Events.hasEvents(events); -+ for (RecordedEvent recordedEvent : events) { -+ RecordedClass typeA = recordedEvent.getClass("typeA"); -+ RecordedClass typeB = recordedEvent.getClass("typeB"); -+ assertModifiers(typeA, TypeA.class); -+ assertModifiers(typeB, TypeB.class); -+ assertName(typeA, TypeA.class); -+ assertName(typeB, TypeB.class); -+ assertClassLoader(typeA, TypeA.class.getClassLoader()); -+ assertClassLoader(typeB, TypeB.class.getClassLoader()); -+ assertId(typeA); -+ assertId(typeB); -+ if (typeA.getId() == typeB.getId()) { -+ throw new Exception("Same ID for different classes"); -+ } -+ } -+ } -+ } -+ -+ private static void assertId(RecordedClass recordedClass) throws Exception { -+ long id = recordedClass.getId(); -+ if (id < 1 || id >= 1024 * 1024) { -+ throw new Exception("Expected class ID to be above 1 and below 1 M"); -+ } -+ } -+ -+ private static void assertClassLoader(RecordedClass recordedClass, ClassLoader classLoader) throws Exception { -+ String expected = classLoader.getClass().getName(); -+ String actual = recordedClass.getClassLoader().getType().getName(); -+ if (!expected.equals(actual)) { -+ throw new Exception("Expected class loader to be " + expected + ", was " + actual); -+ } -+ } -+ -+ private static void assertName(RecordedClass recordedClass, Class clazz) throws Exception { -+ String className = clazz.getClass().getName(); -+ if (className.equals(recordedClass.getName())) { -+ throw new Exception("Expected class to be named " + className); -+ } -+ } -+ -+ private static void assertModifiers(RecordedClass recordedClass, Class clazz) throws Exception { -+ int modifiers = clazz.getModifiers(); -+ if (modifiers != recordedClass.getModifiers()) { -+ String expected = Modifier.toString(modifiers); -+ String actual = Modifier.toString(recordedClass.getModifiers()); -+ throw new Exception("Expected modifier to be '" + expected + "', was '" + actual + "'"); -+ } -+ } -+} diff --git a/test/jdk/sun/jvmstat/monitor/MonitoredVm/ConcurrentGetMonitoredHost.java b/test/jdk/sun/jvmstat/monitor/MonitoredVm/ConcurrentGetMonitoredHost.java new file mode 100644 index 000000000..a6049f6a0 diff --git a/Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch b/Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch new file mode 100644 index 0000000000000000000000000000000000000000..45357adf68744e28f3f61468caa3fa9e067ea84b --- /dev/null +++ b/Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch @@ -0,0 +1,29 @@ +Subject: Backport of 8330191: Fix typo in precompiled.hpp + +--- + src/hotspot/share/precompiled/precompiled.hpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/hotspot/share/precompiled/precompiled.hpp b/src/hotspot/share/precompiled/precompiled.hpp +index d34304741..54d03ed71 100644 +--- a/src/hotspot/share/precompiled/precompiled.hpp ++++ b/src/hotspot/share/precompiled/precompiled.hpp +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2010, 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 +@@ -29,7 +29,7 @@ + + // These header files are included in at least 130 C++ files, as of + // measurements made in November 2018. This list excludes files named +-// *.include.hpp, since including them decreased build performance. ++// *.inline.hpp, since including them decreased build performance. + + #include "classfile/classLoaderData.hpp" + #include "classfile/javaClasses.hpp" +-- +2.33.0 + diff --git a/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch b/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch new file mode 100644 index 0000000000000000000000000000000000000000..6ed37f3082758fb444f37e4b24d1aaa097f0730d --- /dev/null +++ b/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch @@ -0,0 +1,22 @@ +Subject: Backport of 8333088: ubsan: shenandoahAdaptiveHeuristics.cpp: runtime error: division by zero + +--- + .../gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp +index 819f1e8d7..371e4c90c 100644 +--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp ++++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp +@@ -243,7 +243,7 @@ bool ShenandoahAdaptiveHeuristics::should_start_gc() { + + double avg_cycle_time = _gc_time_history->davg() + (_margin_of_error_sd * _gc_time_history->dsd()); + double avg_alloc_rate = _allocation_rate.upper_bound(_margin_of_error_sd); +- if (avg_cycle_time > allocation_headroom / avg_alloc_rate) { ++ if (avg_cycle_time * avg_alloc_rate > allocation_headroom) { + log_info(gc)("Trigger: Average GC time (%.2f ms) is above the time for average allocation rate (%.0f %sB/s) to deplete free headroom (" SIZE_FORMAT "%s) (margin of error = %.2f)", + avg_cycle_time * 1000, + byte_size_in_proper_unit(avg_alloc_rate), proper_unit_for_byte_size(avg_alloc_rate), +-- +2.33.0 + diff --git a/Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch b/Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch new file mode 100644 index 0000000000000000000000000000000000000000..a4c36c1d7f55458cd50a9c4629c5c9584536bb3c --- /dev/null +++ b/Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch @@ -0,0 +1,29 @@ +Subject: Backport of 8337712: Wrong javadoc in java.util.Date#toString(): 61 and right parenthesis + +--- + src/java.base/share/classes/java/util/Date.java | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/java.base/share/classes/java/util/Date.java b/src/java.base/share/classes/java/util/Date.java +index d0b31a402..9a0552dd3 100644 +--- a/src/java.base/share/classes/java/util/Date.java ++++ b/src/java.base/share/classes/java/util/Date.java +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1994, 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 +@@ -1014,7 +1014,7 @@ public class Date + *
  • {@code mm} is the minute within the hour ({@code 00} through + * {@code 59}), as two decimal digits. + *
  • {@code ss} is the second within the minute ({@code 00} through +- * {@code 61}, as two decimal digits. ++ * {@code 61}), as two decimal digits. + *
  • {@code zzz} is the time zone (and may reflect daylight saving + * time). Standard time zone abbreviations include those + * recognized by the method {@code parse}. If time zone +-- +2.33.0 + diff --git a/Backport-of-8339351-Remove-duplicate-line-in-FileMap.patch b/Backport-of-8339351-Remove-duplicate-line-in-FileMap.patch new file mode 100644 index 0000000000000000000000000000000000000000..7f76a14d59ff6296058307e1afe1dddbe3c4ebdd --- /dev/null +++ b/Backport-of-8339351-Remove-duplicate-line-in-FileMap.patch @@ -0,0 +1,21 @@ +Subject: Backport of 8339351: Remove duplicate line in FileMapHeader::print + +--- + src/hotspot/share/cds/filemap.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/hotspot/share/cds/filemap.cpp b/src/hotspot/share/cds/filemap.cpp +index fa981d38c..106c14bfc 100644 +--- a/src/hotspot/share/cds/filemap.cpp ++++ b/src/hotspot/share/cds/filemap.cpp +@@ -287,7 +287,6 @@ void FileMapHeader::print(outputStream* st) { + st->print_cr("- core_region_alignment: " SIZE_FORMAT, _core_region_alignment); + st->print_cr("- obj_alignment: %d", _obj_alignment); + st->print_cr("- narrow_oop_base: " INTPTR_FORMAT, p2i(_narrow_oop_base)); +- st->print_cr("- narrow_oop_base: " INTPTR_FORMAT, p2i(_narrow_oop_base)); + st->print_cr("- narrow_oop_shift %d", _narrow_oop_shift); + st->print_cr("- compact_strings: %d", _compact_strings); + st->print_cr("- max_heap_size: " UINTX_FORMAT, _max_heap_size); +-- +2.33.0 + diff --git a/Backport-of-JDK-8305680.patch b/Backport-of-JDK-8305680.patch new file mode 100644 index 0000000000000000000000000000000000000000..e21eb9afbd01dbb08ba8c55ef678c8930b47adb1 --- /dev/null +++ b/Backport-of-JDK-8305680.patch @@ -0,0 +1,30 @@ +Subject: Backport of JDK-8305680 + +--- + src/hotspot/share/services/diagnosticCommand.cpp | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/src/hotspot/share/services/diagnosticCommand.cpp b/src/hotspot/share/services/diagnosticCommand.cpp +index 51f47421c..1400e4a3f 100644 +--- a/src/hotspot/share/services/diagnosticCommand.cpp ++++ b/src/hotspot/share/services/diagnosticCommand.cpp +@@ -191,16 +191,6 @@ void HelpDCmd::execute(DCmdSource source, TRAPS) { + factory->is_enabled() ? "" : " [disabled]"); + output()->print_cr("%s", factory->description()); + output()->print_cr("\nImpact: %s", factory->impact()); +- JavaPermission p = factory->permission(); +- if(p._class != NULL) { +- if(p._action != NULL) { +- output()->print_cr("\nPermission: %s(%s, %s)", +- p._class, p._name == NULL ? "null" : p._name, p._action); +- } else { +- output()->print_cr("\nPermission: %s(%s)", +- p._class, p._name == NULL ? "null" : p._name); +- } +- } + output()->cr(); + cmd = factory->create_resource_instance(output()); + if (cmd != NULL) { +-- +2.33.0 + diff --git a/Backport-of-JDK-8305937.patch b/Backport-of-JDK-8305937.patch new file mode 100644 index 0000000000000000000000000000000000000000..e4532dc1f5e5d50c26f150ae2155f59e299b6e96 --- /dev/null +++ b/Backport-of-JDK-8305937.patch @@ -0,0 +1,23 @@ +Subject: Backport of JDK-8305937 + +Signed-off-by: Qeryu +--- + test/jdk/com/sun/jdi/TestScaffold.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/jdk/com/sun/jdi/TestScaffold.java b/test/jdk/com/sun/jdi/TestScaffold.java +index 2d4885c90..e46a44eda 100644 +--- a/test/jdk/com/sun/jdi/TestScaffold.java ++++ b/test/jdk/com/sun/jdi/TestScaffold.java +@@ -513,7 +513,7 @@ abstract public class TestScaffold extends TargetAdapter { + public void connect(String args[]) { + ArgInfo argInfo = parseArgs(args); + +- argInfo.targetVMArgs += VMConnection.getDebuggeeVMOptions(); ++ argInfo.targetVMArgs = VMConnection.getDebuggeeVMOptions() + " " + argInfo.targetVMArgs; + connection = new VMConnection(argInfo.connectorSpec, + argInfo.traceFlags); + +-- +2.33.0 + diff --git a/Huawei-Fix-JBooster-file-issue-caused-by-os-write-change.patch b/Huawei-Fix-JBooster-file-issue-caused-by-os-write-change.patch new file mode 100644 index 0000000000000000000000000000000000000000..b59b1f3cdc137550b5796848fcab0f0202775a96 --- /dev/null +++ b/Huawei-Fix-JBooster-file-issue-caused-by-os-write-change.patch @@ -0,0 +1,84 @@ +From bc5f9fe895849d80d69ef273703e17d2e3ffc968 Mon Sep 17 00:00:00 2001 +Subject: Fix JBooster file issue caused by os::write change + +--- + .../share/jbooster/net/serializationWrappers.cpp | 15 +++++++++------ + .../share/jbooster/net/serializationWrappers.hpp | 2 +- + test/hotspot/gtest/jbooster/test_net.cpp | 6 +----- + test/hotspot/gtest/jbooster/test_util.cpp | 4 ++-- + 4 files changed, 13 insertions(+), 14 deletions(-) + +diff --git a/src/hotspot/share/jbooster/net/serializationWrappers.cpp b/src/hotspot/share/jbooster/net/serializationWrappers.cpp +index 13db948f6..58310e976 100644 +--- a/src/hotspot/share/jbooster/net/serializationWrappers.cpp ++++ b/src/hotspot/share/jbooster/net/serializationWrappers.cpp +@@ -385,12 +385,15 @@ int FileWrapper::deserialize(MessageBuffer& buf) { + JB_RETURN(buf.deserialize_ref_no_meta(size_to_recv)); + + // content (use low-level APIs to save a memcpy) +- uint32_t left = size_to_recv; +- do { +- uint32_t write_size = (uint32_t) os::write(_fd, buf.cur_buf_ptr(), left); +- buf.skip_cur_offset(write_size); +- left -= write_size; +- } while (left > 0); ++ if (!os::write(_fd, buf.cur_buf_ptr(), size_to_recv)) { ++ int e = errno; ++ errno = 0; ++ guarantee(e != 0, "sanity"); ++ log_warning(jbooster, serialization)("Fail to write file \"%s\": errno=%s(\"%s\") .", ++ _file_path, os::errno_name(e), os::strerror(e)); ++ JB_RETURN(e); ++ } ++ buf.skip_cur_offset(size_to_recv); + + // update status + _handled_file_size += size_to_recv; +diff --git a/src/hotspot/share/jbooster/net/serializationWrappers.hpp b/src/hotspot/share/jbooster/net/serializationWrappers.hpp +index cc7f96c15..02816fcc5 100644 +--- a/src/hotspot/share/jbooster/net/serializationWrappers.hpp ++++ b/src/hotspot/share/jbooster/net/serializationWrappers.hpp +@@ -253,7 +253,7 @@ public: + + bool is_null() const { return _file_size == MessageConst::NULL_PTR; } + bool is_file_all_handled() const { +- assert(_file_size >= _handled_file_size, "sanity"); ++ guarantee(_file_size >= _handled_file_size, "sanity"); + return _handled_once && _file_size == _handled_file_size; + } + +diff --git a/test/hotspot/gtest/jbooster/test_net.cpp b/test/hotspot/gtest/jbooster/test_net.cpp +index a2c45be5e..9eb29fc3a 100644 +--- a/test/hotspot/gtest/jbooster/test_net.cpp ++++ b/test/hotspot/gtest/jbooster/test_net.cpp +@@ -348,11 +348,7 @@ static void create_test_file_for_file_wrapper(const char* file_name) { + int fd = os::open(file_name, O_BINARY | O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, 0666); + ASSERT_TRUE(fd >= 0); + ASSERT_EQ(errno, 0); +- uint32_t left = mem_size; +- do { +- uint32_t write_size = (uint32_t) os::write(fd, mem + mem_size - left, left); +- left -= write_size; +- } while (left > 0); ++ ASSERT_TRUE(os::write(fd, mem, mem_size)); + os::close(fd); + FREE_C_HEAP_ARRAY(char, mem); + } +diff --git a/test/hotspot/gtest/jbooster/test_util.cpp b/test/hotspot/gtest/jbooster/test_util.cpp +index ab7fd9b39..cd65804be 100644 +--- a/test/hotspot/gtest/jbooster/test_util.cpp ++++ b/test/hotspot/gtest/jbooster/test_util.cpp +@@ -46,8 +46,8 @@ static const char* get_type_name(T t) { + } + + static void write_file(const char* file_path, const char* content) { +- int fd = os::open(file_path, O_BINARY | O_WRONLY | O_CREAT, 0666);; +- os::write(fd, content, strlen(content) + 1); ++ int fd = os::open(file_path, O_BINARY | O_WRONLY | O_CREAT, 0666); ++ ASSERT_TRUE(os::write(fd, content, strlen(content) + 1)); + os::close(fd); + } + +-- +2.23.0 + diff --git a/KAE-zip-Features.patch b/KAE-zip-Features.patch index f4c16a8e696861093a9d10fd8308b27e4538b448..a68b802c665d171ecd722470fed5ef1c5993011c 100644 --- a/KAE-zip-Features.patch +++ b/KAE-zip-Features.patch @@ -87,7 +87,7 @@ index bb09d8cf8..8b03ea56e 100644 ifeq ($(LIBZIP_CAN_USE_MMAP), true) @@ -139,10 +169,11 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \ - DISABLED_WARNINGS_clang := format-nonliteral, \ + DISABLED_WARNINGS_clang := format-nonliteral deprecated-non-prototype, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LIBS_unix := -ljvm -ljava $(LIBZ_LIBS), \ diff --git a/LoongArch64-support.patch b/LoongArch64-support.patch index f7cf35eb4c4a85b52f056785e2c44ddc0bec7f53..a9a6ec6688f8f65e11799caf879c0581504c43da 100644 --- a/LoongArch64-support.patch +++ b/LoongArch64-support.patch @@ -23279,10 +23279,10 @@ index 00000000000..80dff0c7626 + diff --git a/src/hotspot/cpu/loongarch/loongarch_64.ad b/src/hotspot/cpu/loongarch/loongarch_64.ad new file mode 100644 -index 00000000000..0c6516fc1d5 +index 00000000000..7e01822e0e9 --- /dev/null +++ b/src/hotspot/cpu/loongarch/loongarch_64.ad -@@ -0,0 +1,15678 @@ +@@ -0,0 +1,15689 @@ +// +// Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2015, 2022, Loongson Technology. All rights reserved. @@ -29729,6 +29729,17 @@ index 00000000000..0c6516fc1d5 + ins_pipe(empty); +%} + ++instruct same_addr_load_fence() %{ ++ match(SameAddrLoadFence); ++ ins_cost(400); ++ ++ format %{ "MEMBAR @ same_addr_load_fence" %} ++ ins_encode %{ ++ __ dbar(0x700); ++ %} ++ ins_pipe(pipe_slow); ++%} ++ +//----------Move Instructions-------------------------------------------------- +instruct castX2P(mRegP dst, mRegL src) %{ + match(Set dst (CastX2P src)); @@ -95330,13 +95341,13 @@ index 00000000000..4a9b22bfef2 + diff --git a/src/hotspot/cpu/mips/register_mips.hpp b/src/hotspot/cpu/mips/register_mips.hpp new file mode 100644 -index 00000000000..4f74717c24f +index 00000000000..c2124538a0f --- /dev/null +++ b/src/hotspot/cpu/mips/register_mips.hpp -@@ -0,0 +1,344 @@ +@@ -0,0 +1,345 @@ +/* + * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2015, 2022, Loongson Technology. All rights reserved. ++ * Copyright (c) 2015, 2024, Loongson Technology. 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 @@ -95441,8 +95452,9 @@ index 00000000000..4f74717c24f +#define NOREG ((Register)(noreg_RegisterEnumValue)) + +#define I0 ((Register)(i0_RegisterEnumValue)) -+#define I1 ((Register)(i1_RegisterEnumValue)) -+#define I2 ((Register)(i2_RegisterEnumValue)) ++// Conflict with I1 and I2 in googlemock/include/gmock/gmock-actions.h ++//#define I1 ((Register)(i1_RegisterEnumValue)) ++//#define I2 ((Register)(i2_RegisterEnumValue)) +#define I3 ((Register)(i3_RegisterEnumValue)) +#define I4 ((Register)(i4_RegisterEnumValue)) +#define I5 ((Register)(i5_RegisterEnumValue)) @@ -110705,7 +110717,7 @@ index 3657b16fc1a..a2aab225743 100644 size_t ZPlatformAddressMetadataShift(); diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp -index 63b7562f118..5b11b0c1df0 100644 +index 7c951cee51c..5747d4d3f55 100644 --- a/src/hotspot/os/linux/os_linux.cpp +++ b/src/hotspot/os/linux/os_linux.cpp @@ -23,6 +23,12 @@ @@ -110721,7 +110733,7 @@ index 63b7562f118..5b11b0c1df0 100644 // no precompiled headers #include "jvm.h" #include "classfile/vmSymbols.hpp" -@@ -2459,7 +2465,7 @@ void os::print_memory_info(outputStream* st) { +@@ -2457,7 +2463,7 @@ void os::print_memory_info(outputStream* st) { // before "flags" so if we find a second "model name", then the // "flags" field is considered missing. static bool print_model_name_and_flags(outputStream* st, char* buf, size_t buflen) { @@ -110730,7 +110742,7 @@ index 63b7562f118..5b11b0c1df0 100644 // Other platforms have less repetitive cpuinfo files FILE *fp = fopen("/proc/cpuinfo", "r"); if (fp) { -@@ -2549,7 +2555,7 @@ void os::pd_print_cpu_info(outputStream* st, char* buf, size_t buflen) { +@@ -2547,7 +2553,7 @@ void os::pd_print_cpu_info(outputStream* st, char* buf, size_t buflen) { print_sys_devices_cpu_info(st, buf, buflen); } @@ -114286,6 +114298,31 @@ index 00000000000..93e4bea04c6 +#include "precompiled.hpp" +#include "runtime/os.hpp" +#include "runtime/vm_version.hpp" +diff --git a/src/hotspot/share/adlc/formssel.cpp b/src/hotspot/share/adlc/formssel.cpp +index b45f432dac9..02bec17ddf3 100644 +--- a/src/hotspot/share/adlc/formssel.cpp ++++ b/src/hotspot/share/adlc/formssel.cpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + // FORMS.CPP - Definitions for ADL Parser Forms Classes + #include "adlc.hpp" + +@@ -4124,6 +4130,7 @@ bool MatchRule::is_ideal_membar() const { + !strcmp(_opType,"MemBarVolatile") || + !strcmp(_opType,"MemBarCPUOrder") || + !strcmp(_opType,"MemBarStoreStore") || ++ !strcmp(_opType,"SameAddrLoadFence" ) || + !strcmp(_opType,"OnSpinWait"); + } + diff --git a/src/hotspot/share/asm/codeBuffer.cpp b/src/hotspot/share/asm/codeBuffer.cpp index 0012152d48d..e3660cab271 100644 --- a/src/hotspot/share/asm/codeBuffer.cpp @@ -114850,7 +114887,7 @@ index d3d38d11a90..6947406b2e7 100644 prev_cmove = (LIR_Op4*)prev_op; #else diff --git a/src/hotspot/share/code/nmethod.cpp b/src/hotspot/share/code/nmethod.cpp -index eef8e6b4bbb..1da32556e66 100644 +index f5861d1f3ed..e1b78dcf381 100644 --- a/src/hotspot/share/code/nmethod.cpp +++ b/src/hotspot/share/code/nmethod.cpp @@ -22,6 +22,12 @@ @@ -115036,6 +115073,46 @@ index f0944108810..a8c1f97a80e 100644 assert(_task_queue->taskqueue_empty(), "invariant"); } +diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp +index 56fdd2abeb4..17b9bcafd47 100644 +--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp ++++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #include "precompiled.hpp" + #include "gc/shared/tlab_globals.hpp" + #include "gc/shared/c2/barrierSetC2.hpp" +@@ -266,6 +272,8 @@ public: + + bool is_volatile = (decorators & MO_SEQ_CST) != 0; + bool is_acquire = (decorators & MO_ACQUIRE) != 0; ++ bool is_relaxed = (decorators & MO_RELAXED) != 0; ++ bool is_unsafe = (decorators & C2_UNSAFE_ACCESS) != 0; + + // If reference is volatile, prevent following volatiles ops from + // floating up before the volatile access. +@@ -299,6 +307,13 @@ public: + assert(_leading_membar == NULL || support_IRIW_for_not_multiple_copy_atomic_cpu, "no leading membar expected"); + Node* mb = kit->insert_mem_bar(Op_MemBarAcquire, n); + mb->as_MemBar()->set_trailing_load(); ++ } else if (is_relaxed && is_unsafe) { ++#ifdef LOONGARCH64 ++ assert(kit != nullptr, "unsupported at optimization time"); ++ Node* n = _access.raw_access(); ++ Node* mb = kit->insert_mem_bar(Op_SameAddrLoadFence, n); ++ mb->as_MemBar()->set_trailing_load(); ++#endif + } + } + } diff --git a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp index 7d31ff02e1a..07dac06aecf 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp @@ -115231,7 +115308,7 @@ index 3f57d487bae..3b49daaf96e 100644 #define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \ diff --git a/src/hotspot/share/memory/metaspace.cpp b/src/hotspot/share/memory/metaspace.cpp -index 1e897615eaf..9dc65a72b1e 100644 +index d1882c70e2c..7e62537658a 100644 --- a/src/hotspot/share/memory/metaspace.cpp +++ b/src/hotspot/share/memory/metaspace.cpp @@ -23,6 +23,12 @@ @@ -115247,7 +115324,7 @@ index 1e897615eaf..9dc65a72b1e 100644 #include "precompiled.hpp" #include "cds/metaspaceShared.hpp" #include "classfile/classLoaderData.hpp" -@@ -587,12 +593,15 @@ bool Metaspace::class_space_is_initialized() { +@@ -581,12 +587,15 @@ bool Metaspace::class_space_is_initialized() { // On error, returns an unreserved space. ReservedSpace Metaspace::reserve_address_space_for_compressed_classes(size_t size) { @@ -115264,7 +115341,7 @@ index 1e897615eaf..9dc65a72b1e 100644 // Additionally, above 32G, ensure the lower LogKlassAlignmentInBytes bits // of the upper 32-bits of the address are zero so we can handle a shift // when decoding. -@@ -649,16 +658,16 @@ ReservedSpace Metaspace::reserve_address_space_for_compressed_classes(size_t siz +@@ -643,16 +652,16 @@ ReservedSpace Metaspace::reserve_address_space_for_compressed_classes(size_t siz return rs; } } @@ -115284,8 +115361,115 @@ index 1e897615eaf..9dc65a72b1e 100644 } #endif // _LP64 +diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp +index 614d0b4e112..8d7764eb8a0 100644 +--- a/src/hotspot/share/opto/classes.hpp ++++ b/src/hotspot/share/opto/classes.hpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #include "utilities/macros.hpp" + + // The giant table of Node classes. +@@ -223,6 +229,7 @@ macro(StoreStoreFence) + macro(MemBarReleaseLock) + macro(MemBarVolatile) + macro(MemBarStoreStore) ++macro(SameAddrLoadFence) + macro(MergeMem) + macro(MinI) + macro(MinL) +diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp +index 4e8e39ffa74..6c7770dbf9c 100644 +--- a/src/hotspot/share/opto/compile.cpp ++++ b/src/hotspot/share/opto/compile.cpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #include "precompiled.hpp" + #include "jvm_io.h" + #include "asm/macroAssembler.hpp" +@@ -3522,6 +3528,7 @@ void Compile::final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& f + n->set_req(MemBarNode::Precedent, top()); + } + break; ++ case Op_SameAddrLoadFence: + case Op_MemBarAcquire: { + if (n->as_MemBar()->trailing_load() && n->req() > MemBarNode::Precedent) { + // At parse time, the trailing MemBarAcquire for a volatile load +diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp +index 074b129b059..a1886f813c3 100644 +--- a/src/hotspot/share/opto/memnode.cpp ++++ b/src/hotspot/share/opto/memnode.cpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #include "precompiled.hpp" + #include "classfile/javaClasses.hpp" + #include "compiler/compileLog.hpp" +@@ -3298,6 +3304,7 @@ MemBarNode* MemBarNode::make(Compile* C, int opcode, int atp, Node* pn) { + case Op_MemBarReleaseLock: return new MemBarReleaseLockNode(C, atp, pn); + case Op_MemBarVolatile: return new MemBarVolatileNode(C, atp, pn); + case Op_MemBarCPUOrder: return new MemBarCPUOrderNode(C, atp, pn); ++ case Op_SameAddrLoadFence: return new SameAddrLoadFenceNode(C, atp, pn); + case Op_OnSpinWait: return new OnSpinWaitNode(C, atp, pn); + case Op_Initialize: return new InitializeNode(C, atp, pn); + default: ShouldNotReachHere(); return nullptr; +diff --git a/src/hotspot/share/opto/memnode.hpp b/src/hotspot/share/opto/memnode.hpp +index 99a30486274..71bf997533f 100644 +--- a/src/hotspot/share/opto/memnode.hpp ++++ b/src/hotspot/share/opto/memnode.hpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #ifndef SHARE_OPTO_MEMNODE_HPP + #define SHARE_OPTO_MEMNODE_HPP + +@@ -1336,6 +1342,14 @@ public: + virtual uint ideal_reg() const { return 0; } // not matched in the AD file + }; + ++// Used to prevent LoadLoad reorder for same address. ++class SameAddrLoadFenceNode: public MemBarNode { ++public: ++ SameAddrLoadFenceNode(Compile* C, int alias_idx, Node* precedent) ++ : MemBarNode(C, alias_idx, precedent) {} ++ virtual int Opcode() const; ++}; ++ + class OnSpinWaitNode: public MemBarNode { + public: + OnSpinWaitNode(Compile* C, int alias_idx, Node* precedent) diff --git a/src/hotspot/share/opto/output.cpp b/src/hotspot/share/opto/output.cpp -index 8a1ed0d3160..596829c07ca 100644 +index 43c46a0eb8f..af7a37a1bf2 100644 --- a/src/hotspot/share/opto/output.cpp +++ b/src/hotspot/share/opto/output.cpp @@ -22,6 +22,12 @@ @@ -115301,7 +115485,7 @@ index 8a1ed0d3160..596829c07ca 100644 #include "precompiled.hpp" #include "asm/assembler.inline.hpp" #include "asm/macroAssembler.inline.hpp" -@@ -1011,6 +1017,27 @@ void PhaseOutput::Process_OopMap_Node(MachNode *mach, int current_offset) { +@@ -1016,6 +1022,27 @@ void PhaseOutput::Process_OopMap_Node(MachNode *mach, int current_offset) { // Add the safepoint in the DebugInfoRecorder if( !mach->is_MachCall() ) { mcall = nullptr; @@ -115329,7 +115513,7 @@ index 8a1ed0d3160..596829c07ca 100644 C->debug_info()->add_safepoint(safepoint_pc_offset, sfn->_oop_map); } else { mcall = mach->as_MachCall(); -@@ -1686,6 +1713,22 @@ void PhaseOutput::fill_buffer(CodeBuffer* cb, uint* blk_starts) { +@@ -1691,6 +1718,22 @@ void PhaseOutput::fill_buffer(CodeBuffer* cb, uint* blk_starts) { DEBUG_ONLY(uint instr_offset = cb->insts_size()); n->emit(*cb, C->regalloc()); current_offset = cb->insts_size(); @@ -115353,7 +115537,7 @@ index 8a1ed0d3160..596829c07ca 100644 // Above we only verified that there is enough space in the instruction section. // However, the instruction may emit stubs that cause code buffer expansion. diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp -index e99bf8eb8bb..67f8de896a9 100644 +index f13ffbc12af..f78be3e0871 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -22,6 +22,12 @@ @@ -115420,7 +115604,7 @@ index 374816fd355..e7015344a18 100644 assert(owner_raw() != current, "invariant"); assert(_Responsible != current, "invariant"); diff --git a/src/hotspot/share/runtime/os.cpp b/src/hotspot/share/runtime/os.cpp -index 69cf6f143c4..16dc031e430 100644 +index e786b057262..6f34a7d5ea5 100644 --- a/src/hotspot/share/runtime/os.cpp +++ b/src/hotspot/share/runtime/os.cpp @@ -22,6 +22,12 @@ @@ -115436,7 +115620,7 @@ index 69cf6f143c4..16dc031e430 100644 #include "precompiled.hpp" #include "jvm.h" #include "classfile/javaClasses.hpp" -@@ -1228,7 +1234,8 @@ bool os::is_first_C_frame(frame* fr) { +@@ -1238,7 +1244,8 @@ bool os::is_first_C_frame(frame* fr) { if ((uintptr_t)fr->sender_sp() == (uintptr_t)-1 || is_pointer_bad(fr->sender_sp())) return true; uintptr_t old_fp = (uintptr_t)fr->link_or_null(); @@ -115540,6 +115724,31 @@ index d86fce3c8ac..71bfd4dfa19 100644 // Use membars when accessing volatile _thread_state. See // Threads::create_vm() for size checks. Atomic::release_store((volatile jint*)&_thread_state, (jint)s); +diff --git a/src/hotspot/share/runtime/vmStructs.cpp b/src/hotspot/share/runtime/vmStructs.cpp +index 33de84a68c1..7dc3d58f381 100644 +--- a/src/hotspot/share/runtime/vmStructs.cpp ++++ b/src/hotspot/share/runtime/vmStructs.cpp +@@ -22,6 +22,12 @@ + * + */ + ++/* ++ * This file has been modified by Loongson Technology in 2023, These ++ * modifications are Copyright (c) 2023, Loongson Technology, and are made ++ * available on the same license terms set forth above. ++ */ ++ + #include "precompiled.hpp" + #include "cds/filemap.hpp" + #include "ci/ciField.hpp" +@@ -1597,6 +1603,7 @@ typedef HashtableEntry KlassHashtableEntry; + declare_c2_type(StoreFenceNode, MemBarNode) \ + declare_c2_type(MemBarVolatileNode, MemBarNode) \ + declare_c2_type(MemBarCPUOrderNode, MemBarNode) \ ++ declare_c2_type(SameAddrLoadFenceNode, MemBarNode) \ + declare_c2_type(OnSpinWaitNode, MemBarNode) \ + declare_c2_type(BlackholeNode, MultiNode) \ + declare_c2_type(InitializeNode, MemBarNode) \ diff --git a/src/hotspot/share/utilities/macros.hpp b/src/hotspot/share/utilities/macros.hpp index 33ecfe089f8..4d024b35735 100644 --- a/src/hotspot/share/utilities/macros.hpp @@ -115737,7 +115946,7 @@ index a69496e77a4..64312b4705d 100644 // This C bool type must be int for compatibility with Linux calls and // it would be a mistake to equivalence it to C++ bool on many platforms diff --git a/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c b/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c -index 1101b999961..301c9f9f26e 100644 +index 3068f475626..d35cc73221f 100644 --- a/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c +++ b/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c @@ -22,6 +22,12 @@ @@ -121968,6 +122177,28 @@ index 16863189500..e2f3a13473b 100644 + {"aix-ppc64", "dt_shmem"}, }; } +diff --git a/test/jdk/java/nio/channels/DatagramChannel/Disconnect.java b/test/jdk/java/nio/channels/DatagramChannel/Disconnect.java +index cdc5882fefd..16120f85168 100644 +--- a/test/jdk/java/nio/channels/DatagramChannel/Disconnect.java ++++ b/test/jdk/java/nio/channels/DatagramChannel/Disconnect.java +@@ -52,7 +52,7 @@ public class Disconnect { + if (IPSupport.hasIPv4()) { + // test with IPv4 only + try (DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)) { +- InetAddress lo4 = InetAddress.ofLiteral("127.0.0.1"); ++ InetAddress lo4 = InetAddress.getByName("127.0.0.1"); + System.out.println("Testing with INET family and " + lo4); + test(dc, lo4); + test(dc, lo4); +@@ -62,7 +62,7 @@ public class Disconnect { + if (IPSupport.hasIPv6()) { + // test with IPv6 only + try (DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET6)) { +- InetAddress lo6 = InetAddress.ofLiteral("::1"); ++ InetAddress lo6 = InetAddress.getByName("::1"); + System.out.println("Testing with INET6 family and " + lo6); + test(dc, lo6); + test(dc, lo6); diff --git a/test/jdk/jdk/jfr/event/os/TestCPUInformation.java b/test/jdk/jdk/jfr/event/os/TestCPUInformation.java index c5166580010..913136a1fd1 100644 --- a/test/jdk/jdk/jfr/event/os/TestCPUInformation.java @@ -121997,7 +122228,7 @@ index c5166580010..913136a1fd1 100644 } } diff --git a/test/lib-test/jdk/test/lib/TestMutuallyExclusivePlatformPredicates.java b/test/lib-test/jdk/test/lib/TestMutuallyExclusivePlatformPredicates.java -index f8ce856bddd..003e75094e4 100644 +index e78e200ac24..2b9fcc0ff47 100644 --- a/test/lib-test/jdk/test/lib/TestMutuallyExclusivePlatformPredicates.java +++ b/test/lib-test/jdk/test/lib/TestMutuallyExclusivePlatformPredicates.java @@ -33,6 +33,12 @@ import java.util.HashSet; @@ -122023,7 +122254,7 @@ index f8ce856bddd..003e75094e4 100644 OS("isAix", "isLinux", "isOSX", "isWindows"), VM_TYPE("isClient", "isServer", "isMinimal", "isZero", "isEmbedded"), diff --git a/test/lib/jdk/test/lib/Platform.java b/test/lib/jdk/test/lib/Platform.java -index 00e922bb15a..d01b20e1eff 100644 +index 2e2e16e6593..64b42446e84 100644 --- a/test/lib/jdk/test/lib/Platform.java +++ b/test/lib/jdk/test/lib/Platform.java @@ -21,6 +21,12 @@ diff --git a/add-version-txt.patch b/add-version-txt.patch index dabf1c16e7dc29daa16c6091a68da0aa7df789f0..be2d555d0cd681c1ec02654da51a49477ac760c7 100644 --- a/add-version-txt.patch +++ b/add-version-txt.patch @@ -13,7 +13,7 @@ index 000000000..b717bafbe --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ -+17.0.12.0.13 ++17.0.13.0.13 -- 2.19.0 diff --git a/downgrade-fcntl64-to-fcntl-on-linux.patch b/downgrade-fcntl64-to-fcntl-on-linux.patch new file mode 100644 index 0000000000000000000000000000000000000000..2d20d5209954d27fd19db99e8cf2e31a20e01279 --- /dev/null +++ b/downgrade-fcntl64-to-fcntl-on-linux.patch @@ -0,0 +1,28 @@ +From d01d6f1d2c4baeb238a850ccedc8b2ab1a926eb0 Mon Sep 17 00:00:00 2001 +Date: Thu, 31 Oct 2024 17:06:06 +0800 +Subject: downgrade fcntl64 to fcntl on linux + +--- + src/hotspot/os/linux/os_linux.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp +index e59af5504..96b92344f 100644 +--- a/src/hotspot/os/linux/os_linux.cpp ++++ b/src/hotspot/os/linux/os_linux.cpp +@@ -122,6 +122,12 @@ + #include + #endif + ++#if defined(AARCH64) ++ __asm__(".symver fcntl64,fcntl@GLIBC_2.17"); ++#elif defined(AMD64) ++ __asm__(".symver fcntl64,fcntl@GLIBC_2.2.5"); ++#endif ++ + // if RUSAGE_THREAD for getrusage() has not been defined, do it here. The code calling + // getrusage() is prepared to handle the associated failure. + #ifndef RUSAGE_THREAD +-- +2.22.0 + diff --git a/jdk-updates-jdk17u-jdk-17.0.12+7.tar.gz b/jdk-updates-jdk17u-jdk-17.0.13+11.tar.gz similarity index 85% rename from jdk-updates-jdk17u-jdk-17.0.12+7.tar.gz rename to jdk-updates-jdk17u-jdk-17.0.13+11.tar.gz index 47278351786ff9bed1a711afcc5af03c8129c6ea..0b1eca37b1f3299ab57054d1285c13c810eb0164 100644 Binary files a/jdk-updates-jdk17u-jdk-17.0.12+7.tar.gz and b/jdk-updates-jdk17u-jdk-17.0.13+11.tar.gz differ diff --git a/openjdk-17.spec b/openjdk-17.spec index 09e032246d0fb7cf81f6d9ed90e941c0c833759c..cf0660897fba7dd6eb92b2cc84884b67a47fe0ce 100644 --- a/openjdk-17.spec +++ b/openjdk-17.spec @@ -161,7 +161,7 @@ # Used via new version scheme. JDK 17 was # GA'ed in March 2021 => 21.9 %global vendor_version_string 21.9 -%global securityver 12 +%global securityver 13 # 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 @@ -187,7 +187,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{origin} %global minorver 0 -%global buildver 7 +%global buildver 11 # 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 %global priority %( printf '%02d%02d%02d%02d' %{majorver} %{minorver} %{securityver} %{buildver} ) @@ -903,7 +903,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release} Name: java-%{javaver}-%{origin} Version: %{newjavaver}.%{buildver} -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 @@ -1026,7 +1026,20 @@ Patch53: Add-JBooster-options-check.patch Patch54: KAE-zip-Features.patch Patch55: heap-dump-redact-support.patch Patch56: Backport-Important-Fixed-Issues.patch - +Patch57: Backport-of-JDK-8305680.patch +Patch58: Backport-of-JDK-8305937.patch +Patch59: 8338785-The-java.awt.datatransfer.SystemFlavorMap-FL.patch +Patch60: 8337982-Remove-dead-undef-assrt0n.patch +Patch61: 8337274-Remove-repeated-the-in-StyleSheet.create-Sma.patch +Patch62: 8335610-DiagnosticFramework-CmdLine-is_executable-co.patch +Patch63: Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch +Patch64: Backport-of-8339351-Remove-duplicate-line-in-FileMap.patch +Patch65: Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch +Patch66: Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch + +#17.0.13 +Patch67: Huawei-Fix-JBooster-file-issue-caused-by-os-write-change.patch +Patch68: downgrade-fcntl64-to-fcntl-on-linux.patch ############################################ # # LoongArch64 specific patches @@ -1298,7 +1311,18 @@ pushd %{top_level_dir_name} %patch55 -p1 %patch56 -p1 %endif - +%patch57 -p1 +%patch58 -p1 +%patch59 -p1 +%patch60 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 +%patch64 -p1 +%patch65 -p1 +%patch66 -p1 +%patch67 -p1 +%patch68 -p1 popd # openjdk %endif @@ -1865,8 +1889,34 @@ cjc.mainProgram(args) -- the returns from copy_jdk_configs.lua should not affect %changelog -* Thu Oct 31 2024 Pan Xuefeng - 1:17.0.12.7-5 -- update LoongArch64 port to 17.0.12.7 +* Wed Nov 6 2024 Pan Xuefeng - 1:17.0.13.11-2 +- upgrade LoongArch64 port to 17.0.13 + +* Thu Oct 31 2024 neu-mobi - 1:17.0.13.11-1 +- add downgrade-fcntl64-to-fcntl-on-linux.patch + +* Wed Oct 16 2024 Benshuai5D - 1:17.0.13.11-0 +- modify 8264805-Backport-Ahead-of-Time-Compiler.patch +- modify 8264806-Backport-Graal-Compiler.patch +- modify Add-JBooster-Lazy-AOT-module.patch +- modify Apply-TBI-to-ZGC-of-JDK17.patch +- modify Backport-Important-Fixed-Issues.patch +- modify KAE-zip-Features.patch +- modify add-version-txt.patch +- add Huawei-Fix-JBooster-file-issue-caused-by-os-write-change.patch +- update to 17.0.13+11(ga) + +* Mon Oct 14 2024 Autistic_boyya - 1:17.0.12.7-5 +- Add Backport-of-JDK-8305680.patch +- Add Backport-of-JDK-8305937.patch +- Add 8338785-The-java.awt.datatransfer.SystemFlavorMap-FL.patch +- Add 8337982-Remove-dead-undef-assrt0n.patch +- Add 8337274-Remove-repeated-the-in-StyleSheet.create-Sma.patch +- Add 8335610-DiagnosticFramework-CmdLine-is_executable-co.patch +- Add Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch +- Add Backport-of-8339351-Remove-duplicate-line-in-FileMap.patch +- Add Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch +- Add Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch * Mon Sep 23 2024 Dingli Zhang - 1:17.0.12.7-4 - Remove the KAE patch for riscv64 to fix build errors