!52 update LoongArch64 port to 21.0.4.7
From: @panxuefeng-loongson Reviewed-by: @kuenking111 Signed-off-by: @kuenking111
This commit is contained in:
commit
d10fc7f889
@ -23376,10 +23376,10 @@ index 00000000000..7a50810acda
|
||||
+%}
|
||||
diff --git a/src/hotspot/cpu/loongarch/globalDefinitions_loongarch.hpp b/src/hotspot/cpu/loongarch/globalDefinitions_loongarch.hpp
|
||||
new file mode 100644
|
||||
index 00000000000..441882dcaa0
|
||||
index 00000000000..2306c5bc6d1
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/loongarch/globalDefinitions_loongarch.hpp
|
||||
@@ -0,0 +1,57 @@
|
||||
@@ -0,0 +1,58 @@
|
||||
+/*
|
||||
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2015, 2023, Loongson Technology. All rights reserved.
|
||||
@ -23411,6 +23411,7 @@ index 00000000000..441882dcaa0
|
||||
+const int BytesPerInstWord = 4;
|
||||
+
|
||||
+const int StackAlignmentInBytes = (2*wordSize);
|
||||
+const size_t pd_segfault_address = 1024;
|
||||
+
|
||||
+// Indicates whether the C calling conventions require that
|
||||
+// 32-bit integer argument values are properly extended to 64 bits.
|
||||
@ -42836,10 +42837,10 @@ index 00000000000..366df18eb9c
|
||||
+
|
||||
diff --git a/src/hotspot/cpu/loongarch/macroAssembler_loongarch.cpp b/src/hotspot/cpu/loongarch/macroAssembler_loongarch.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..e1c033e7085
|
||||
index 00000000000..e2f69cea31b
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/loongarch/macroAssembler_loongarch.cpp
|
||||
@@ -0,0 +1,4238 @@
|
||||
@@ -0,0 +1,4242 @@
|
||||
+/*
|
||||
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2017, 2023, Loongson Technology. All rights reserved.
|
||||
@ -46164,12 +46165,16 @@ index 00000000000..e1c033e7085
|
||||
+ address prev = pc() - NativeInstruction::sync_instruction_size;
|
||||
+ address last = code()->last_insn();
|
||||
+ if (last != nullptr && ((NativeInstruction*)last)->is_sync() && prev == last) {
|
||||
+ code()->set_last_insn(nullptr);
|
||||
+ NativeMembar *membar = (NativeMembar*)prev;
|
||||
+#ifndef PRODUCT
|
||||
+ char buf[50];
|
||||
+ snprintf(buf, sizeof(buf), "merged membar 0x%x 0x%x => 0x%x",
|
||||
+ (Ordering | membar->get_hint()), (Ordering | (~hint & 0xF)), (Ordering | (membar->get_hint() & (~hint & 0xF))));
|
||||
+ block_comment(buf);
|
||||
+#endif
|
||||
+ // merged membar
|
||||
+ // e.g. LoadLoad and LoadLoad|LoadStore to LoadLoad|LoadStore
|
||||
+ membar->set_hint(membar->get_hint() & (~hint & 0xF));
|
||||
+ block_comment("merged membar");
|
||||
+ } else {
|
||||
+ code()->set_last_insn(pc());
|
||||
+ Assembler::membar(hint);
|
||||
@ -48930,13 +48935,13 @@ index 00000000000..ea4d5a2ac4c
|
||||
+}
|
||||
diff --git a/src/hotspot/cpu/loongarch/macroAssembler_loongarch_trig.cpp b/src/hotspot/cpu/loongarch/macroAssembler_loongarch_trig.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..b4a1b09b375
|
||||
index 00000000000..0c31904a36b
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/loongarch/macroAssembler_loongarch_trig.cpp
|
||||
@@ -0,0 +1,1625 @@
|
||||
@@ -0,0 +1,1626 @@
|
||||
+/* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2018, Cavium. All rights reserved. (By BELLSOFT)
|
||||
+ * Copyright (c) 2022, Loongson Technology. All rights reserved.
|
||||
+ * Copyright (c) 2022, 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
|
||||
@ -49830,7 +49835,7 @@ index 00000000000..b4a1b09b375
|
||||
+ b(Q_DONE);
|
||||
+ bind(JX_IS_0);
|
||||
+ if (UseLASX) {
|
||||
+ xvfmul_d(v28, v18, v6); // f[0,1] * x[0]
|
||||
+ xvfmul_d(v28, v18, v6); // f[0,3] * x[0]
|
||||
+ fmul_d(v30, v19, v6); // f[4] * x[0]
|
||||
+ } else {
|
||||
+ vfmul_d(v28, v18, v6); // f[0,1] * x[0]
|
||||
@ -50064,6 +50069,7 @@ index 00000000000..b4a1b09b375
|
||||
+ st_w(tmp2, SCR2, 0);
|
||||
+ addi_w(SCR1, SCR1, 24);
|
||||
+ addi_w(jz, jz, 1);
|
||||
+ alsl_d(SCR2, jz, iqBase, 2 - 1);
|
||||
+ st_w(tmp3, SCR2, 0); // iq[jz] = (int) fw
|
||||
+ b(Z_ZERO_CHECK_DONE);
|
||||
+ bind(Z_IS_LESS_THAN_TWO24B);
|
||||
@ -53343,13 +53349,13 @@ index 00000000000..c85ca4963f3
|
||||
+#endif // CPU_LOONGARCH_RELOCINFO_LOONGARCH_HPP
|
||||
diff --git a/src/hotspot/cpu/loongarch/sharedRuntime_loongarch_64.cpp b/src/hotspot/cpu/loongarch/sharedRuntime_loongarch_64.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..930b1c18841
|
||||
index 00000000000..834a1e7ffc6
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/loongarch/sharedRuntime_loongarch_64.cpp
|
||||
@@ -0,0 +1,2975 @@
|
||||
@@ -0,0 +1,2979 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2015, 2023, 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
|
||||
@ -53697,7 +53703,7 @@ index 00000000000..930b1c18841
|
||||
+
|
||||
+ uint int_args = 0;
|
||||
+ uint fp_args = 0;
|
||||
+ uint stk_args = 0; // inc by 2 each time
|
||||
+ uint stk_args = 0;
|
||||
+
|
||||
+ for (int i = 0; i < total_args_passed; i++) {
|
||||
+ switch (sig_bt[i]) {
|
||||
@ -53714,8 +53720,9 @@ index 00000000000..930b1c18841
|
||||
+ if (int_args < Argument::n_int_register_parameters_j) {
|
||||
+ regs[i].set1(INT_ArgReg[int_args++]->as_VMReg());
|
||||
+ } else {
|
||||
+ stk_args = align_up(stk_args, 2);
|
||||
+ regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
+ stk_args += 2;
|
||||
+ stk_args += 1;
|
||||
+ }
|
||||
+ break;
|
||||
+ case T_LONG:
|
||||
@ -53727,6 +53734,7 @@ index 00000000000..930b1c18841
|
||||
+ if (int_args < Argument::n_int_register_parameters_j) {
|
||||
+ regs[i].set2(INT_ArgReg[int_args++]->as_VMReg());
|
||||
+ } else {
|
||||
+ stk_args = align_up(stk_args, 2);
|
||||
+ regs[i].set2(VMRegImpl::stack2reg(stk_args));
|
||||
+ stk_args += 2;
|
||||
+ }
|
||||
@ -53735,8 +53743,9 @@ index 00000000000..930b1c18841
|
||||
+ if (fp_args < Argument::n_float_register_parameters_j) {
|
||||
+ regs[i].set1(FP_ArgReg[fp_args++]->as_VMReg());
|
||||
+ } else {
|
||||
+ stk_args = align_up(stk_args, 2);
|
||||
+ regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
+ stk_args += 2;
|
||||
+ stk_args += 1;
|
||||
+ }
|
||||
+ break;
|
||||
+ case T_DOUBLE:
|
||||
@ -53744,6 +53753,7 @@ index 00000000000..930b1c18841
|
||||
+ if (fp_args < Argument::n_float_register_parameters_j) {
|
||||
+ regs[i].set2(FP_ArgReg[fp_args++]->as_VMReg());
|
||||
+ } else {
|
||||
+ stk_args = align_up(stk_args, 2);
|
||||
+ regs[i].set2(VMRegImpl::stack2reg(stk_args));
|
||||
+ stk_args += 2;
|
||||
+ }
|
||||
@ -53754,7 +53764,7 @@ index 00000000000..930b1c18841
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return align_up(stk_args, 2);
|
||||
+ return stk_args;
|
||||
+}
|
||||
+
|
||||
+// Patch the callers callsite with entry to compiled code if it exists.
|
||||
@ -68846,13 +68856,13 @@ index 00000000000..7d308d998dd
|
||||
+}
|
||||
diff --git a/src/hotspot/cpu/loongarch/upcallLinker_loongarch_64.cpp b/src/hotspot/cpu/loongarch/upcallLinker_loongarch_64.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..ccaa16bb6b1
|
||||
index 00000000000..da902dda7a5
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/loongarch/upcallLinker_loongarch_64.cpp
|
||||
@@ -0,0 +1,347 @@
|
||||
@@ -0,0 +1,351 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2020, Red Hat, Inc. All rights reserved.
|
||||
+ * Copyright (c) 2021, 2023, Loongson Technology. All rights reserved.
|
||||
+ * Copyright (c) 2021, 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
|
||||
@ -69092,9 +69102,13 @@ index 00000000000..ccaa16bb6b1
|
||||
+ __ mov_metadata(Rmethod, entry);
|
||||
+ __ st_d(Rmethod, TREG, in_bytes(JavaThread::callee_target_offset())); // just in case callee is deoptimized
|
||||
+
|
||||
+ __ push_cont_fastpath(TREG);
|
||||
+
|
||||
+ __ ld_d(T4, Rmethod, in_bytes(Method::from_compiled_offset()));
|
||||
+ __ jalr(T4);
|
||||
+
|
||||
+ __ pop_cont_fastpath(TREG);
|
||||
+
|
||||
+ // return value shuffle
|
||||
+ if (!needs_return_buffer) {
|
||||
+#ifdef ASSERT
|
||||
@ -70675,7 +70689,7 @@ index 00000000000..ab12021832d
|
||||
+ return icache_line_size;
|
||||
+}
|
||||
diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp
|
||||
index aa8be1d897d..f71a20207c5 100644
|
||||
index 492300a37d4..b0504aff9c2 100644
|
||||
--- a/src/hotspot/os/linux/os_linux.cpp
|
||||
+++ b/src/hotspot/os/linux/os_linux.cpp
|
||||
@@ -23,6 +23,12 @@
|
||||
@ -70691,7 +70705,7 @@ index aa8be1d897d..f71a20207c5 100644
|
||||
// no precompiled headers
|
||||
#include "classfile/vmSymbols.hpp"
|
||||
#include "code/icBuffer.hpp"
|
||||
@@ -2191,6 +2197,12 @@ bool os::Linux::query_process_memory_info(os::Linux::meminfo_t* info) {
|
||||
@@ -2200,6 +2206,12 @@ bool os::Linux::query_process_memory_info(os::Linux::meminfo_t* info) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -70704,7 +70718,7 @@ index aa8be1d897d..f71a20207c5 100644
|
||||
#ifdef __GLIBC__
|
||||
// For Glibc, print a one-liner with the malloc tunables.
|
||||
// Most important and popular is MALLOC_ARENA_MAX, but we are
|
||||
@@ -2407,7 +2419,7 @@ void os::print_memory_info(outputStream* st) {
|
||||
@@ -2416,7 +2428,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) {
|
||||
@ -70713,7 +70727,7 @@ index aa8be1d897d..f71a20207c5 100644
|
||||
// Other platforms have less repetitive cpuinfo files
|
||||
FILE *fp = os::fopen("/proc/cpuinfo", "r");
|
||||
if (fp) {
|
||||
@@ -2519,7 +2531,7 @@ void os::jfr_report_memory_info() {
|
||||
@@ -2528,7 +2540,7 @@ void os::jfr_report_memory_info() {
|
||||
|
||||
#endif // INCLUDE_JFR
|
||||
|
||||
@ -70722,7 +70736,7 @@ index aa8be1d897d..f71a20207c5 100644
|
||||
const char* search_string = "model name";
|
||||
#elif defined(M68K)
|
||||
const char* search_string = "CPU";
|
||||
@@ -4490,6 +4502,44 @@ void os::Linux::numa_init() {
|
||||
@@ -4480,6 +4492,44 @@ void os::Linux::numa_init() {
|
||||
// If there's only one node (they start from 0) or if the process
|
||||
// is bound explicitly to a single node using membind, disable NUMA
|
||||
UseNUMA = false;
|
||||
@ -70768,7 +70782,7 @@ index aa8be1d897d..f71a20207c5 100644
|
||||
LogTarget(Info,os) log;
|
||||
LogStream ls(log);
|
||||
diff --git a/src/hotspot/os/linux/os_linux.hpp b/src/hotspot/os/linux/os_linux.hpp
|
||||
index ace7e4ab2dd..4baf381b2f2 100644
|
||||
index 029f2aa7a52..78bf68a72e9 100644
|
||||
--- a/src/hotspot/os/linux/os_linux.hpp
|
||||
+++ b/src/hotspot/os/linux/os_linux.hpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -70784,7 +70798,7 @@ index ace7e4ab2dd..4baf381b2f2 100644
|
||||
#ifndef OS_LINUX_OS_LINUX_HPP
|
||||
#define OS_LINUX_OS_LINUX_HPP
|
||||
|
||||
@@ -193,6 +199,8 @@ class os::Linux {
|
||||
@@ -195,6 +201,8 @@ class os::Linux {
|
||||
|
||||
// none present
|
||||
|
||||
@ -70794,7 +70808,7 @@ index ace7e4ab2dd..4baf381b2f2 100644
|
||||
static void numa_init();
|
||||
|
||||
diff --git a/src/hotspot/os/linux/systemMemoryBarrier_linux.cpp b/src/hotspot/os/linux/systemMemoryBarrier_linux.cpp
|
||||
index 609967128fb..d67deeda164 100644
|
||||
index 51397b139d8..96269fef53d 100644
|
||||
--- a/src/hotspot/os/linux/systemMemoryBarrier_linux.cpp
|
||||
+++ b/src/hotspot/os/linux/systemMemoryBarrier_linux.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -70809,9 +70823,9 @@ index 609967128fb..d67deeda164 100644
|
||||
+
|
||||
#include "precompiled.hpp"
|
||||
#include "logging/log.hpp"
|
||||
#include "runtime/os.hpp"
|
||||
@@ -43,6 +49,8 @@
|
||||
#define SYS_membarrier 283
|
||||
#include "os_linux.hpp"
|
||||
@@ -45,6 +51,8 @@
|
||||
#define SYS_membarrier 389
|
||||
#elif defined(ALPHA)
|
||||
#define SYS_membarrier 517
|
||||
+ #elif defined(LOONGARCH)
|
||||
@ -70819,179 +70833,6 @@ index 609967128fb..d67deeda164 100644
|
||||
#else
|
||||
#error define SYS_membarrier for the arch
|
||||
#endif
|
||||
diff --git a/src/hotspot/os_cpu/linux_loongarch/amcas_asm.h b/src/hotspot/os_cpu/linux_loongarch/amcas_asm.h
|
||||
new file mode 100644
|
||||
index 00000000000..305974a178f
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_loongarch/amcas_asm.h
|
||||
@@ -0,0 +1,167 @@
|
||||
+/*
|
||||
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2023, 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
|
||||
+ * 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.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef __AMCAS_ASM_H__
|
||||
+#define __AMCAS_ASM_H__
|
||||
+ asm(
|
||||
+ ".macro parse_r var r \n\t"
|
||||
+ "\\var = -1 \n\t"
|
||||
+ ".ifc \\r, $r0 \n\t"
|
||||
+ "\\var = 0 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r1 \n\t"
|
||||
+ "\\var = 1 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r2 \n\t"
|
||||
+ "\\var = 2 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r3 \n\t"
|
||||
+ "\\var = 3 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r4 \n\t"
|
||||
+ "\\var = 4 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r5 \n\t"
|
||||
+ "\\var = 5 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r6 \n\t"
|
||||
+ "\\var = 6 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r7 \n\t"
|
||||
+ "\\var = 7 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r8 \n\t"
|
||||
+ "\\var = 8 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r9 \n\t"
|
||||
+ "\\var = 9 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r10 \n\t"
|
||||
+ "\\var = 10 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r11 \n\t"
|
||||
+ "\\var = 11 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r12 \n\t"
|
||||
+ "\\var = 12 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r13 \n\t"
|
||||
+ "\\var = 13 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r14 \n\t"
|
||||
+ "\\var = 14 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r15 \n\t"
|
||||
+ "\\var = 15 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r16 \n\t"
|
||||
+ "\\var = 16 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r17 \n\t"
|
||||
+ "\\var = 17 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r18 \n\t"
|
||||
+ "\\var = 18 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r19 \n\t"
|
||||
+ "\\var = 19 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r20 \n\t"
|
||||
+ "\\var = 20 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r21 \n\t"
|
||||
+ "\\var = 21 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r22 \n\t"
|
||||
+ "\\var = 22 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r23 \n\t"
|
||||
+ "\\var = 23 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r24 \n\t"
|
||||
+ "\\var = 24 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r25 \n\t"
|
||||
+ "\\var = 25 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r26 \n\t"
|
||||
+ "\\var = 26 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r27 \n\t"
|
||||
+ "\\var = 27 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r28 \n\t"
|
||||
+ "\\var = 28 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r29 \n\t"
|
||||
+ "\\var = 29 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r30 \n\t"
|
||||
+ "\\var = 30 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".ifc \\r, $r31 \n\t"
|
||||
+ "\\var = 31 \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".iflt \\var \n\t"
|
||||
+ ".error \n\t"
|
||||
+ ".endif \n\t"
|
||||
+ ".endm \n\t"
|
||||
+
|
||||
+ ".macro amcas_w rd, rk, rj \n\t"
|
||||
+ "parse_r d, \\rd \n\t"
|
||||
+ "parse_r j, \\rj \n\t"
|
||||
+ "parse_r k, \\rk \n\t"
|
||||
+ ".word ((0b00111000010110010 << 15) | (k << 10) | (j << 5) | d) \n\t"
|
||||
+ ".endm \n\t"
|
||||
+
|
||||
+ ".macro amcas_d rd, rk, rj \n\t"
|
||||
+ "parse_r d, \\rd \n\t"
|
||||
+ "parse_r j, \\rj \n\t"
|
||||
+ "parse_r k, \\rk \n\t"
|
||||
+ ".word ((0b00111000010110011 << 15) | (k << 10) | (j << 5) | d) \n\t"
|
||||
+ ".endm \n\t"
|
||||
+
|
||||
+ ".macro amcas_db_b rd, rk, rj \n\t"
|
||||
+ "parse_r d, \\rd \n\t"
|
||||
+ "parse_r j, \\rj \n\t"
|
||||
+ "parse_r k, \\rk \n\t"
|
||||
+ ".word ((0b00111000010110100 << 15) | (k << 10) | (j << 5) | d) \n\t"
|
||||
+ ".endm \n\t"
|
||||
+
|
||||
+ ".macro amcas_db_w rd, rk, rj \n\t"
|
||||
+ "parse_r d, \\rd \n\t"
|
||||
+ "parse_r j, \\rj \n\t"
|
||||
+ "parse_r k, \\rk \n\t"
|
||||
+ ".word ((0b00111000010110110 << 15) | (k << 10) | (j << 5) | d) \n\t"
|
||||
+ ".endm \n\t"
|
||||
+
|
||||
+ ".macro amcas_db_d rd, rk, rj \n\t"
|
||||
+ "parse_r d, \\rd \n\t"
|
||||
+ "parse_r j, \\rj \n\t"
|
||||
+ "parse_r k, \\rk \n\t"
|
||||
+ ".word ((0b00111000010110111 << 15) | (k << 10) | (j << 5) | d) \n\t"
|
||||
+ ".endm \n\t"
|
||||
+ );
|
||||
+#endif /* __AMCAS_ASM_H__ */
|
||||
diff --git a/src/hotspot/os_cpu/linux_loongarch/assembler_linux_loongarch.cpp b/src/hotspot/os_cpu/linux_loongarch/assembler_linux_loongarch.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..30719a0340b
|
||||
@ -71024,13 +70865,13 @@ index 00000000000..30719a0340b
|
||||
+ */
|
||||
diff --git a/src/hotspot/os_cpu/linux_loongarch/atomic_linux_loongarch.hpp b/src/hotspot/os_cpu/linux_loongarch/atomic_linux_loongarch.hpp
|
||||
new file mode 100644
|
||||
index 00000000000..bb820b5e5ae
|
||||
index 00000000000..f0c7a7e3a5d
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_loongarch/atomic_linux_loongarch.hpp
|
||||
@@ -0,0 +1,361 @@
|
||||
@@ -0,0 +1,499 @@
|
||||
+/*
|
||||
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2015, 2023, 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
|
||||
@ -71057,10 +70898,146 @@ index 00000000000..bb820b5e5ae
|
||||
+#define OS_CPU_LINUX_LOONGARCH_ATOMIC_LINUX_LOONGARCH_HPP
|
||||
+
|
||||
+#include "runtime/vm_version.hpp"
|
||||
+#include "amcas_asm.h"
|
||||
+
|
||||
+// Implementation of class atomic
|
||||
+
|
||||
+#define AMCAS_MACRO asm volatile ( \
|
||||
+ ".ifndef _ASM_ASMMACRO_ \n\t" \
|
||||
+ ".set _ASM_ASMMACRO_, 1 \n\t" \
|
||||
+ ".macro parse_r var r \n\t" \
|
||||
+ "\\var = -1 \n\t" \
|
||||
+ ".ifc \\r, $r0 \n\t" \
|
||||
+ "\\var = 0 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r1 \n\t" \
|
||||
+ "\\var = 1 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r2 \n\t" \
|
||||
+ "\\var = 2 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r3 \n\t" \
|
||||
+ "\\var = 3 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r4 \n\t" \
|
||||
+ "\\var = 4 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r5 \n\t" \
|
||||
+ "\\var = 5 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r6 \n\t" \
|
||||
+ "\\var = 6 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r7 \n\t" \
|
||||
+ "\\var = 7 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r8 \n\t" \
|
||||
+ "\\var = 8 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r9 \n\t" \
|
||||
+ "\\var = 9 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r10 \n\t" \
|
||||
+ "\\var = 10 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r11 \n\t" \
|
||||
+ "\\var = 11 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r12 \n\t" \
|
||||
+ "\\var = 12 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r13 \n\t" \
|
||||
+ "\\var = 13 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r14 \n\t" \
|
||||
+ "\\var = 14 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r15 \n\t" \
|
||||
+ "\\var = 15 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r16 \n\t" \
|
||||
+ "\\var = 16 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r17 \n\t" \
|
||||
+ "\\var = 17 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r18 \n\t" \
|
||||
+ "\\var = 18 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r19 \n\t" \
|
||||
+ "\\var = 19 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r20 \n\t" \
|
||||
+ "\\var = 20 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r21 \n\t" \
|
||||
+ "\\var = 21 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r22 \n\t" \
|
||||
+ "\\var = 22 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r23 \n\t" \
|
||||
+ "\\var = 23 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r24 \n\t" \
|
||||
+ "\\var = 24 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r25 \n\t" \
|
||||
+ "\\var = 25 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r26 \n\t" \
|
||||
+ "\\var = 26 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r27 \n\t" \
|
||||
+ "\\var = 27 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r28 \n\t" \
|
||||
+ "\\var = 28 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r29 \n\t" \
|
||||
+ "\\var = 29 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r30 \n\t" \
|
||||
+ "\\var = 30 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".ifc \\r, $r31 \n\t" \
|
||||
+ "\\var = 31 \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".iflt \\var \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".macro amcas_w rd, rk, rj \n\t" \
|
||||
+ "parse_r d, \\rd \n\t" \
|
||||
+ "parse_r j, \\rj \n\t" \
|
||||
+ "parse_r k, \\rk \n\t" \
|
||||
+ ".word ((0b00111000010110010 << 15) | (k << 10) | (j << 5) | d) \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".macro amcas_d rd, rk, rj \n\t" \
|
||||
+ "parse_r d, \\rd \n\t" \
|
||||
+ "parse_r j, \\rj \n\t" \
|
||||
+ "parse_r k, \\rk \n\t" \
|
||||
+ ".word ((0b00111000010110011 << 15) | (k << 10) | (j << 5) | d) \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".macro amcas_db_b rd, rk, rj \n\t" \
|
||||
+ "parse_r d, \\rd \n\t" \
|
||||
+ "parse_r j, \\rj \n\t" \
|
||||
+ "parse_r k, \\rk \n\t" \
|
||||
+ ".word ((0b00111000010110100 << 15) | (k << 10) | (j << 5) | d) \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".macro amcas_db_w rd, rk, rj \n\t" \
|
||||
+ "parse_r d, \\rd \n\t" \
|
||||
+ "parse_r j, \\rj \n\t" \
|
||||
+ "parse_r k, \\rk \n\t" \
|
||||
+ ".word ((0b00111000010110110 << 15) | (k << 10) | (j << 5) | d) \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".macro amcas_db_d rd, rk, rj \n\t" \
|
||||
+ "parse_r d, \\rd \n\t" \
|
||||
+ "parse_r j, \\rj \n\t" \
|
||||
+ "parse_r k, \\rk \n\t" \
|
||||
+ ".word ((0b00111000010110111 << 15) | (k << 10) | (j << 5) | d) \n\t" \
|
||||
+ ".endm \n\t" \
|
||||
+ ".endif \n\t" \
|
||||
+ );
|
||||
+
|
||||
+template<size_t byte_size>
|
||||
+struct Atomic::PlatformAdd {
|
||||
+ template<typename D, typename I>
|
||||
@ -71197,6 +71174,7 @@ index 00000000000..bb820b5e5ae
|
||||
+ T prev, temp;
|
||||
+
|
||||
+ if (UseAMCAS) {
|
||||
+ AMCAS_MACRO
|
||||
+ switch (order) {
|
||||
+ case memory_order_relaxed:
|
||||
+ asm volatile (
|
||||
@ -71280,6 +71258,7 @@ index 00000000000..bb820b5e5ae
|
||||
+ T prev, temp;
|
||||
+
|
||||
+ if (UseAMCAS) {
|
||||
+ AMCAS_MACRO
|
||||
+ switch (order) {
|
||||
+ case memory_order_relaxed:
|
||||
+ asm volatile (
|
||||
@ -73072,7 +73051,7 @@ index 0634d970c26..f7797935846 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/hotspot/share/code/vtableStubs.cpp b/src/hotspot/share/code/vtableStubs.cpp
|
||||
index 934f805eefc..774a81f569b 100644
|
||||
index eed3dc8e787..c8b58dd459c 100644
|
||||
--- a/src/hotspot/share/code/vtableStubs.cpp
|
||||
+++ b/src/hotspot/share/code/vtableStubs.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73088,7 +73067,7 @@ index 934f805eefc..774a81f569b 100644
|
||||
#include "precompiled.hpp"
|
||||
#include "code/vtableStubs.hpp"
|
||||
#include "compiler/compileBroker.hpp"
|
||||
@@ -102,7 +108,11 @@ int VtableStubs::_itab_stub_size = 0;
|
||||
@@ -101,7 +107,11 @@ int VtableStubs::_itab_stub_size = 0;
|
||||
|
||||
#if defined(PRODUCT)
|
||||
// These values are good for the PRODUCT case (no tracing).
|
||||
@ -73558,7 +73537,7 @@ index f3008084254..5780d3f3ad6 100644
|
||||
|
||||
#endif // _LP64
|
||||
diff --git a/src/hotspot/share/oops/stackChunkOop.inline.hpp b/src/hotspot/share/oops/stackChunkOop.inline.hpp
|
||||
index 1d5bb7ffa81..37a41655672 100644
|
||||
index 9bde7e255d2..8ac313e6b1d 100644
|
||||
--- a/src/hotspot/share/oops/stackChunkOop.inline.hpp
|
||||
+++ b/src/hotspot/share/oops/stackChunkOop.inline.hpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73574,7 +73553,7 @@ index 1d5bb7ffa81..37a41655672 100644
|
||||
#ifndef SHARE_OOPS_STACKCHUNKOOP_INLINE_HPP
|
||||
#define SHARE_OOPS_STACKCHUNKOOP_INLINE_HPP
|
||||
|
||||
@@ -335,7 +341,7 @@ inline void stackChunkOopDesc::copy_from_stack_to_chunk(intptr_t* from, intptr_t
|
||||
@@ -336,7 +342,7 @@ inline void stackChunkOopDesc::copy_from_stack_to_chunk(intptr_t* from, intptr_t
|
||||
assert(to >= start_address(), "Chunk underflow");
|
||||
assert(to + size <= end_address(), "Chunk overflow");
|
||||
|
||||
@ -73583,7 +73562,7 @@ index 1d5bb7ffa81..37a41655672 100644
|
||||
// Suppress compilation warning-as-error on unimplemented architectures
|
||||
// that stub out arch-specific methods. Some compilers are smart enough
|
||||
// to figure out the argument is always null and then warn about it.
|
||||
@@ -354,7 +360,7 @@ inline void stackChunkOopDesc::copy_from_chunk_to_stack(intptr_t* from, intptr_t
|
||||
@@ -355,7 +361,7 @@ inline void stackChunkOopDesc::copy_from_chunk_to_stack(intptr_t* from, intptr_t
|
||||
assert(from >= start_address(), "");
|
||||
assert(from + size <= end_address(), "");
|
||||
|
||||
@ -73618,7 +73597,7 @@ index 892ccc6b8ab..6c1b9affcbe 100644
|
||||
macro(MinI)
|
||||
macro(MinL)
|
||||
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp
|
||||
index c9b82face2d..40005a687f5 100644
|
||||
index 22817951242..ccb24de6741 100644
|
||||
--- a/src/hotspot/share/opto/compile.cpp
|
||||
+++ b/src/hotspot/share/opto/compile.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73634,7 +73613,7 @@ index c9b82face2d..40005a687f5 100644
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "asm/macroAssembler.inline.hpp"
|
||||
@@ -3755,6 +3761,7 @@ void Compile::final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& f
|
||||
@@ -3753,6 +3759,7 @@ void Compile::final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& f
|
||||
n->set_req(MemBarNode::Precedent, top());
|
||||
}
|
||||
break;
|
||||
@ -73643,7 +73622,7 @@ index c9b82face2d..40005a687f5 100644
|
||||
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 76ed95c4a78..e2fdbedd804 100644
|
||||
index 89a064a03b7..6746c08498e 100644
|
||||
--- a/src/hotspot/share/opto/memnode.cpp
|
||||
+++ b/src/hotspot/share/opto/memnode.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73800,7 +73779,7 @@ index 03c0af1a572..7e468def61d 100644
|
||||
#else
|
||||
frame sender = frame();
|
||||
diff --git a/src/hotspot/share/runtime/continuationFreezeThaw.cpp b/src/hotspot/share/runtime/continuationFreezeThaw.cpp
|
||||
index 36ce7a532eb..51125dd80b1 100644
|
||||
index 0882bc933c2..d08380c4ca9 100644
|
||||
--- a/src/hotspot/share/runtime/continuationFreezeThaw.cpp
|
||||
+++ b/src/hotspot/share/runtime/continuationFreezeThaw.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73834,7 +73813,7 @@ index 36ce7a532eb..51125dd80b1 100644
|
||||
|
||||
// We don't use FKind::frame_bottom(f) == _bottom_address because on x64 there's sometimes an extra word between
|
||||
// enterSpecial and an interpreted frame
|
||||
@@ -1604,7 +1610,7 @@ static freeze_result is_pinned0(JavaThread* thread, oop cont_scope, bool safepoi
|
||||
@@ -1603,7 +1609,7 @@ static freeze_result is_pinned0(JavaThread* thread, oop cont_scope, bool safepoi
|
||||
if (!safepoint) {
|
||||
f = f.sender(&map); // this is the yield frame
|
||||
} else { // safepoint yield
|
||||
@ -73843,7 +73822,7 @@ index 36ce7a532eb..51125dd80b1 100644
|
||||
f.set_fp(f.real_fp()); // Instead of this, maybe in ContinuationWrapper::set_last_frame always use the real_fp?
|
||||
#else
|
||||
Unimplemented();
|
||||
@@ -2224,8 +2230,8 @@ void ThawBase::recurse_thaw_compiled_frame(const frame& hf, frame& caller, int n
|
||||
@@ -2234,8 +2240,8 @@ void ThawBase::recurse_thaw_compiled_frame(const frame& hf, frame& caller, int n
|
||||
|
||||
// If we're the bottom-most thawed frame, we're writing to within one word from entrySP
|
||||
// (we might have one padding word for alignment)
|
||||
@ -73890,7 +73869,7 @@ index 7b1ad7e17e1..c7a0246e375 100644
|
||||
// Threads::create_vm() for size checks.
|
||||
Atomic::release_store(&_thread_state, s);
|
||||
diff --git a/src/hotspot/share/runtime/objectMonitor.cpp b/src/hotspot/share/runtime/objectMonitor.cpp
|
||||
index c8952cf8af3..f2e7fb05d69 100644
|
||||
index ee0f754b865..e29e7164181 100644
|
||||
--- a/src/hotspot/share/runtime/objectMonitor.cpp
|
||||
+++ b/src/hotspot/share/runtime/objectMonitor.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73916,7 +73895,7 @@ index c8952cf8af3..f2e7fb05d69 100644
|
||||
assert(_succ != current, "invariant");
|
||||
assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
|
||||
assert(current->thread_state() != _thread_blocked, "invariant");
|
||||
@@ -717,6 +726,7 @@ void ObjectMonitor::EnterI(JavaThread* current) {
|
||||
@@ -707,6 +716,7 @@ void ObjectMonitor::EnterI(JavaThread* current) {
|
||||
}
|
||||
|
||||
// The Spin failed -- Enqueue and park the thread ...
|
||||
@ -73925,7 +73904,7 @@ index c8952cf8af3..f2e7fb05d69 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 a5ea07d8c64..8adb584b769 100644
|
||||
index d27d34d7a81..6cb80af29e5 100644
|
||||
--- a/src/hotspot/share/runtime/os.cpp
|
||||
+++ b/src/hotspot/share/runtime/os.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -73941,7 +73920,7 @@ index a5ea07d8c64..8adb584b769 100644
|
||||
#include "precompiled.hpp"
|
||||
#include "classfile/javaClasses.hpp"
|
||||
#include "classfile/moduleEntry.hpp"
|
||||
@@ -1259,7 +1265,8 @@ bool os::is_first_C_frame(frame* fr) {
|
||||
@@ -1265,7 +1271,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();
|
||||
@ -73952,7 +73931,7 @@ index a5ea07d8c64..8adb584b769 100644
|
||||
|
||||
// stack grows downwards; if old_fp is below current fp or if the stack
|
||||
diff --git a/src/hotspot/share/runtime/sharedRuntime.cpp b/src/hotspot/share/runtime/sharedRuntime.cpp
|
||||
index edbdad4f24b..404d9113f48 100644
|
||||
index 6439a958ccb..622bb9dd8e1 100644
|
||||
--- a/src/hotspot/share/runtime/sharedRuntime.cpp
|
||||
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -74019,7 +73998,7 @@ index fac76262f3c..f41cf843d31 100644
|
||||
static double __kernel_sin(double x, double y, int iy)
|
||||
{
|
||||
diff --git a/src/hotspot/share/runtime/synchronizer.cpp b/src/hotspot/share/runtime/synchronizer.cpp
|
||||
index 6e6f2115e1e..fdd94b21883 100644
|
||||
index 6cdb95be2e6..44c93897852 100644
|
||||
--- a/src/hotspot/share/runtime/synchronizer.cpp
|
||||
+++ b/src/hotspot/share/runtime/synchronizer.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -74035,7 +74014,7 @@ index 6e6f2115e1e..fdd94b21883 100644
|
||||
#include "precompiled.hpp"
|
||||
#include "classfile/vmSymbols.hpp"
|
||||
#include "gc/shared/collectedHeap.hpp"
|
||||
@@ -487,7 +493,7 @@ void ObjectSynchronizer::handle_sync_on_value_based_class(Handle obj, JavaThread
|
||||
@@ -486,7 +492,7 @@ void ObjectSynchronizer::handle_sync_on_value_based_class(Handle obj, JavaThread
|
||||
}
|
||||
|
||||
static bool useHeavyMonitors() {
|
||||
@ -74045,7 +74024,7 @@ index 6e6f2115e1e..fdd94b21883 100644
|
||||
#else
|
||||
return false;
|
||||
diff --git a/src/hotspot/share/runtime/vmStructs.cpp b/src/hotspot/share/runtime/vmStructs.cpp
|
||||
index 37241534b2b..f7302bea5f7 100644
|
||||
index d11af5cb5af..80f7ec0d827 100644
|
||||
--- a/src/hotspot/share/runtime/vmStructs.cpp
|
||||
+++ b/src/hotspot/share/runtime/vmStructs.cpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -74061,7 +74040,7 @@ index 37241534b2b..f7302bea5f7 100644
|
||||
#include "precompiled.hpp"
|
||||
#include "cds/filemap.hpp"
|
||||
#include "ci/ciField.hpp"
|
||||
@@ -1567,6 +1573,7 @@
|
||||
@@ -1566,6 +1572,7 @@
|
||||
declare_c2_type(StoreFenceNode, MemBarNode) \
|
||||
declare_c2_type(MemBarVolatileNode, MemBarNode) \
|
||||
declare_c2_type(MemBarCPUOrderNode, MemBarNode) \
|
||||
@ -74070,7 +74049,7 @@ index 37241534b2b..f7302bea5f7 100644
|
||||
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 bfbaaa58acc..74e56975081 100644
|
||||
index 244b18ecdd4..cdb392b5ef2 100644
|
||||
--- a/src/hotspot/share/utilities/macros.hpp
|
||||
+++ b/src/hotspot/share/utilities/macros.hpp
|
||||
@@ -22,6 +22,12 @@
|
||||
@ -78465,7 +78444,7 @@ index ebe3fe63ccf..04ea3cccdef 100644
|
||||
* @run driver compiler.c2.irTests.TestVectorizeURShiftSubword
|
||||
*/
|
||||
diff --git a/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java b/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java
|
||||
index 4c56daebfb8..92836130408 100644
|
||||
index ac3a6d9a8c6..c17598902ff 100644
|
||||
--- a/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java
|
||||
+++ b/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java
|
||||
@@ -21,12 +21,18 @@
|
||||
@ -78489,7 +78468,7 @@ index 4c56daebfb8..92836130408 100644
|
||||
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
|
||||
* @run main/othervm/timeout=600 -Xbootclasspath/a:.
|
||||
diff --git a/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnUnsupportedConfig.java b/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnUnsupportedConfig.java
|
||||
index 03016ea3dd6..62ce6c1a7a5 100644
|
||||
index fdc8f63f9e0..993cf68d011 100644
|
||||
--- a/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnUnsupportedConfig.java
|
||||
+++ b/test/hotspot/jtreg/compiler/cpuflags/TestAESIntrinsicsOnUnsupportedConfig.java
|
||||
@@ -21,6 +21,12 @@
|
||||
@ -78731,7 +78710,7 @@ index c2275f6563e..b94e05fc1ff 100644
|
||||
// We only have ChaCha20 intrinsics on x64 and aarch64
|
||||
// currently. If the platform is neither of these then
|
||||
diff --git a/test/hotspot/jtreg/compiler/intrinsics/float16/Binary16Conversion.java b/test/hotspot/jtreg/compiler/intrinsics/float16/Binary16Conversion.java
|
||||
index eeba614de4f..5a2f293e259 100644
|
||||
index 0541121c127..d9fe8c91dc4 100644
|
||||
--- a/test/hotspot/jtreg/compiler/intrinsics/float16/Binary16Conversion.java
|
||||
+++ b/test/hotspot/jtreg/compiler/intrinsics/float16/Binary16Conversion.java
|
||||
@@ -21,11 +21,17 @@
|
||||
@ -78777,7 +78756,7 @@ index 38060dfb504..151caa94346 100644
|
||||
* @requires vm.compMode != "Xcomp"
|
||||
* @library /test/lib /
|
||||
diff --git a/test/hotspot/jtreg/compiler/intrinsics/float16/TestAllFloat16ToFloat.java b/test/hotspot/jtreg/compiler/intrinsics/float16/TestAllFloat16ToFloat.java
|
||||
index 4afda120709..230aef2fb58 100644
|
||||
index 492901f0046..e95554fa944 100644
|
||||
--- a/test/hotspot/jtreg/compiler/intrinsics/float16/TestAllFloat16ToFloat.java
|
||||
+++ b/test/hotspot/jtreg/compiler/intrinsics/float16/TestAllFloat16ToFloat.java
|
||||
@@ -21,11 +21,17 @@
|
||||
@ -78800,7 +78779,7 @@ index 4afda120709..230aef2fb58 100644
|
||||
* @requires vm.compMode != "Xcomp"
|
||||
* @comment default run:
|
||||
diff --git a/test/hotspot/jtreg/compiler/intrinsics/float16/TestConstFloat16ToFloat.java b/test/hotspot/jtreg/compiler/intrinsics/float16/TestConstFloat16ToFloat.java
|
||||
index 062e6804897..42a9d239e06 100644
|
||||
index b4ba578c9f2..27e6b86abe2 100644
|
||||
--- a/test/hotspot/jtreg/compiler/intrinsics/float16/TestConstFloat16ToFloat.java
|
||||
+++ b/test/hotspot/jtreg/compiler/intrinsics/float16/TestConstFloat16ToFloat.java
|
||||
@@ -21,11 +21,17 @@
|
||||
@ -79857,7 +79836,7 @@ index 390a0dcdd3f..d7baa9bfb75 100644
|
||||
* @compile --enable-preview -source ${jdk.version} TestRangeCheckHoistingScaledIV.java
|
||||
* @run main/othervm --enable-preview compiler.rangechecks.TestRangeCheckHoistingScaledIV
|
||||
diff --git a/test/hotspot/jtreg/compiler/runtime/TestConstantsInError.java b/test/hotspot/jtreg/compiler/runtime/TestConstantsInError.java
|
||||
index df221959bb5..a15ac48e3fa 100644
|
||||
index 3daf12df879..31018941a9c 100644
|
||||
--- a/test/hotspot/jtreg/compiler/runtime/TestConstantsInError.java
|
||||
+++ b/test/hotspot/jtreg/compiler/runtime/TestConstantsInError.java
|
||||
@@ -21,6 +21,12 @@
|
||||
@ -79910,7 +79889,7 @@ index df221959bb5..a15ac48e3fa 100644
|
||||
.shouldMatch("Test_CD2.*::test \\(3 bytes\\) made not entrant")
|
||||
.shouldMatch("Test_CD3.*::test \\(3 bytes\\) made not entrant")
|
||||
diff --git a/test/hotspot/jtreg/compiler/sharedstubs/SharedStubToInterpTest.java b/test/hotspot/jtreg/compiler/sharedstubs/SharedStubToInterpTest.java
|
||||
index 682198672f7..c62956d467f 100644
|
||||
index 5dd938442cc..2ec4cab8f62 100644
|
||||
--- a/test/hotspot/jtreg/compiler/sharedstubs/SharedStubToInterpTest.java
|
||||
+++ b/test/hotspot/jtreg/compiler/sharedstubs/SharedStubToInterpTest.java
|
||||
@@ -22,6 +22,12 @@
|
||||
|
||||
@ -897,7 +897,7 @@ Name: java-21-%{origin}
|
||||
Version: %{newjavaver}.%{buildver}
|
||||
# This package needs `.rolling` as part of Release so as to not conflict on install with
|
||||
# java-X-openjdk. I.e. when latest rolling release is also an LTS release packaged as
|
||||
Release: 0
|
||||
Release: 1
|
||||
|
||||
# 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
|
||||
@ -1792,6 +1792,9 @@ cjc.mainProgram(arg)
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Oct 30 2024 Pan Xuefeng <panxuefeng@loongson.cn> -1:21.0.4.7-1
|
||||
- update LoongArch64 port to 21.0.4.7
|
||||
|
||||
* Thu Jul 18 2024 Autistic_boyya <wangzhongyi7@huawei.com> -1:21.0.4.7-rolling
|
||||
- update to jdk21.0.4-ga
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user