From da14aa463b8fcd56ba1f1a4cdb3e3f7b19f78964 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 27 Feb 2024 10:26:55 +0000 Subject: [PATCH] 8017234: Hotspot should stop using mapfiles Reviewed-by: djelinski, erikj, dholmes --- make/data/hotspot-symbols/symbols-aix | 26 -- make/data/hotspot-symbols/symbols-aix-debug | 26 -- make/data/hotspot-symbols/symbols-linux | 27 -- make/data/hotspot-symbols/symbols-macosx | 24 -- make/data/hotspot-symbols/symbols-shared | 35 --- make/data/hotspot-symbols/symbols-unix | 233 ------------------ make/data/hotspot-symbols/version-script.txt | 11 + make/hotspot/lib/CompileGtest.gmk | 23 +- make/hotspot/lib/CompileJvm.gmk | 61 ++++- make/hotspot/lib/JvmMapfile.gmk | 176 ------------- src/hotspot/cpu/aarch64/assembler_aarch64.cpp | 7 +- .../os_cpu/bsd_aarch64/copy_bsd_aarch64.S | 5 + .../bsd_aarch64/safefetch_bsd_aarch64.S | 11 +- src/hotspot/os_cpu/bsd_x86/bsd_x86_32.S | 18 +- src/hotspot/os_cpu/bsd_x86/bsd_x86_64.S | 53 ++-- .../os_cpu/bsd_x86/safefetch_bsd_x86_64.S | 13 +- .../linux_aarch64/atomic_linux_aarch64.S | 16 ++ .../os_cpu/linux_aarch64/copy_linux_aarch64.S | 3 + .../linux_aarch64/safefetch_linux_aarch64.S | 9 +- .../linux_aarch64/threadLS_linux_aarch64.S | 33 +-- src/hotspot/os_cpu/linux_arm/linux_arm_32.S | 146 +++++------ .../os_cpu/linux_arm/safefetch_linux_arm.S | 7 +- .../os_cpu/linux_ppc/safefetch_linux_ppc.S | 9 +- .../linux_riscv/safefetch_linux_riscv.S | 9 +- .../os_cpu/linux_s390/safefetch_linux_s390.S | 9 +- src/hotspot/os_cpu/linux_x86/linux_x86_32.S | 61 +++-- src/hotspot/os_cpu/linux_x86/linux_x86_64.S | 52 ++-- .../os_cpu/linux_x86/safefetch_linux_x86_32.S | 8 +- .../os_cpu/linux_x86/safefetch_linux_x86_64.S | 11 +- src/hotspot/share/jvmci/jvmciCompilerToVM.cpp | 5 + src/hotspot/share/jvmci/vmStructs_jvmci.cpp | 7 +- src/hotspot/share/oops/accessBackend.cpp | 44 ++-- src/hotspot/share/utilities/debug.cpp | 7 +- 33 files changed, 423 insertions(+), 762 deletions(-) delete mode 100644 make/data/hotspot-symbols/symbols-aix delete mode 100644 make/data/hotspot-symbols/symbols-aix-debug delete mode 100644 make/data/hotspot-symbols/symbols-linux delete mode 100644 make/data/hotspot-symbols/symbols-macosx delete mode 100644 make/data/hotspot-symbols/symbols-shared delete mode 100644 make/data/hotspot-symbols/symbols-unix create mode 100644 make/data/hotspot-symbols/version-script.txt delete mode 100644 make/hotspot/lib/JvmMapfile.gmk diff --git a/make/data/hotspot-symbols/symbols-aix b/make/data/hotspot-symbols/symbols-aix deleted file mode 100644 index 1d32104e8a1..00000000000 --- a/make/data/hotspot-symbols/symbols-aix +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright (c) 2016, 2022, 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. -# - -JVM_handle_aix_signal -numa_error -numa_warn diff --git a/make/data/hotspot-symbols/symbols-aix-debug b/make/data/hotspot-symbols/symbols-aix-debug deleted file mode 100644 index 10887ab2b61..00000000000 --- a/make/data/hotspot-symbols/symbols-aix-debug +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright (c) 2016, 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. -# - -JVM_AccessVMBooleanFlag -JVM_AccessVMIntFlag -JVM_VMBreakPoint diff --git a/make/data/hotspot-symbols/symbols-linux b/make/data/hotspot-symbols/symbols-linux deleted file mode 100644 index d1f258297d8..00000000000 --- a/make/data/hotspot-symbols/symbols-linux +++ /dev/null @@ -1,27 +0,0 @@ -# -# Copyright (c) 2016, 2022, 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. -# - -JVM_handle_linux_signal -JVM_IsUseContainerSupport -numa_error -numa_warn diff --git a/make/data/hotspot-symbols/symbols-macosx b/make/data/hotspot-symbols/symbols-macosx deleted file mode 100644 index d0243562b67..00000000000 --- a/make/data/hotspot-symbols/symbols-macosx +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright (c) 2016, 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. -# - -JVM_handle_bsd_signal diff --git a/make/data/hotspot-symbols/symbols-shared b/make/data/hotspot-symbols/symbols-shared deleted file mode 100644 index c5b13ef1ee8..00000000000 --- a/make/data/hotspot-symbols/symbols-shared +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright (c) 2016, 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. -# - -AsyncGetCallTrace -jio_fprintf -jio_printf -jio_snprintf -jio_vfprintf -jio_vsnprintf -JNI_CreateJavaVM -JNI_GetCreatedJavaVMs -JNI_GetDefaultJavaVMInitArgs -JVM_IsForeignLinkerSupported -JVM_FindClassFromBootLoader -JVM_InitAgentProperties diff --git a/make/data/hotspot-symbols/symbols-unix b/make/data/hotspot-symbols/symbols-unix deleted file mode 100644 index fbb82a11fac..00000000000 --- a/make/data/hotspot-symbols/symbols-unix +++ /dev/null @@ -1,233 +0,0 @@ -# -# Copyright (c) 2016, 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. -# - -JVM_ActiveProcessorCount -JVM_AreNestMates -JVM_ArrayCopy -JVM_AssertionStatusDirectives -JVM_BeforeHalt -JVM_CallStackWalk -JVM_Clone -JVM_ConstantPoolGetClassAt -JVM_ConstantPoolGetClassAtIfLoaded -JVM_ConstantPoolGetClassRefIndexAt -JVM_ConstantPoolGetDoubleAt -JVM_ConstantPoolGetFieldAt -JVM_ConstantPoolGetFieldAtIfLoaded -JVM_ConstantPoolGetFloatAt -JVM_ConstantPoolGetIntAt -JVM_ConstantPoolGetLongAt -JVM_ConstantPoolGetMemberRefInfoAt -JVM_ConstantPoolGetMethodAt -JVM_ConstantPoolGetMethodAtIfLoaded -JVM_ConstantPoolGetNameAndTypeRefIndexAt -JVM_ConstantPoolGetNameAndTypeRefInfoAt -JVM_ConstantPoolGetSize -JVM_ConstantPoolGetStringAt -JVM_ConstantPoolGetTagAt -JVM_ConstantPoolGetUTF8At -JVM_CurrentCarrierThread -JVM_CurrentThread -JVM_SetCurrentThread -JVM_CurrentTimeMillis -JVM_DefineClass -JVM_DefineClassWithSource -JVM_DesiredAssertionStatus -JVM_DumpAllStacks -JVM_DumpClassListToFile -JVM_DumpDynamicArchive -JVM_DumpThreads -JVM_ExpandStackFrameInfo -JVM_FillInStackTrace -JVM_FindClassFromCaller -JVM_FindClassFromClass -JVM_FindLibraryEntry -JVM_FindLoadedClass -JVM_FindPrimitiveClass -JVM_FindSignal -JVM_FreeMemory -JVM_GC -JVM_GetAllThreads -JVM_GetAndClearReferencePendingList -JVM_GetArrayElement -JVM_GetArrayLength -JVM_GetCallerClass -JVM_GetClassAccessFlags -JVM_GetClassAnnotations -JVM_GetClassConstantPool -JVM_GetClassContext -JVM_GetClassCPEntriesCount -JVM_GetClassCPTypes -JVM_GetClassDeclaredConstructors -JVM_GetClassDeclaredFields -JVM_GetClassDeclaredMethods -JVM_GetClassFieldsCount -JVM_GetClassFileVersion -JVM_GetClassInterfaces -JVM_GetClassMethodsCount -JVM_GetClassModifiers -JVM_GetClassNameUTF -JVM_GetClassSignature -JVM_GetClassSigners -JVM_GetClassTypeAnnotations -JVM_GetCPClassNameUTF -JVM_GetCPFieldClassNameUTF -JVM_GetCPFieldModifiers -JVM_GetCPFieldNameUTF -JVM_GetCPFieldSignatureUTF -JVM_GetCPMethodClassNameUTF -JVM_GetCPMethodModifiers -JVM_GetCPMethodNameUTF -JVM_GetCPMethodSignatureUTF -JVM_GetDeclaredClasses -JVM_GetDeclaringClass -JVM_GetEnclosingMethodInfo -JVM_GetExtendedNPEMessage -JVM_GetFieldIxModifiers -JVM_GetFieldTypeAnnotations -JVM_GetInheritedAccessControlContext -JVM_GetManagement -JVM_GetMethodIxArgsSize -JVM_GetMethodIxByteCode -JVM_GetMethodIxByteCodeLength -JVM_GetMethodIxExceptionIndexes -JVM_GetMethodIxExceptionsCount -JVM_GetMethodIxExceptionTableEntry -JVM_GetMethodIxExceptionTableLength -JVM_GetMethodIxLocalsCount -JVM_GetMethodIxMaxStack -JVM_GetMethodIxModifiers -JVM_GetMethodIxNameUTF -JVM_GetMethodIxSignatureUTF -JVM_GetMethodParameters -JVM_GetMethodTypeAnnotations -JVM_GetNanoTimeAdjustment -JVM_GetNestHost -JVM_GetNestMembers -JVM_GetNextThreadIdOffset -JVM_GetPermittedSubclasses -JVM_GetPrimitiveArrayElement -JVM_GetProperties -JVM_GetProtectionDomain -JVM_GetRandomSeedForDumping -JVM_GetRecordComponents -JVM_GetSimpleBinaryName -JVM_GetStackAccessControlContext -JVM_GetSystemPackage -JVM_GetSystemPackages -JVM_GetTemporaryDirectory -JVM_GetVmArguments -JVM_Halt -JVM_HasReferencePendingList -JVM_HoldsLock -JVM_GetStackTrace -JVM_IHashCode -JVM_InitClassName -JVM_InitStackTraceElement -JVM_InitStackTraceElementArray -JVM_InitializeFromArchive -JVM_InternString -JVM_Interrupt -JVM_InvokeMethod -JVM_IsArrayClass -JVM_IsCDSDumpingEnabled -JVM_IsConstructorIx -JVM_IsDumpingClassList -JVM_IsFinalizationEnabled -JVM_IsHiddenClass -JVM_IsInterface -JVM_IsPreviewEnabled -JVM_IsContinuationsSupported -JVM_IsPrimitiveClass -JVM_IsRecord -JVM_IsSameClassPackage -JVM_IsSharingEnabled -JVM_IsSupportedJNIVersion -JVM_IsVMGeneratedMethodIx -JVM_LatestUserDefinedLoader -JVM_LoadZipLibrary -JVM_LoadLibrary -JVM_LookupDefineClass -JVM_LookupLambdaProxyClassFromArchive -JVM_LogLambdaFormInvoker -JVM_MaxMemory -JVM_MaxObjectInspectionAge -JVM_MonitorNotify -JVM_MonitorNotifyAll -JVM_MonitorWait -JVM_MoreStackWalk -JVM_NanoTime -JVM_NativePath -JVM_NewArray -JVM_NewInstanceFromConstructor -JVM_NewMultiArray -JVM_PhantomReferenceRefersTo -JVM_PrintWarningAtDynamicAgentLoad -JVM_RaiseSignal -JVM_RawMonitorCreate -JVM_RawMonitorDestroy -JVM_RawMonitorEnter -JVM_RawMonitorExit -JVM_ReferenceClear -JVM_ReferenceRefersTo -JVM_RegisterContinuationMethods -JVM_RegisterLambdaProxyClassForArchiving -JVM_RegisterSignal -JVM_ReleaseUTF -JVM_ReportFinalizationComplete -JVM_SetArrayElement -JVM_SetClassSigners -JVM_SetNativeThreadName -JVM_SetPrimitiveArrayElement -JVM_SetStackWalkContinuation -JVM_SetThreadPriority -JVM_SleepNanos -JVM_StartThread -JVM_TotalMemory -JVM_UnloadLibrary -JVM_WaitForReferencePendingList -JVM_Yield - -# Module related API's -JVM_AddModuleExports -JVM_AddModuleExportsToAll -JVM_AddModuleExportsToAllUnnamed -JVM_AddReadsModule -JVM_DefineArchivedModules -JVM_DefineModule -JVM_SetBootLoaderUnnamedModule - -# Virtual thread notifications for JVMTI -JVM_VirtualThreadStart -JVM_VirtualThreadEnd -JVM_VirtualThreadMount -JVM_VirtualThreadUnmount -JVM_VirtualThreadHideFrames -JVM_VirtualThreadDisableSuspend - -# Scoped values -JVM_EnsureMaterializedForStackWalk_func -JVM_FindScopedValueBindings -JVM_ScopedValueCache -JVM_SetScopedValueCache -# diff --git a/make/data/hotspot-symbols/version-script.txt b/make/data/hotspot-symbols/version-script.txt new file mode 100644 index 00000000000..29578bf7cb2 --- /dev/null +++ b/make/data/hotspot-symbols/version-script.txt @@ -0,0 +1,11 @@ +SUNWprivate_1.1 { + global: + *; + + local: + __bss_start; + _edata; + _end; + _fini; + _init; +}; diff --git a/make/hotspot/lib/CompileGtest.gmk b/make/hotspot/lib/CompileGtest.gmk index 0d17f7a3be5..0af046b8555 100644 --- a/make/hotspot/lib/CompileGtest.gmk +++ b/make/hotspot/lib/CompileGtest.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2016, 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 @@ -75,20 +75,6 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBGTEST, \ TARGETS += $(BUILD_GTEST_LIBGTEST) ################################################################################ - -ifeq ($(call isTargetOs, windows), true) - GTEST_JVM_MAPFILE := $(JVM_MAPFILE) -else - GTEST_JVM_MAPFILE := $(JVM_OUTPUTDIR)/gtest/mapfile - - $(JVM_OUTPUTDIR)/gtest/symbols: $(JVM_OUTPUTDIR)/symbols - $(call MakeDir, $(@D)) - ( $(CAT) $< ; echo "runUnitTests" ) > $@ - - $(GTEST_JVM_MAPFILE): $(JVM_OUTPUTDIR)/gtest/symbols - $(call create-mapfile) -endif - # Additional disabled warnings are due to code in the test source. $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \ @@ -123,8 +109,6 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \ LIBS_unix := -lgtest, \ LIBS_windows := $(JVM_OUTPUTDIR)/libgtest/gtest.lib, \ OPTIMIZATION := $(JVM_OPTIMIZATION), \ - MAPFILE := $(GTEST_JVM_MAPFILE), \ - USE_MAPFILE_FOR_SYMBOLS := true, \ COPY_DEBUG_SYMBOLS := $(GTEST_COPY_DEBUG_SYMBOLS), \ ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \ STRIP_SYMBOLS := false, \ @@ -134,6 +118,11 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \ $(BUILD_GTEST_LIBJVM) : $(BUILD_GTEST_LIBGTEST) +ifeq ($(call isTargetOs, windows), true) + $(BUILD_GTEST_LIBJVM_TARGET): $(WIN_EXPORT_FILE) +endif + + TARGETS += $(BUILD_GTEST_LIBJVM) ################################################################################ diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk index 118aa65bf42..4e21543c2c1 100644 --- a/make/hotspot/lib/CompileJvm.gmk +++ b/make/hotspot/lib/CompileJvm.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -33,7 +33,6 @@ include lib/JvmFlags.gmk # Setup compilation of the main Hotspot native library (libjvm). JVM_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm -JVM_MAPFILE := $(JVM_OUTPUTDIR)/mapfile ################################################################################ # Platform independent setup @@ -146,6 +145,18 @@ $(call FillFindCache, $(JVM_SRC_DIRS)) # operator new. LIBJVM_STATIC_EXCLUDE_OBJS := operator_new.o +ifeq ($(call isTargetOs, windows), true) + WIN_EXPORT_FILE := $(JVM_OUTPUTDIR)/win-exports.def + + JVM_LDFLAGS += -def:$(WIN_EXPORT_FILE) +endif + +ifeq ($(call isTargetOs, linux), true) + HOTSPOT_VERSION_SCRIPT := $(TOPDIR)/make/data/hotspot-symbols/version-script.txt + + JVM_LDFLAGS += -Wl,--exclude-libs,ALL -Wl,-version-script=$(HOTSPOT_VERSION_SCRIPT) +endif + ################################################################################ # Now set up the actual compilation of the main hotspot native library @@ -195,8 +206,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \ LIBS := $(JVM_LIBS), \ OPTIMIZATION := $(JVM_OPTIMIZATION), \ OBJECT_DIR := $(JVM_OUTPUTDIR)/objs, \ - MAPFILE := $(JVM_MAPFILE), \ - USE_MAPFILE_FOR_SYMBOLS := true, \ STRIPFLAGS := $(JVM_STRIPFLAGS), \ EMBED_MANIFEST := true, \ RC_FILEDESC := $(HOTSPOT_VM_DISTRO) $(OPENJDK_TARGET_CPU_BITS)-Bit $(JVM_VARIANT) VM, \ @@ -205,11 +214,48 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \ STATIC_LIB_EXCLUDE_OBJS := $(LIBJVM_STATIC_EXCLUDE_OBJS), \ )) +ifeq ($(call isTargetOs, windows), true) + # The following lines create a list of vftable symbols to be filtered out of + # the symbol file. Removing this line causes the linker to complain about too + # many (> 64K) symbols, so the _guess_ is that this line is here to keep down + # the number of exported symbols below that limit. + # + # Some usages of C++ lambdas require the vftable symbol of classes that use + # the lambda type as a template parameter. The usage of those classes won't + # link if their vftable symbols are removed. That's why there's an exception + # for vftable symbols containing the string 'lambda'. + # + # A very simple example of a lambda usage that fails if the lambda vftable + # symbols are missing in the symbol file: + # + # #include + # std::function f = [](){} + FILTER_SYMBOLS_AWK_SCRIPT := \ + '{ \ + if ($$7 ~ /\?\?_7.*@@6B@/ && $$7 !~ /type_info/ && $$7 !~ /lambda/) print $$7; \ + }' + + # A more correct solution would be to send BUILD_LIBJVM_ALL_OBJS instead of + # cd && *.obj, but this will result in very long command lines, which could be + # problematic. + $(WIN_EXPORT_FILE): $(BUILD_LIBJVM_ALL_OBJS) + $(call LogInfo, Generating list of symbols to export from object files) + $(call MakeDir, $(@D)) + $(CD) $(JVM_OUTPUTDIR)/objs && \ + $(DUMPBIN) -symbols *$(OBJ_SUFFIX) | $(AWK) $(FILTER_SYMBOLS_AWK_SCRIPT) | $(SORT) -u > $@.syms + $(ECHO) "EXPORTS" > $@.tmp + $(AWK) '{ if ($$0 ~ ".") { print " " $$0 } }' < $@.syms >> $@.tmp + $(RM) $@ + $(MV) $@.tmp $@ + + $(BUILD_LIBJVM_TARGET): $(WIN_EXPORT_FILE) +endif + # Always recompile abstract_vm_version.cpp if libjvm needs to be relinked. This ensures # that the internal vm version is updated as it relies on __DATE__ and __TIME__ # macros. ABSTRACT_VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/abstract_vm_version$(OBJ_SUFFIX) -$(ABSTRACT_VM_VERSION_OBJ): $(filter-out $(ABSTRACT_VM_VERSION_OBJ) $(JVM_MAPFILE), \ +$(ABSTRACT_VM_VERSION_OBJ): $(filter-out $(ABSTRACT_VM_VERSION_OBJ), \ $(BUILD_LIBJVM_TARGET_DEPS)) ifneq ($(GENERATE_COMPILE_COMMANDS_ONLY), true) @@ -237,11 +283,6 @@ endif # 1540-1090 : (I) The destructor of "..." might not be called. # 1540-1639 : (I) The behavior of long type bit fields has changed ... -# Include mapfile generation. It relies on BUILD_LIBJVM_ALL_OBJS which is only -# defined after the above call to BUILD_LIBJVM. Mapfile will be generated -# after all object files are built, but before the jvm library is linked. -include lib/JvmMapfile.gmk - TARGETS += $(BUILD_LIBJVM) ################################################################################ diff --git a/make/hotspot/lib/JvmMapfile.gmk b/make/hotspot/lib/JvmMapfile.gmk deleted file mode 100644 index b2199e7d17c..00000000000 --- a/make/hotspot/lib/JvmMapfile.gmk +++ /dev/null @@ -1,176 +0,0 @@ -# -# Copyright (c) 2013, 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. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# 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. -# - -$(eval $(call IncludeCustomExtension, hotspot/lib/JvmMapfile.gmk)) - -################################################################################ -# Combine a list of static symbols - -ifeq ($(call And, $(call isTargetOs, windows) $(call isTargetCpu, x86_64)), false) - # On Windows x86_64, we should not have any symbols at all, since that - # results in duplicate warnings from the linker (JDK-8043491). - SYMBOLS_SRC += $(TOPDIR)/make/data/hotspot-symbols/symbols-shared -endif - -ifeq ($(call isTargetOsType, unix), true) - SYMBOLS_SRC += $(TOPDIR)/make/data/hotspot-symbols/symbols-unix -endif - -ifneq ($(wildcard $(TOPDIR)/make/data/hotspot-symbols/symbols-$(OPENJDK_TARGET_OS)), ) - SYMBOLS_SRC += $(TOPDIR)/make/data/hotspot-symbols/symbols-$(OPENJDK_TARGET_OS) -endif - -ifneq ($(findstring debug, $(DEBUG_LEVEL)), ) - ifneq ($(wildcard $(TOPDIR)/make/data/hotspot-symbols/symbols-$(OPENJDK_TARGET_OS)-debug), ) - SYMBOLS_SRC += $(TOPDIR)/make/data/hotspot-symbols/symbols-$(OPENJDK_TARGET_OS)-debug - endif -endif - -################################################################################ -# Create a dynamic list of symbols from the built object files. This is highly -# platform dependent. - -ifeq ($(call isTargetOs, linux), true) - DUMP_SYMBOLS_CMD := $(NM) $(NMFLAGS) --defined-only *$(OBJ_SUFFIX) - ifneq ($(FILTER_SYMBOLS_PATTERN), ) - FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)| - endif - FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^_ZTV|^gHotSpotVM|^UseSharedSpaces$$ - FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|^_ZN9Arguments17SharedArchivePathE$$ - FILTER_SYMBOLS_AWK_SCRIPT := \ - '{ \ - if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \ - }' - -else ifeq ($(call isTargetOs, macosx), true) - # nm on macosx prints out "warning: nm: no name list" to stderr for - # files without symbols. Hide this, even at the expense of hiding real errors. - DUMP_SYMBOLS_CMD := $(NM) $(NMFLAGS) -Uj *$(OBJ_SUFFIX) 2> /dev/null - ifneq ($(FILTER_SYMBOLS_PATTERN), ) - FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)| - endif - FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^_ZTV|^gHotSpotVM - FILTER_SYMBOLS_AWK_SCRIPT := \ - '{ \ - if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \ - }' - -# NOTE: The script is from the old build. It is broken and finds no symbols. -# The script below might be what was intended, but it fails to link with tons -# of 'cannot export hidden symbol vtable for X'. -# '{ if ($$1 ~ /^__ZTV/ || $$1 ~ /^_gHotSpotVM/) print substr($$1, 2) }' -else ifeq ($(call isTargetOs, aix), true) - # NOTE: The old build had the solution below. This should to be fixed in - # configure instead. - - # On AIX we have to prevent that we pick up the 'nm' version from the GNU binutils - # which may be installed under /opt/freeware/bin. So better use an absolute path here! - # NM=/usr/bin/nm - - DUMP_SYMBOLS_CMD := $(NM) $(NMFLAGS) -B -C *$(OBJ_SUFFIX) - FILTER_SYMBOLS_AWK_SCRIPT := \ - '{ \ - if (($$2="d" || $$2="D") && ($$3 ~ /^__vft/ || $$3 ~ /^gHotSpotVM/)) print $$3; \ - if ($$3 ~ /^UseSharedSpaces$$/) print $$3; \ - if ($$3 ~ /^SharedArchivePath__9Arguments$$/) print $$3; \ - }' - -else ifeq ($(call isTargetOs, windows), true) - DUMP_SYMBOLS_CMD := $(DUMPBIN) -symbols *$(OBJ_SUFFIX) - - # The following lines create a list of vftable symbols to be filtered out of - # the mapfile. Removing this line causes the linker to complain about too many - # (> 64K) symbols, so the _guess_ is that this line is here to keep down the - # number of exported symbols below that limit. - # - # Some usages of C++ lambdas require the vftable symbol of classes that use - # the lambda type as a template parameter. The usage of those classes won't - # link if their vftable symbols are removed. That's why there's an exception - # for vftable symbols containing the string 'lambda'. - # - # A very simple example of a lambda usage that fails if the lambda vftable - # symbols are missing in the mapfile: - # - # #include - # std::function f = [](){} - - FILTER_SYMBOLS_AWK_SCRIPT := \ - '{ \ - if ($$7 ~ /\?\?_7.*@@6B@/ && $$7 !~ /type_info/ && $$7 !~ /lambda/) print $$7; \ - }' - -else - $(error Unknown target OS $(OPENJDK_TARGET_OS) in JvmMapfile.gmk) -endif - -# A more correct solution would be to send BUILD_LIBJVM_ALL_OBJS instead of -# cd && *.o, but this will result in very long command lines, which is -# problematic on some platforms. -$(JVM_OUTPUTDIR)/symbols-objects: $(BUILD_LIBJVM_ALL_OBJS) - $(call LogInfo, Generating symbol list from object files) - $(CD) $(JVM_OUTPUTDIR)/objs && \ - $(DUMP_SYMBOLS_CMD) | $(AWK) $(FILTER_SYMBOLS_AWK_SCRIPT) | $(SORT) -u > $@ - -SYMBOLS_SRC += $(JVM_OUTPUTDIR)/symbols-objects - -################################################################################ -# Now concatenate all symbol lists into a single file and remove comments. - -$(JVM_OUTPUTDIR)/symbols: $(SYMBOLS_SRC) - $(SED) -e '/^#/d' $^ > $@ - -################################################################################ -# Finally convert the symbol list into a platform-specific mapfile - -ifeq ($(call isTargetOs, macosx), true) - # On macosx, we need to add a leading underscore - define create-mapfile-work - $(AWK) '{ if ($$0 ~ ".") { print " _" $$0 } }' < $^ > $@.tmp - endef -else ifeq ($(call isTargetOs, windows), true) - # On windows, add an 'EXPORTS' header - define create-mapfile-work - $(ECHO) "EXPORTS" > $@.tmp - $(AWK) '{ if ($$0 ~ ".") { print " " $$0 } }' < $^ >> $@.tmp - endef -else - # Assume standard linker script - define create-mapfile-work - $(PRINTF) "SUNWprivate_1.1 { \n global: \n" > $@.tmp - $(AWK) '{ if ($$0 ~ ".") { print " " $$0 ";" } }' < $^ >> $@.tmp - $(PRINTF) " local: \n *; \n }; \n" >> $@.tmp - endef -endif - -define create-mapfile - $(call LogInfo, Creating mapfile) - $(call MakeDir, $(@D)) - $(call create-mapfile-work) - $(RM) $@ - $(MV) $@.tmp $@ -endef - -$(JVM_MAPFILE): $(JVM_OUTPUTDIR)/symbols - $(call create-mapfile) diff --git a/src/hotspot/cpu/aarch64/assembler_aarch64.cpp b/src/hotspot/cpu/aarch64/assembler_aarch64.cpp index c7b867a4207..69b791a089c 100644 --- a/src/hotspot/cpu/aarch64/assembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/assembler_aarch64.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, 2020 Red Hat Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -31,6 +31,11 @@ #include "memory/resourceArea.hpp" #include "metaprogramming/primitiveConversions.hpp" +#if defined(TARGET_COMPILER_gcc) +#undef JNIEXPORT +#define JNIEXPORT +#endif + #ifndef PRODUCT const uintptr_t Assembler::asm_bp = 0x0000ffffac221240; #endif diff --git a/src/hotspot/os_cpu/bsd_aarch64/copy_bsd_aarch64.S b/src/hotspot/os_cpu/bsd_aarch64/copy_bsd_aarch64.S index 7b286820a9a..187cd20ddbd 100644 --- a/src/hotspot/os_cpu/bsd_aarch64/copy_bsd_aarch64.S +++ b/src/hotspot/os_cpu/bsd_aarch64/copy_bsd_aarch64.S @@ -28,6 +28,11 @@ .global CFUNC(_Copy_conjoint_words) .global CFUNC(_Copy_disjoint_words) +#ifdef __APPLE__ + .private_extern CFUNC(_Copy_conjoint_words) + .private_extern CFUNC(_Copy_disjoint_words) +#endif + s .req x0 d .req x1 count .req x2 diff --git a/src/hotspot/os_cpu/bsd_aarch64/safefetch_bsd_aarch64.S b/src/hotspot/os_cpu/bsd_aarch64/safefetch_bsd_aarch64.S index 34d7b8e34a7..b9b6df9b23a 100644 --- a/src/hotspot/os_cpu/bsd_aarch64/safefetch_bsd_aarch64.S +++ b/src/hotspot/os_cpu/bsd_aarch64/safefetch_bsd_aarch64.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -39,6 +39,15 @@ .global SYMBOL(_SafeFetch32_fault) .global SYMBOL(_SafeFetch32_continuation) +#ifdef __APPLE__ + .private_extern SYMBOL(SafeFetchN_impl) + .private_extern SYMBOL(_SafeFetchN_fault) + .private_extern SYMBOL(_SafeFetchN_continuation) + .private_extern SYMBOL(SafeFetch32_impl) + .private_extern SYMBOL(_SafeFetch32_fault) + .private_extern SYMBOL(_SafeFetch32_continuation) +#endif + # Support for int SafeFetch32(int* address, int defaultval); # # x0 : address diff --git a/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.S b/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.S index 02231040e15..5cad379df3f 100644 --- a/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.S +++ b/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.S @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 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 @@ -32,6 +32,7 @@ #endif .globl SYMBOL(fixcw) + .globl SYMBOL(SpinPause) # NOTE WELL! The _Copy functions are called directly # from server-compiler-generated code via CallLeafNoFP, @@ -50,6 +51,20 @@ .globl SYMBOL(_Atomic_cmpxchg_long) .globl SYMBOL(_Atomic_move_long) +#ifdef __APPLE__ + .private_extern SYMBOL(fixcw) + .private_extern SYMBOL(SpinPause) + .private_extern SYMBOL(_Copy_arrayof_conjoint_bytes) + .private_extern SYMBOL(_Copy_conjoint_jshorts_atomic) + .private_extern SYMBOL(_Copy_arrayof_conjoint_jshorts) + .private_extern SYMBOL(_Copy_conjoint_jints_atomic) + .private_extern SYMBOL(_Copy_arrayof_conjoint_jints) + .private_extern SYMBOL(_Copy_conjoint_jlongs_atomic) + .private_extern SYMBOL(_mmx_Copy_arrayof_conjoint_jshorts) + .private_extern SYMBOL(_Atomic_cmpxchg_long) + .private_extern SYMBOL(_Atomic_move_long) +#endif + .text # Support for void os::Solaris::init_thread_fpu_state() in os_solaris_i486.cpp @@ -62,7 +77,6 @@ SYMBOL(fixcw): popl %eax ret - .globl SYMBOL(SpinPause) ELF_TYPE(SpinPause,@function) .p2align 4,,15 SYMBOL(SpinPause): diff --git a/src/hotspot/os_cpu/bsd_x86/bsd_x86_64.S b/src/hotspot/os_cpu/bsd_x86/bsd_x86_64.S index 95cea3bf2a3..5e2addc4e6f 100644 --- a/src/hotspot/os_cpu/bsd_x86/bsd_x86_64.S +++ b/src/hotspot/os_cpu/bsd_x86/bsd_x86_64.S @@ -1,5 +1,5 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +# +# Copyright (c) 2004, 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 @@ -31,22 +31,33 @@ #endif # NOTE WELL! The _Copy functions are called directly - # from server-compiler-generated code via CallLeafNoFP, - # which means that they *must* either not use floating - # point or use it in the same manner as does the server - # compiler. - + # from server-compiler-generated code via CallLeafNoFP, + # which means that they *must* either not use floating + # point or use it in the same manner as does the server + # compiler. + + .globl SYMBOL(SpinPause) .globl SYMBOL(_Copy_arrayof_conjoint_bytes) - .globl SYMBOL(_Copy_arrayof_conjoint_jshorts) + .globl SYMBOL(_Copy_arrayof_conjoint_jshorts) .globl SYMBOL(_Copy_conjoint_jshorts_atomic) .globl SYMBOL(_Copy_arrayof_conjoint_jints) .globl SYMBOL(_Copy_conjoint_jints_atomic) .globl SYMBOL(_Copy_arrayof_conjoint_jlongs) .globl SYMBOL(_Copy_conjoint_jlongs_atomic) - .text +#ifdef __APPLE__ + .private_extern SYMBOL(SpinPause) + .private_extern SYMBOL(_Copy_arrayof_conjoint_bytes) + .private_extern SYMBOL(_Copy_arrayof_conjoint_jshorts) + .private_extern SYMBOL(_Copy_conjoint_jshorts_atomic) + .private_extern SYMBOL(_Copy_arrayof_conjoint_jints) + .private_extern SYMBOL(_Copy_conjoint_jints_atomic) + .private_extern SYMBOL(_Copy_arrayof_conjoint_jlongs) + .private_extern SYMBOL(_Copy_conjoint_jlongs_atomic) +#endif + + .text - .globl SYMBOL(SpinPause) .p2align 4,,15 ELF_TYPE(SpinPause,@function) SYMBOL(SpinPause): @@ -63,7 +74,7 @@ SYMBOL(SpinPause): # rdx - count, treated as ssize_t # .p2align 4,,15 - ELF_TYPE(_Copy_arrayof_conjoint_bytes,@function) + ELF_TYPE(_Copy_arrayof_conjoint_bytes,@function) SYMBOL(_Copy_arrayof_conjoint_bytes): movq %rdx,%r8 # byte count shrq $3,%rdx # qword count @@ -71,7 +82,7 @@ SYMBOL(_Copy_arrayof_conjoint_bytes): leaq -1(%rdi,%r8,1),%rax # from + bcount*1 - 1 jbe acb_CopyRight cmpq %rax,%rsi - jbe acb_CopyLeft + jbe acb_CopyLeft acb_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -165,8 +176,8 @@ acb_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - ELF_TYPE(_Copy_arrayof_conjoint_jshorts,@function) - ELF_TYPE(_Copy_conjoint_jshorts_atomic,@function) + ELF_TYPE(_Copy_arrayof_conjoint_jshorts,@function) + ELF_TYPE(_Copy_conjoint_jshorts_atomic,@function) SYMBOL(_Copy_arrayof_conjoint_jshorts): SYMBOL(_Copy_conjoint_jshorts_atomic): movq %rdx,%r8 # word count @@ -175,7 +186,7 @@ SYMBOL(_Copy_conjoint_jshorts_atomic): leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2 jbe acs_CopyRight cmpq %rax,%rsi - jbe acs_CopyLeft + jbe acs_CopyLeft acs_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -255,8 +266,8 @@ acs_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - ELF_TYPE(_Copy_arrayof_conjoint_jints,@function) - ELF_TYPE(_Copy_conjoint_jints_atomic,@function) + ELF_TYPE(_Copy_arrayof_conjoint_jints,@function) + ELF_TYPE(_Copy_conjoint_jints_atomic,@function) SYMBOL(_Copy_arrayof_conjoint_jints): SYMBOL(_Copy_conjoint_jints_atomic): movq %rdx,%r8 # dword count @@ -265,7 +276,7 @@ SYMBOL(_Copy_conjoint_jints_atomic): leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4 jbe aci_CopyRight cmpq %rax,%rsi - jbe aci_CopyLeft + jbe aci_CopyLeft aci_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -334,15 +345,15 @@ aci_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - ELF_TYPE(_Copy_arrayof_conjoint_jlongs,@function) - ELF_TYPE(_Copy_conjoint_jlongs_atomic,@function) + ELF_TYPE(_Copy_arrayof_conjoint_jlongs,@function) + ELF_TYPE(_Copy_conjoint_jlongs_atomic,@function) SYMBOL(_Copy_arrayof_conjoint_jlongs): SYMBOL(_Copy_conjoint_jlongs_atomic): cmpq %rdi,%rsi leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8 jbe acl_CopyRight cmpq %rax,%rsi - jbe acl_CopyLeft + jbe acl_CopyLeft acl_CopyRight: leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8 negq %rdx diff --git a/src/hotspot/os_cpu/bsd_x86/safefetch_bsd_x86_64.S b/src/hotspot/os_cpu/bsd_x86/safefetch_bsd_x86_64.S index 2a75f3dac94..1697f6f03b5 100644 --- a/src/hotspot/os_cpu/bsd_x86/safefetch_bsd_x86_64.S +++ b/src/hotspot/os_cpu/bsd_x86/safefetch_bsd_x86_64.S @@ -1,6 +1,6 @@ # # Copyright (c) 2022 SAP SE. All rights reserved. -# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2022, 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 @@ -38,13 +38,22 @@ .globl SYMBOL(_SafeFetch32_continuation) .globl SYMBOL(_SafeFetchN_continuation) +#ifdef __APPLE__ + .private_extern SYMBOL(SafeFetch32_impl) + .private_extern SYMBOL(SafeFetchN_impl) + .private_extern SYMBOL(_SafeFetch32_fault) + .private_extern SYMBOL(_SafeFetchN_fault) + .private_extern SYMBOL(_SafeFetch32_continuation) + .private_extern SYMBOL(_SafeFetchN_continuation) +#endif + .text # Support for int SafeFetch32(int* address, int defaultval); # # %rdi : address # %esi : defaultval - ELF_TYPE(SafeFetch32_impl,@function) + ELF_TYPE(SafeFetch32_impl,@function) SYMBOL(SafeFetch32_impl:) SYMBOL(_SafeFetch32_fault:) movl (%rdi), %eax diff --git a/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S b/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S index 4621e44ca3c..e67206a9d49 100644 --- a/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S +++ b/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S @@ -24,6 +24,7 @@ .text .globl aarch64_atomic_fetch_add_8_default_impl + .hidden aarch64_atomic_fetch_add_8_default_impl .align 5 aarch64_atomic_fetch_add_8_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -40,6 +41,7 @@ aarch64_atomic_fetch_add_8_default_impl: ret .globl aarch64_atomic_fetch_add_4_default_impl + .hidden aarch64_atomic_fetch_add_4_default_impl .align 5 aarch64_atomic_fetch_add_4_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -56,6 +58,7 @@ aarch64_atomic_fetch_add_4_default_impl: ret .global aarch64_atomic_fetch_add_8_relaxed_default_impl + .hidden aarch64_atomic_fetch_add_8_relaxed_default_impl .align 5 aarch64_atomic_fetch_add_8_relaxed_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -71,6 +74,7 @@ aarch64_atomic_fetch_add_8_relaxed_default_impl: ret .global aarch64_atomic_fetch_add_4_relaxed_default_impl + .hidden aarch64_atomic_fetch_add_4_relaxed_default_impl .align 5 aarch64_atomic_fetch_add_4_relaxed_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -86,6 +90,7 @@ aarch64_atomic_fetch_add_4_relaxed_default_impl: ret .globl aarch64_atomic_xchg_4_default_impl + .hidden aarch64_atomic_xchg_4_default_impl .align 5 aarch64_atomic_xchg_4_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -101,6 +106,7 @@ aarch64_atomic_xchg_4_default_impl: ret .globl aarch64_atomic_xchg_8_default_impl + .hidden aarch64_atomic_xchg_8_default_impl .align 5 aarch64_atomic_xchg_8_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -116,6 +122,7 @@ aarch64_atomic_xchg_8_default_impl: ret .globl aarch64_atomic_cmpxchg_1_default_impl + .hidden aarch64_atomic_cmpxchg_1_default_impl .align 5 aarch64_atomic_cmpxchg_1_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -136,6 +143,7 @@ aarch64_atomic_cmpxchg_1_default_impl: ret .globl aarch64_atomic_cmpxchg_4_default_impl + .hidden aarch64_atomic_cmpxchg_4_default_impl .align 5 aarch64_atomic_cmpxchg_4_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -155,6 +163,7 @@ aarch64_atomic_cmpxchg_4_default_impl: ret .globl aarch64_atomic_cmpxchg_8_default_impl + .hidden aarch64_atomic_cmpxchg_8_default_impl .align 5 aarch64_atomic_cmpxchg_8_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -174,6 +183,7 @@ aarch64_atomic_cmpxchg_8_default_impl: ret .globl aarch64_atomic_cmpxchg_4_release_default_impl + .hidden aarch64_atomic_cmpxchg_4_release_default_impl .align 5 aarch64_atomic_cmpxchg_4_release_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -191,6 +201,7 @@ aarch64_atomic_cmpxchg_4_release_default_impl: ret .globl aarch64_atomic_cmpxchg_8_release_default_impl + .hidden aarch64_atomic_cmpxchg_8_release_default_impl .align 5 aarch64_atomic_cmpxchg_8_release_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -208,6 +219,7 @@ aarch64_atomic_cmpxchg_8_release_default_impl: ret .globl aarch64_atomic_cmpxchg_4_seq_cst_default_impl + .hidden aarch64_atomic_cmpxchg_4_seq_cst_default_impl .align 5 aarch64_atomic_cmpxchg_4_seq_cst_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -225,6 +237,7 @@ aarch64_atomic_cmpxchg_4_seq_cst_default_impl: ret .globl aarch64_atomic_cmpxchg_8_seq_cst_default_impl + .hidden aarch64_atomic_cmpxchg_8_seq_cst_default_impl .align 5 aarch64_atomic_cmpxchg_8_seq_cst_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -242,6 +255,7 @@ aarch64_atomic_cmpxchg_8_seq_cst_default_impl: ret .globl aarch64_atomic_cmpxchg_1_relaxed_default_impl +.hidden aarch64_atomic_cmpxchg_1_relaxed_default_impl .align 5 aarch64_atomic_cmpxchg_1_relaxed_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -260,6 +274,7 @@ aarch64_atomic_cmpxchg_1_relaxed_default_impl: ret .globl aarch64_atomic_cmpxchg_4_relaxed_default_impl + .hidden aarch64_atomic_cmpxchg_4_relaxed_default_impl .align 5 aarch64_atomic_cmpxchg_4_relaxed_default_impl: #ifdef __ARM_FEATURE_ATOMICS @@ -277,6 +292,7 @@ aarch64_atomic_cmpxchg_4_relaxed_default_impl: ret .globl aarch64_atomic_cmpxchg_8_relaxed_default_impl + .hidden aarch64_atomic_cmpxchg_8_relaxed_default_impl .align 5 aarch64_atomic_cmpxchg_8_relaxed_default_impl: #ifdef __ARM_FEATURE_ATOMICS diff --git a/src/hotspot/os_cpu/linux_aarch64/copy_linux_aarch64.S b/src/hotspot/os_cpu/linux_aarch64/copy_linux_aarch64.S index 4b8ed597c59..ade867ace01 100644 --- a/src/hotspot/os_cpu/linux_aarch64/copy_linux_aarch64.S +++ b/src/hotspot/os_cpu/linux_aarch64/copy_linux_aarch64.S @@ -24,6 +24,9 @@ .global _Copy_conjoint_words .global _Copy_disjoint_words + .hidden _Copy_conjoint_words + .hidden _Copy_disjoint_words + s .req x0 d .req x1 count .req x2 diff --git a/src/hotspot/os_cpu/linux_aarch64/safefetch_linux_aarch64.S b/src/hotspot/os_cpu/linux_aarch64/safefetch_linux_aarch64.S index fcb7e62e6d5..cfbd8f45f28 100644 --- a/src/hotspot/os_cpu/linux_aarch64/safefetch_linux_aarch64.S +++ b/src/hotspot/os_cpu/linux_aarch64/safefetch_linux_aarch64.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -30,6 +30,13 @@ .globl _SafeFetch32_fault .globl _SafeFetch32_continuation + .hidden SafeFetchN_impl + .hidden _SafeFetchN_fault + .hidden _SafeFetchN_continuation + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + # Support for int SafeFetch32(int* address, int defaultval); # # x0 : address diff --git a/src/hotspot/os_cpu/linux_aarch64/threadLS_linux_aarch64.S b/src/hotspot/os_cpu/linux_aarch64/threadLS_linux_aarch64.S index ac60d6aa941..f9f5aab2a6b 100644 --- a/src/hotspot/os_cpu/linux_aarch64/threadLS_linux_aarch64.S +++ b/src/hotspot/os_cpu/linux_aarch64/threadLS_linux_aarch64.S @@ -25,22 +25,23 @@ // Clobber x1, flags. // All other registers are preserved, - .global _ZN10JavaThread25aarch64_get_thread_helperEv - .type _ZN10JavaThread25aarch64_get_thread_helperEv, %function + .global _ZN10JavaThread25aarch64_get_thread_helperEv + .hidden _ZN10JavaThread25aarch64_get_thread_helperEv + .type _ZN10JavaThread25aarch64_get_thread_helperEv, %function _ZN10JavaThread25aarch64_get_thread_helperEv: - hint #0x19 // paciasp - stp x29, x30, [sp, -16]! - adrp x0, :tlsdesc:_ZN6Thread12_thr_currentE - ldr x1, [x0, #:tlsdesc_lo12:_ZN6Thread12_thr_currentE] - add x0, x0, :tlsdesc_lo12:_ZN6Thread12_thr_currentE - .tlsdesccall _ZN6Thread12_thr_currentE - blr x1 - mrs x1, tpidr_el0 - add x0, x1, x0 - ldr x0, [x0] - ldp x29, x30, [sp], 16 - hint #0x1d // autiasp - ret + hint #0x19 // paciasp + stp x29, x30, [sp, -16]! + adrp x0, :tlsdesc:_ZN6Thread12_thr_currentE + ldr x1, [x0, #:tlsdesc_lo12:_ZN6Thread12_thr_currentE] + add x0, x0, :tlsdesc_lo12:_ZN6Thread12_thr_currentE + .tlsdesccall _ZN6Thread12_thr_currentE + blr x1 + mrs x1, tpidr_el0 + add x0, x1, x0 + ldr x0, [x0] + ldp x29, x30, [sp], 16 + hint #0x1d // autiasp + ret - .size _ZN10JavaThread25aarch64_get_thread_helperEv, .-_ZN10JavaThread25aarch64_get_thread_helperEv + .size _ZN10JavaThread25aarch64_get_thread_helperEv, .-_ZN10JavaThread25aarch64_get_thread_helperEv diff --git a/src/hotspot/os_cpu/linux_arm/linux_arm_32.S b/src/hotspot/os_cpu/linux_arm/linux_arm_32.S index eb560d8f0c7..ad88c58ce78 100644 --- a/src/hotspot/os_cpu/linux_arm/linux_arm_32.S +++ b/src/hotspot/os_cpu/linux_arm/linux_arm_32.S @@ -1,5 +1,5 @@ # -# Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2008, 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 @@ -23,38 +23,46 @@ # NOTE WELL! The _Copy functions are called directly - # from server-compiler-generated code via CallLeafNoFP, - # which means that they *must* either not use floating - # point or use it in the same manner as does the server - # compiler. + # from server-compiler-generated code via CallLeafNoFP, + # which means that they *must* either not use floating + # point or use it in the same manner as does the server + # compiler. - .globl _Copy_conjoint_bytes - .type _Copy_conjoint_bytes, %function + .globl SpinPause + .hidden SpinPause + .type SpinPause, %function .globl _Copy_arrayof_conjoint_bytes - .type _Copy_arrayof_conjoint_bytes, %function - .globl _Copy_disjoint_words - .type _Copy_disjoint_words, %function - .globl _Copy_conjoint_words - .type _Copy_conjoint_words, %function + .hidden _Copy_arrayof_conjoint_bytes + .type _Copy_arrayof_conjoint_bytes, %function + .globl _Copy_disjoint_words + .hidden _Copy_disjoint_words + .type _Copy_disjoint_words, %function + .globl _Copy_conjoint_words + .hidden _Copy_conjoint_words + .type _Copy_conjoint_words, %function .globl _Copy_conjoint_jshorts_atomic - .type _Copy_conjoint_jshorts_atomic, %function - .globl _Copy_arrayof_conjoint_jshorts - .type _Copy_arrayof_conjoint_jshorts, %function + .hidden _Copy_conjoint_jshorts_atomic + .type _Copy_conjoint_jshorts_atomic, %function + .globl _Copy_arrayof_conjoint_jshorts + .hidden _Copy_arrayof_conjoint_jshorts + .type _Copy_arrayof_conjoint_jshorts, %function .globl _Copy_conjoint_jints_atomic - .type _Copy_conjoint_jints_atomic, %function + .hidden _Copy_conjoint_jints_atomic + .type _Copy_conjoint_jints_atomic, %function .globl _Copy_arrayof_conjoint_jints - .type _Copy_arrayof_conjoint_jints, %function - .globl _Copy_conjoint_jlongs_atomic - .type _Copy_conjoint_jlongs_atomic, %function - .globl _Copy_arrayof_conjoint_jlongs - .type _Copy_arrayof_conjoint_jlongs, %function + .hidden _Copy_arrayof_conjoint_jints + .type _Copy_arrayof_conjoint_jints, %function + .globl _Copy_conjoint_jlongs_atomic + .hidden _Copy_conjoint_jlongs_atomic + .type _Copy_conjoint_jlongs_atomic, %function + .globl _Copy_arrayof_conjoint_jlongs + .hidden _Copy_arrayof_conjoint_jlongs + .type _Copy_arrayof_conjoint_jlongs, %function from .req r0 to .req r1 - .text - .globl SpinPause - .type SpinPause, %function + .text SpinPause: bx LR @@ -70,7 +78,7 @@ _Copy_arrayof_conjoint_bytes: # size_t count) _Copy_disjoint_words: stmdb sp!, {r3 - r9, ip} - + cmp r2, #0 beq disjoint_words_finish @@ -81,17 +89,17 @@ _Copy_disjoint_words: .align 3 dw_f2b_loop_32: subs r2, #32 - blt dw_f2b_loop_32_finish + blt dw_f2b_loop_32_finish ldmia from!, {r3 - r9, ip} nop - pld [from] + pld [from] stmia to!, {r3 - r9, ip} bgt dw_f2b_loop_32 dw_f2b_loop_32_finish: addlts r2, #32 beq disjoint_words_finish cmp r2, #16 - blt disjoint_words_small + blt disjoint_words_small ldmia from!, {r3 - r6} subge r2, r2, #16 stmia to!, {r3 - r6} @@ -116,8 +124,8 @@ disjoint_words_finish: _Copy_conjoint_words: stmdb sp!, {r3 - r9, ip} - cmp r2, #0 - beq conjoint_words_finish + cmp r2, #0 + beq conjoint_words_finish pld [from, #0] cmp r2, #12 @@ -129,17 +137,17 @@ _Copy_conjoint_words: .align 3 cw_f2b_loop_32: subs r2, #32 - blt cw_f2b_loop_32_finish + blt cw_f2b_loop_32_finish ldmia from!, {r3 - r9, ip} nop - pld [from] + pld [from] stmia to!, {r3 - r9, ip} bgt cw_f2b_loop_32 cw_f2b_loop_32_finish: addlts r2, #32 beq conjoint_words_finish cmp r2, #16 - blt conjoint_words_small + blt conjoint_words_small ldmia from!, {r3 - r6} subge r2, r2, #16 stmia to!, {r3 - r6} @@ -154,7 +162,7 @@ conjoint_words_small: strgt r9, [to], #4 b conjoint_words_finish - # Src and dest overlap, copy in a descending order + # Src and dest overlap, copy in a descending order cw_b2f_copy: add from, r2 pld [from, #-32] @@ -162,17 +170,17 @@ cw_b2f_copy: .align 3 cw_b2f_loop_32: subs r2, #32 - blt cw_b2f_loop_32_finish + blt cw_b2f_loop_32_finish ldmdb from!, {r3-r9,ip} nop - pld [from, #-32] + pld [from, #-32] stmdb to!, {r3-r9,ip} bgt cw_b2f_loop_32 cw_b2f_loop_32_finish: addlts r2, #32 beq conjoint_words_finish cmp r2, #16 - blt cw_b2f_copy_small + blt cw_b2f_copy_small ldmdb from!, {r3 - r6} subge r2, r2, #16 stmdb to!, {r3 - r6} @@ -196,8 +204,8 @@ conjoint_words_finish: _Copy_conjoint_jshorts_atomic: stmdb sp!, {r3 - r9, ip} - cmp r2, #0 - beq conjoint_shorts_finish + cmp r2, #0 + beq conjoint_shorts_finish subs r3, to, from cmphi r2, r3 @@ -210,11 +218,11 @@ _Copy_conjoint_jshorts_atomic: ands r3, from, #3 bne cs_f2b_src_u - # Aligned source address + # Aligned source address .align 3 cs_f2b_loop_32: subs r2, #32 - blt cs_f2b_loop_32_finish + blt cs_f2b_loop_32_finish ldmia from!, {r3 - r9, ip} nop pld [from] @@ -244,14 +252,14 @@ cs_f2b_4: strgth r5, [to], #2 b conjoint_shorts_finish - # Destination not aligned + # Destination not aligned cs_f2b_dest_u: ldrh r3, [from], #2 subs r2, #2 strh r3, [to], #2 beq conjoint_shorts_finish - # Check to see if source is not aligned ether + # Check to see if source is not aligned ether ands r3, from, #3 beq cs_f2b_loop_32 @@ -259,11 +267,11 @@ cs_f2b_src_u: cmp r2, #16 blt cs_f2b_8_u - # Load 2 first bytes to r7 and make src ptr word aligned + # Load 2 first bytes to r7 and make src ptr word aligned bic from, #3 ldr r7, [from], #4 - # Destination aligned, source not + # Destination aligned, source not mov r8, r2, lsr #4 .align 3 cs_f2b_16_u_loop: @@ -306,7 +314,7 @@ cs_f2b_4_u: strgth r5, [to], #2 b conjoint_shorts_finish - # Src and dest overlap, copy in a descending order + # Src and dest overlap, copy in a descending order cs_b2f_copy: add from, r2 pld [from, #-32] @@ -319,7 +327,7 @@ cs_b2f_copy: .align 3 cs_b2f_loop_32: subs r2, #32 - blt cs_b2f_loop_32_finish + blt cs_b2f_loop_32_finish ldmdb from!, {r3-r9,ip} nop pld [from, #-32] @@ -359,16 +367,16 @@ cs_b2f_all_copy: strgth r5, [to, #-2]! b conjoint_shorts_finish - # Destination not aligned + # Destination not aligned cs_b2f_dest_u: ldrh r3, [from, #-2]! strh r3, [to, #-2]! sub r2, #2 - # Check source alignment as well + # Check source alignment as well ands r3, from, #3 beq cs_b2f_loop_32 - # Source not aligned + # Source not aligned cs_b2f_src_u: bic from, #3 .align 3 @@ -393,7 +401,7 @@ cs_b2f_16_loop_u: cs_b2f_16_loop_u_finished: addlts r2, #16 ldr r3, [from] - cmp r2, #10 + cmp r2, #10 blt cs_b2f_2_u_loop ldmdb from!, {r4 - r5} mov r6, r4, lsr #16 @@ -402,7 +410,7 @@ cs_b2f_16_loop_u_finished: orr r7, r7, r3, lsl #16 stmdb to!, {r6-r7} sub r2, #8 - .align 3 + .align 3 cs_b2f_2_u_loop: subs r2, #2 ldrh r3, [from], #-2 @@ -426,7 +434,7 @@ _Copy_arrayof_conjoint_jshorts: _Copy_conjoint_jints_atomic: _Copy_arrayof_conjoint_jints: swi 0x9f0001 - + # Support for void Copy::conjoint_jlongs_atomic(jlong* from, # jlong* to, # size_t count) @@ -434,8 +442,8 @@ _Copy_conjoint_jlongs_atomic: _Copy_arrayof_conjoint_jlongs: stmdb sp!, {r3 - r9, ip} - cmp r2, #0 - beq conjoint_longs_finish + cmp r2, #0 + beq conjoint_longs_finish pld [from, #0] cmp r2, #24 @@ -447,10 +455,10 @@ _Copy_arrayof_conjoint_jlongs: .align 3 cl_f2b_loop_32: subs r2, #32 - blt cl_f2b_loop_32_finish + blt cl_f2b_loop_32_finish ldmia from!, {r3 - r9, ip} nop - pld [from] + pld [from] stmia to!, {r3 - r9, ip} bgt cl_f2b_loop_32 cl_f2b_loop_32_finish: @@ -458,21 +466,21 @@ cl_f2b_loop_32_finish: beq conjoint_longs_finish conjoint_longs_small: cmp r2, #16 - blt cl_f2b_copy_8 - bgt cl_f2b_copy_24 + blt cl_f2b_copy_8 + bgt cl_f2b_copy_24 ldmia from!, {r3 - r6} stmia to!, {r3 - r6} - b conjoint_longs_finish + b conjoint_longs_finish cl_f2b_copy_8: ldmia from!, {r3 - r4} stmia to!, {r3 - r4} b conjoint_longs_finish cl_f2b_copy_24: - ldmia from!, {r3 - r8} + ldmia from!, {r3 - r8} stmia to!, {r3 - r8} b conjoint_longs_finish - # Src and dest overlap, copy in a descending order + # Src and dest overlap, copy in a descending order cl_b2f_copy: add from, r2 pld [from, #-32] @@ -480,31 +488,29 @@ cl_b2f_copy: .align 3 cl_b2f_loop_32: subs r2, #32 - blt cl_b2f_loop_32_finish + blt cl_b2f_loop_32_finish ldmdb from!, {r3 - r9, ip} nop - pld [from] + pld [from] stmdb to!, {r3 - r9, ip} bgt cl_b2f_loop_32 cl_b2f_loop_32_finish: addlts r2, #32 beq conjoint_longs_finish cmp r2, #16 - blt cl_b2f_copy_8 - bgt cl_b2f_copy_24 + blt cl_b2f_copy_8 + bgt cl_b2f_copy_24 ldmdb from!, {r3 - r6} stmdb to!, {r3 - r6} b conjoint_longs_finish cl_b2f_copy_8: - ldmdb from!, {r3 - r4} + ldmdb from!, {r3 - r4} stmdb to!, {r3 - r4} b conjoint_longs_finish cl_b2f_copy_24: - ldmdb from!, {r3 - r8} + ldmdb from!, {r3 - r8} stmdb to!, {r3 - r8} conjoint_longs_finish: ldmia sp!, {r3 - r9, ip} bx lr - - diff --git a/src/hotspot/os_cpu/linux_arm/safefetch_linux_arm.S b/src/hotspot/os_cpu/linux_arm/safefetch_linux_arm.S index 5196b199f05..07e90fa3079 100644 --- a/src/hotspot/os_cpu/linux_arm/safefetch_linux_arm.S +++ b/src/hotspot/os_cpu/linux_arm/safefetch_linux_arm.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -26,6 +26,11 @@ .globl SafeFetch32_impl .globl _SafeFetch32_fault .globl _SafeFetch32_continuation + + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + .type SafeFetch32_impl, %function # Support for int SafeFetch32(int* address, int defaultval); diff --git a/src/hotspot/os_cpu/linux_ppc/safefetch_linux_ppc.S b/src/hotspot/os_cpu/linux_ppc/safefetch_linux_ppc.S index c8d20cc1b43..8c96edf01b4 100644 --- a/src/hotspot/os_cpu/linux_ppc/safefetch_linux_ppc.S +++ b/src/hotspot/os_cpu/linux_ppc/safefetch_linux_ppc.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -30,6 +30,13 @@ .globl _SafeFetch32_fault .globl _SafeFetch32_continuation + .hidden SafeFetchN_impl + .hidden _SafeFetchN_fault + .hidden _SafeFetchN_continuation + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + # Support for int SafeFetch32(int* address, int defaultval); # # r3 : address diff --git a/src/hotspot/os_cpu/linux_riscv/safefetch_linux_riscv.S b/src/hotspot/os_cpu/linux_riscv/safefetch_linux_riscv.S index ecf0bac6f9e..150df7567bd 100644 --- a/src/hotspot/os_cpu/linux_riscv/safefetch_linux_riscv.S +++ b/src/hotspot/os_cpu/linux_riscv/safefetch_linux_riscv.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -30,6 +30,13 @@ .globl _SafeFetch32_fault .globl _SafeFetch32_continuation + .hidden SafeFetchN_impl + .hidden _SafeFetchN_fault + .hidden _SafeFetchN_continuation + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + # Support for int SafeFetch32(int* address, int defaultval); # # x10 (a0) : address diff --git a/src/hotspot/os_cpu/linux_s390/safefetch_linux_s390.S b/src/hotspot/os_cpu/linux_s390/safefetch_linux_s390.S index 47fe82f5a27..43d50c798e5 100644 --- a/src/hotspot/os_cpu/linux_s390/safefetch_linux_s390.S +++ b/src/hotspot/os_cpu/linux_s390/safefetch_linux_s390.S @@ -1,6 +1,6 @@ /* * Copyright (c) 2022 SAP SE. All rights reserved. - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 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 @@ -30,6 +30,13 @@ .globl _SafeFetch32_fault .globl _SafeFetch32_continuation + .hidden SafeFetchN_impl + .hidden _SafeFetchN_fault + .hidden _SafeFetchN_continuation + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + # Support for int SafeFetch32(int* address, int defaultval); # # r2 : address diff --git a/src/hotspot/os_cpu/linux_x86/linux_x86_32.S b/src/hotspot/os_cpu/linux_x86/linux_x86_32.S index 344358172de..e23cd2b9164 100644 --- a/src/hotspot/os_cpu/linux_x86/linux_x86_32.S +++ b/src/hotspot/os_cpu/linux_x86/linux_x86_32.S @@ -1,5 +1,5 @@ # -# Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 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 @@ -21,28 +21,41 @@ # questions. # + .globl SpinPause # NOTE WELL! The _Copy functions are called directly - # from server-compiler-generated code via CallLeafNoFP, - # which means that they *must* either not use floating - # point or use it in the same manner as does the server - # compiler. + # from server-compiler-generated code via CallLeafNoFP, + # which means that they *must* either not use floating + # point or use it in the same manner as does the server + # compiler. .globl _Copy_arrayof_conjoint_bytes .globl _Copy_conjoint_jshorts_atomic - .globl _Copy_arrayof_conjoint_jshorts + .globl _Copy_arrayof_conjoint_jshorts .globl _Copy_conjoint_jints_atomic .globl _Copy_arrayof_conjoint_jints - .globl _Copy_conjoint_jlongs_atomic - .globl _mmx_Copy_arrayof_conjoint_jshorts + .globl _Copy_conjoint_jlongs_atomic + .globl _mmx_Copy_arrayof_conjoint_jshorts .globl _Atomic_cmpxchg_long .globl _Atomic_move_long - .text + .hidden SpinPause - .globl SpinPause - .type SpinPause,@function + .hidden _Copy_arrayof_conjoint_bytes + .hidden _Copy_conjoint_jshorts_atomic + .hidden _Copy_arrayof_conjoint_jshorts + .hidden _Copy_conjoint_jints_atomic + .hidden _Copy_arrayof_conjoint_jints + .hidden _Copy_conjoint_jlongs_atomic + .hidden _mmx_Copy_arrayof_conjoint_jshorts + + .hidden _Atomic_cmpxchg_long + .hidden _Atomic_move_long + + .text + + .type SpinPause,@function .p2align 4,,15 SpinPause: rep @@ -55,7 +68,7 @@ SpinPause: # size_t count) # .p2align 4,,15 - .type _Copy_arrayof_conjoint_bytes,@function + .type _Copy_arrayof_conjoint_bytes,@function _Copy_arrayof_conjoint_bytes: pushl %esi movl 4+12(%esp),%ecx # count @@ -115,7 +128,7 @@ acb_CopyLeft: jbe 2f # <= 32 dwords rep; smovl jmp 4f - .space 8 + .space 8 2: subl %esi,%edi .p2align 4,,15 3: movl (%esi),%edx @@ -131,7 +144,7 @@ acb_CopyLeft: addl $3,%esi 6: movb (%esi),%dl movb %dl,(%edi,%esi,1) - subl $1,%esi + subl $1,%esi subl $1,%ecx jnz 6b 7: cld @@ -143,7 +156,7 @@ acb_CopyLeft: # void* to, # size_t count) .p2align 4,,15 - .type _Copy_conjoint_jshorts_atomic,@function + .type _Copy_conjoint_jshorts_atomic,@function _Copy_conjoint_jshorts_atomic: pushl %esi movl 4+12(%esp),%ecx # count @@ -230,7 +243,7 @@ cs_CopyLeft: # void* to, # size_t count) .p2align 4,,15 - .type _Copy_arrayof_conjoint_jshorts,@function + .type _Copy_arrayof_conjoint_jshorts,@function _Copy_arrayof_conjoint_jshorts: pushl %esi movl 4+12(%esp),%ecx # count @@ -307,8 +320,8 @@ acs_CopyLeft: # Equivalent to # arrayof_conjoint_jints .p2align 4,,15 - .type _Copy_conjoint_jints_atomic,@function - .type _Copy_arrayof_conjoint_jints,@function + .type _Copy_conjoint_jints_atomic,@function + .type _Copy_arrayof_conjoint_jints,@function _Copy_conjoint_jints_atomic: _Copy_arrayof_conjoint_jints: pushl %esi @@ -384,7 +397,7 @@ ci_CopyLeft: # } */ .p2align 4,,15 - .type _Copy_conjoint_jlongs_atomic,@function + .type _Copy_conjoint_jlongs_atomic,@function _Copy_conjoint_jlongs_atomic: movl 4+8(%esp),%ecx # count movl 4+0(%esp),%eax # from @@ -413,7 +426,7 @@ cla_CopyLeft: # void* to, # size_t count) .p2align 4,,15 - .type _mmx_Copy_arrayof_conjoint_jshorts,@function + .type _mmx_Copy_arrayof_conjoint_jshorts,@function _mmx_Copy_arrayof_conjoint_jshorts: pushl %esi movl 4+12(%esp),%ecx @@ -465,8 +478,8 @@ mmx_acs_CopyRight: cmpl $16,%ecx jge 4b emms - testl %ecx,%ecx - ja 1b + testl %ecx,%ecx + ja 1b 5: andl $1,%eax je 7f 6: movw (%esi),%dx @@ -511,7 +524,7 @@ mmx_acs_CopyLeft: # jlong exchange_value) # .p2align 4,,15 - .type _Atomic_cmpxchg_long,@function + .type _Atomic_cmpxchg_long,@function _Atomic_cmpxchg_long: # 8(%esp) : return PC pushl %ebx # 4(%esp) : old %ebx @@ -530,7 +543,7 @@ _Atomic_cmpxchg_long: # Support for jlong Atomic::load and Atomic::store. # void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst) .p2align 4,,15 - .type _Atomic_move_long,@function + .type _Atomic_move_long,@function _Atomic_move_long: movl 4(%esp), %eax # src fildll (%eax) diff --git a/src/hotspot/os_cpu/linux_x86/linux_x86_64.S b/src/hotspot/os_cpu/linux_x86/linux_x86_64.S index 89d98cb5837..65580a194af 100644 --- a/src/hotspot/os_cpu/linux_x86/linux_x86_64.S +++ b/src/hotspot/os_cpu/linux_x86/linux_x86_64.S @@ -1,5 +1,5 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +# +# Copyright (c) 2004, 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 @@ -21,24 +21,34 @@ # questions. # + .globl SpinPause # NOTE WELL! The _Copy functions are called directly - # from server-compiler-generated code via CallLeafNoFP, - # which means that they *must* either not use floating - # point or use it in the same manner as does the server - # compiler. - + # from server-compiler-generated code via CallLeafNoFP, + # which means that they *must* either not use floating + # point or use it in the same manner as does the server + # compiler. + .globl _Copy_arrayof_conjoint_bytes - .globl _Copy_arrayof_conjoint_jshorts + .globl _Copy_arrayof_conjoint_jshorts .globl _Copy_conjoint_jshorts_atomic .globl _Copy_arrayof_conjoint_jints .globl _Copy_conjoint_jints_atomic .globl _Copy_arrayof_conjoint_jlongs .globl _Copy_conjoint_jlongs_atomic - .text + .hidden SpinPause + + .hidden _Copy_arrayof_conjoint_bytes + .hidden _Copy_arrayof_conjoint_jshorts + .hidden _Copy_conjoint_jshorts_atomic + .hidden _Copy_arrayof_conjoint_jints + .hidden _Copy_conjoint_jints_atomic + .hidden _Copy_arrayof_conjoint_jlongs + .hidden _Copy_conjoint_jlongs_atomic + + .text - .globl SpinPause .align 16 .type SpinPause,@function SpinPause: @@ -55,7 +65,7 @@ SpinPause: # rdx - count, treated as ssize_t # .p2align 4,,15 - .type _Copy_arrayof_conjoint_bytes,@function + .type _Copy_arrayof_conjoint_bytes,@function _Copy_arrayof_conjoint_bytes: movq %rdx,%r8 # byte count shrq $3,%rdx # qword count @@ -63,7 +73,7 @@ _Copy_arrayof_conjoint_bytes: leaq -1(%rdi,%r8,1),%rax # from + bcount*1 - 1 jbe acb_CopyRight cmpq %rax,%rsi - jbe acb_CopyLeft + jbe acb_CopyLeft acb_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -157,8 +167,8 @@ acb_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - .type _Copy_arrayof_conjoint_jshorts,@function - .type _Copy_conjoint_jshorts_atomic,@function + .type _Copy_arrayof_conjoint_jshorts,@function + .type _Copy_conjoint_jshorts_atomic,@function _Copy_arrayof_conjoint_jshorts: _Copy_conjoint_jshorts_atomic: movq %rdx,%r8 # word count @@ -167,7 +177,7 @@ _Copy_conjoint_jshorts_atomic: leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2 jbe acs_CopyRight cmpq %rax,%rsi - jbe acs_CopyLeft + jbe acs_CopyLeft acs_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -247,8 +257,8 @@ acs_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - .type _Copy_arrayof_conjoint_jints,@function - .type _Copy_conjoint_jints_atomic,@function + .type _Copy_arrayof_conjoint_jints,@function + .type _Copy_conjoint_jints_atomic,@function _Copy_arrayof_conjoint_jints: _Copy_conjoint_jints_atomic: movq %rdx,%r8 # dword count @@ -257,7 +267,7 @@ _Copy_conjoint_jints_atomic: leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4 jbe aci_CopyRight cmpq %rax,%rsi - jbe aci_CopyLeft + jbe aci_CopyLeft aci_CopyRight: leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8 leaq -8(%rsi,%rdx,8),%rcx # to + qcount*8 - 8 @@ -326,15 +336,15 @@ aci_CopyLeft: # rdx - count, treated as ssize_t # .p2align 4,,15 - .type _Copy_arrayof_conjoint_jlongs,@function - .type _Copy_conjoint_jlongs_atomic,@function + .type _Copy_arrayof_conjoint_jlongs,@function + .type _Copy_conjoint_jlongs_atomic,@function _Copy_arrayof_conjoint_jlongs: _Copy_conjoint_jlongs_atomic: cmpq %rdi,%rsi leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8 jbe acl_CopyRight cmpq %rax,%rsi - jbe acl_CopyLeft + jbe acl_CopyLeft acl_CopyRight: leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8 negq %rdx diff --git a/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_32.S b/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_32.S index 492b1207db6..54775cb7e8e 100644 --- a/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_32.S +++ b/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_32.S @@ -1,6 +1,6 @@ # # Copyright (c) 2022 SAP SE. All rights reserved. -# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2022, 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 @@ -25,7 +25,11 @@ .globl _SafeFetch32_fault .globl _SafeFetch32_continuation - .text + .hidden SafeFetch32_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetch32_continuation + + .text # Support for int SafeFetch32(int* address, int defaultval); # diff --git a/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_64.S b/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_64.S index 617851e8327..1937e717088 100644 --- a/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_64.S +++ b/src/hotspot/os_cpu/linux_x86/safefetch_linux_x86_64.S @@ -1,6 +1,6 @@ # # Copyright (c) 2022 SAP SE. All rights reserved. -# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2022, 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 @@ -28,7 +28,14 @@ .globl _SafeFetch32_continuation .globl _SafeFetchN_continuation - .text + .hidden SafeFetch32_impl + .hidden SafeFetchN_impl + .hidden _SafeFetch32_fault + .hidden _SafeFetchN_fault + .hidden _SafeFetch32_continuation + .hidden _SafeFetchN_continuation + + .text # Support for int SafeFetch32(int* address, int defaultval); diff --git a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp index efc47def021..898ab9425e9 100644 --- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp +++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp @@ -70,6 +70,11 @@ #include "jfr/jfr.hpp" #endif +#if defined(TARGET_COMPILER_gcc) +#undef JNIEXPORT +#define JNIEXPORT +#endif + JVMCIKlassHandle::JVMCIKlassHandle(Thread* thread, Klass* klass) { _thread = thread; _klass = klass; diff --git a/src/hotspot/share/jvmci/vmStructs_jvmci.cpp b/src/hotspot/share/jvmci/vmStructs_jvmci.cpp index 2a5e38bdc75..e6e0133ab5e 100644 --- a/src/hotspot/share/jvmci/vmStructs_jvmci.cpp +++ b/src/hotspot/share/jvmci/vmStructs_jvmci.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 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 @@ -47,6 +47,11 @@ #include "gc/g1/g1ThreadLocalData.hpp" #endif +#if defined(TARGET_COMPILER_gcc) +#undef JNIEXPORT +#define JNIEXPORT +#endif + #define VM_STRUCTS(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field) \ static_field(CompilerToVM::Data, Klass_vtable_start_offset, int) \ static_field(CompilerToVM::Data, Klass_vtable_length_offset, int) \ diff --git a/src/hotspot/share/oops/accessBackend.cpp b/src/hotspot/share/oops/accessBackend.cpp index 853f42f6f7e..be191316f25 100644 --- a/src/hotspot/share/oops/accessBackend.cpp +++ b/src/hotspot/share/oops/accessBackend.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 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 @@ -32,6 +32,12 @@ #include "utilities/debug.hpp" #include "utilities/vmError.hpp" +#if defined(TARGET_COMPILER_gcc) +#define HIDDEN __attribute__ ((visibility ("hidden"))) +#else +#define HIDDEN +#endif + namespace AccessInternal { // These forward copying calls to Copy without exposing the Copy type in headers unnecessarily @@ -58,102 +64,102 @@ namespace AccessInternal { reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jboolean* src, jboolean* dst, size_t length) { Copy::conjoint_jbytes(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jbyte* src, jbyte* dst, size_t length) { Copy::conjoint_jbytes(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jchar* src, jchar* dst, size_t length) { Copy::conjoint_jshorts_atomic(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jshort* src, jshort* dst, size_t length) { Copy::conjoint_jshorts_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jint* src, jint* dst, size_t length) { Copy::conjoint_jints_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jfloat* src, jfloat* dst, size_t length) { Copy::conjoint_jints_atomic(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jlong* src, jlong* dst, size_t length) { Copy::conjoint_jlongs_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint(jdouble* src, jdouble* dst, size_t length) { Copy::conjoint_jlongs_atomic(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_arrayof_conjoint(jbyte* src, jbyte* dst, size_t length) { Copy::arrayof_conjoint_jbytes(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_arrayof_conjoint(jshort* src, jshort* dst, size_t length) { Copy::arrayof_conjoint_jshorts(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_arrayof_conjoint(jint* src, jint* dst, size_t length) { Copy::arrayof_conjoint_jints(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_arrayof_conjoint(jlong* src, jlong* dst, size_t length) { Copy::arrayof_conjoint_jlongs(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint(void* src, void* dst, size_t length) { Copy::conjoint_jbytes(reinterpret_cast(src), reinterpret_cast(dst), length); } - template<> + template<> HIDDEN void arraycopy_conjoint_atomic(jbyte* src, jbyte* dst, size_t length) { Copy::conjoint_jbytes_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint_atomic(jshort* src, jshort* dst, size_t length) { Copy::conjoint_jshorts_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint_atomic(jint* src, jint* dst, size_t length) { Copy::conjoint_jints_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint_atomic(jlong* src, jlong* dst, size_t length) { Copy::conjoint_jlongs_atomic(src, dst, length); } - template<> + template<> HIDDEN void arraycopy_conjoint_atomic(void* src, void* dst, size_t length) { Copy::conjoint_memory_atomic(src, dst, length); } diff --git a/src/hotspot/share/utilities/debug.cpp b/src/hotspot/share/utilities/debug.cpp index 913d1ba4ce4..b2f16c0defa 100644 --- a/src/hotspot/share/utilities/debug.cpp +++ b/src/hotspot/share/utilities/debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -67,6 +67,11 @@ #include #include +#if defined(TARGET_COMPILER_gcc) +#undef JNIEXPORT +#define JNIEXPORT +#endif + // Support for showing register content on asserts/guarantees. #ifdef CAN_SHOW_REGISTERS_ON_ASSERT static char g_dummy;