!123 sync master to openEuler-24.03-LTS-SP1

From: @neu-mobi 
Reviewed-by: @kuenking111 
Signed-off-by: @kuenking111
This commit is contained in:
openeuler-ci-bot 2024-11-18 13:01:09 +00:00 committed by Gitee
commit 76a4dfb2d0
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
22 changed files with 688 additions and 368 deletions

View File

@ -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.
*

View File

@ -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
+###############################################################################
+#

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.
*

View File

@ -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

View File

@ -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<bool>(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<Object> 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<Object> 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<Object> 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<Object> 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<File> newFileCache = new Vector<File>();
- Vector<File> newFiles = new Vector<File>();
+ final Vector<File> newFiles = new Vector<File>();
- // 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<Object> 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>() {
+ DoChangeContents runnable = ShellFolder.invoke(new Callable<DoChangeContents>() {
public DoChangeContents call() {
int newSize = newFileCache.size();
int oldSize = fileCache.size();
@@ -388,7 +389,7 @@ public class BasicDirectoryModel extends AbstractListModel<Object> 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<Object> implements Pr
SwingUtilities.invokeLater(runnable);
}
}
-
- private void cancelRunnables() {
- if (runnable != null) {
- runnable.cancel();
- }
- }
}
@@ -514,13 +509,13 @@ public class BasicDirectoryModel extends AbstractListModel<Object> implements Pr
private final class DoChangeContents implements Runnable {
private final List<File> addFiles;
private final List<File> 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<File> addFiles, int addStart, List<File> remFiles,
- int remStart, int fid) {
+ private DoChangeContents(List<File> addFiles, int addStart,
+ List<File> remFiles, int remStart,
+ int fid) {
this.addFiles = addFiles;
this.addStart = addStart;
this.remFiles = remFiles;
@@ -528,31 +523,31 @@ public class BasicDirectoryModel extends AbstractListModel<Object> 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<RecordedEvent> 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

View File

@ -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

View File

@ -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

View File

@ -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
* <li>{@code mm} is the minute within the hour ({@code 00} through
* {@code 59}), as two decimal digits.
* <li>{@code ss} is the second within the minute ({@code 00} through
- * {@code 61}, as two decimal digits.
+ * {@code 61}), as two decimal digits.
* <li>{@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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,23 @@
Subject: Backport of JDK-8305937
Signed-off-by: Qeryu <u201911667@hust.edu.cn>
---
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

View File

@ -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

View File

@ -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), \

View File

@ -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<InstanceKlass*, mtClass> 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 @@

View File

@ -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

View File

@ -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 <sched.h>
#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

View File

@ -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 <panxuefeng@loongson.cn> - 1:17.0.12.7-5
- update LoongArch64 port to 17.0.12.7
* Wed Nov 6 2024 Pan Xuefeng <panxuefeng@loongson.cn> - 1:17.0.13.11-2
- upgrade LoongArch64 port to 17.0.13
* Thu Oct 31 2024 neu-mobi <liuyulong35@huawei.com> - 1:17.0.13.11-1
- add downgrade-fcntl64-to-fcntl-on-linux.patch
* Wed Oct 16 2024 Benshuai5D <zhangyunbo7@huawei.com> - 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 <wangzhongyi7@huawei.com> - 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 <dingli@iscas.ac.cn> - 1:17.0.12.7-4
- Remove the KAE patch for riscv64 to fix build errors