8017234: Hotspot should stop using mapfiles
Reviewed-by: djelinski, erikj, dholmes
This commit is contained in:
parent
d482c1af28
commit
da14aa463b
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
||||||
#
|
|
11
make/data/hotspot-symbols/version-script.txt
Normal file
11
make/data/hotspot-symbols/version-script.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
SUNWprivate_1.1 {
|
||||||
|
global:
|
||||||
|
*;
|
||||||
|
|
||||||
|
local:
|
||||||
|
__bss_start;
|
||||||
|
_edata;
|
||||||
|
_end;
|
||||||
|
_fini;
|
||||||
|
_init;
|
||||||
|
};
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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)
|
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.
|
# Additional disabled warnings are due to code in the test source.
|
||||||
|
|
||||||
$(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \
|
$(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \
|
||||||
@ -123,8 +109,6 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \
|
|||||||
LIBS_unix := -lgtest, \
|
LIBS_unix := -lgtest, \
|
||||||
LIBS_windows := $(JVM_OUTPUTDIR)/libgtest/gtest.lib, \
|
LIBS_windows := $(JVM_OUTPUTDIR)/libgtest/gtest.lib, \
|
||||||
OPTIMIZATION := $(JVM_OPTIMIZATION), \
|
OPTIMIZATION := $(JVM_OPTIMIZATION), \
|
||||||
MAPFILE := $(GTEST_JVM_MAPFILE), \
|
|
||||||
USE_MAPFILE_FOR_SYMBOLS := true, \
|
|
||||||
COPY_DEBUG_SYMBOLS := $(GTEST_COPY_DEBUG_SYMBOLS), \
|
COPY_DEBUG_SYMBOLS := $(GTEST_COPY_DEBUG_SYMBOLS), \
|
||||||
ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \
|
ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \
|
||||||
STRIP_SYMBOLS := false, \
|
STRIP_SYMBOLS := false, \
|
||||||
@ -134,6 +118,11 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBJVM, \
|
|||||||
|
|
||||||
$(BUILD_GTEST_LIBJVM) : $(BUILD_GTEST_LIBGTEST)
|
$(BUILD_GTEST_LIBJVM) : $(BUILD_GTEST_LIBGTEST)
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
$(BUILD_GTEST_LIBJVM_TARGET): $(WIN_EXPORT_FILE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
TARGETS += $(BUILD_GTEST_LIBJVM)
|
TARGETS += $(BUILD_GTEST_LIBJVM)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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).
|
# Setup compilation of the main Hotspot native library (libjvm).
|
||||||
|
|
||||||
JVM_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm
|
JVM_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm
|
||||||
JVM_MAPFILE := $(JVM_OUTPUTDIR)/mapfile
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Platform independent setup
|
# Platform independent setup
|
||||||
@ -146,6 +145,18 @@ $(call FillFindCache, $(JVM_SRC_DIRS))
|
|||||||
# operator new.
|
# operator new.
|
||||||
LIBJVM_STATIC_EXCLUDE_OBJS := operator_new.o
|
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
|
# Now set up the actual compilation of the main hotspot native library
|
||||||
|
|
||||||
@ -195,8 +206,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \
|
|||||||
LIBS := $(JVM_LIBS), \
|
LIBS := $(JVM_LIBS), \
|
||||||
OPTIMIZATION := $(JVM_OPTIMIZATION), \
|
OPTIMIZATION := $(JVM_OPTIMIZATION), \
|
||||||
OBJECT_DIR := $(JVM_OUTPUTDIR)/objs, \
|
OBJECT_DIR := $(JVM_OUTPUTDIR)/objs, \
|
||||||
MAPFILE := $(JVM_MAPFILE), \
|
|
||||||
USE_MAPFILE_FOR_SYMBOLS := true, \
|
|
||||||
STRIPFLAGS := $(JVM_STRIPFLAGS), \
|
STRIPFLAGS := $(JVM_STRIPFLAGS), \
|
||||||
EMBED_MANIFEST := true, \
|
EMBED_MANIFEST := true, \
|
||||||
RC_FILEDESC := $(HOTSPOT_VM_DISTRO) $(OPENJDK_TARGET_CPU_BITS)-Bit $(JVM_VARIANT) VM, \
|
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), \
|
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 <functional>
|
||||||
|
# std::function<void()> 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
|
# 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__
|
# that the internal vm version is updated as it relies on __DATE__ and __TIME__
|
||||||
# macros.
|
# macros.
|
||||||
ABSTRACT_VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/abstract_vm_version$(OBJ_SUFFIX)
|
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))
|
$(BUILD_LIBJVM_TARGET_DEPS))
|
||||||
|
|
||||||
ifneq ($(GENERATE_COMPILE_COMMANDS_ONLY), true)
|
ifneq ($(GENERATE_COMPILE_COMMANDS_ONLY), true)
|
||||||
@ -237,11 +283,6 @@ endif
|
|||||||
# 1540-1090 : (I) The destructor of "..." might not be called.
|
# 1540-1090 : (I) The destructor of "..." might not be called.
|
||||||
# 1540-1639 : (I) The behavior of long type bit fields has changed ...
|
# 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)
|
TARGETS += $(BUILD_LIBJVM)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -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 <functional>
|
|
||||||
# std::function<void()> 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)
|
|
@ -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.
|
* Copyright (c) 2014, 2020 Red Hat Inc. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -31,6 +31,11 @@
|
|||||||
#include "memory/resourceArea.hpp"
|
#include "memory/resourceArea.hpp"
|
||||||
#include "metaprogramming/primitiveConversions.hpp"
|
#include "metaprogramming/primitiveConversions.hpp"
|
||||||
|
|
||||||
|
#if defined(TARGET_COMPILER_gcc)
|
||||||
|
#undef JNIEXPORT
|
||||||
|
#define JNIEXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
const uintptr_t Assembler::asm_bp = 0x0000ffffac221240;
|
const uintptr_t Assembler::asm_bp = 0x0000ffffac221240;
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,6 +28,11 @@
|
|||||||
.global CFUNC(_Copy_conjoint_words)
|
.global CFUNC(_Copy_conjoint_words)
|
||||||
.global CFUNC(_Copy_disjoint_words)
|
.global CFUNC(_Copy_disjoint_words)
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.private_extern CFUNC(_Copy_conjoint_words)
|
||||||
|
.private_extern CFUNC(_Copy_disjoint_words)
|
||||||
|
#endif
|
||||||
|
|
||||||
s .req x0
|
s .req x0
|
||||||
d .req x1
|
d .req x1
|
||||||
count .req x2
|
count .req x2
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -39,6 +39,15 @@
|
|||||||
.global SYMBOL(_SafeFetch32_fault)
|
.global SYMBOL(_SafeFetch32_fault)
|
||||||
.global SYMBOL(_SafeFetch32_continuation)
|
.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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# x0 : address
|
# x0 : address
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,6 +32,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
.globl SYMBOL(fixcw)
|
.globl SYMBOL(fixcw)
|
||||||
|
.globl SYMBOL(SpinPause)
|
||||||
|
|
||||||
# NOTE WELL! The _Copy functions are called directly
|
# NOTE WELL! The _Copy functions are called directly
|
||||||
# from server-compiler-generated code via CallLeafNoFP,
|
# from server-compiler-generated code via CallLeafNoFP,
|
||||||
@ -50,6 +51,20 @@
|
|||||||
.globl SYMBOL(_Atomic_cmpxchg_long)
|
.globl SYMBOL(_Atomic_cmpxchg_long)
|
||||||
.globl SYMBOL(_Atomic_move_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
|
.text
|
||||||
|
|
||||||
# Support for void os::Solaris::init_thread_fpu_state() in os_solaris_i486.cpp
|
# Support for void os::Solaris::init_thread_fpu_state() in os_solaris_i486.cpp
|
||||||
@ -62,7 +77,6 @@ SYMBOL(fixcw):
|
|||||||
popl %eax
|
popl %eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.globl SYMBOL(SpinPause)
|
|
||||||
ELF_TYPE(SpinPause,@function)
|
ELF_TYPE(SpinPause,@function)
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
SYMBOL(SpinPause):
|
SYMBOL(SpinPause):
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,22 +31,33 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
# NOTE WELL! The _Copy functions are called directly
|
# NOTE WELL! The _Copy functions are called directly
|
||||||
# from server-compiler-generated code via CallLeafNoFP,
|
# from server-compiler-generated code via CallLeafNoFP,
|
||||||
# which means that they *must* either not use floating
|
# which means that they *must* either not use floating
|
||||||
# point or use it in the same manner as does the server
|
# point or use it in the same manner as does the server
|
||||||
# compiler.
|
# compiler.
|
||||||
|
|
||||||
|
.globl SYMBOL(SpinPause)
|
||||||
.globl SYMBOL(_Copy_arrayof_conjoint_bytes)
|
.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_conjoint_jshorts_atomic)
|
||||||
.globl SYMBOL(_Copy_arrayof_conjoint_jints)
|
.globl SYMBOL(_Copy_arrayof_conjoint_jints)
|
||||||
.globl SYMBOL(_Copy_conjoint_jints_atomic)
|
.globl SYMBOL(_Copy_conjoint_jints_atomic)
|
||||||
.globl SYMBOL(_Copy_arrayof_conjoint_jlongs)
|
.globl SYMBOL(_Copy_arrayof_conjoint_jlongs)
|
||||||
.globl SYMBOL(_Copy_conjoint_jlongs_atomic)
|
.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
|
.p2align 4,,15
|
||||||
ELF_TYPE(SpinPause,@function)
|
ELF_TYPE(SpinPause,@function)
|
||||||
SYMBOL(SpinPause):
|
SYMBOL(SpinPause):
|
||||||
@ -63,7 +74,7 @@ SYMBOL(SpinPause):
|
|||||||
# rdx - count, treated as ssize_t
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
ELF_TYPE(_Copy_arrayof_conjoint_bytes,@function)
|
ELF_TYPE(_Copy_arrayof_conjoint_bytes,@function)
|
||||||
SYMBOL(_Copy_arrayof_conjoint_bytes):
|
SYMBOL(_Copy_arrayof_conjoint_bytes):
|
||||||
movq %rdx,%r8 # byte count
|
movq %rdx,%r8 # byte count
|
||||||
shrq $3,%rdx # qword 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
|
leaq -1(%rdi,%r8,1),%rax # from + bcount*1 - 1
|
||||||
jbe acb_CopyRight
|
jbe acb_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acb_CopyLeft
|
jbe acb_CopyLeft
|
||||||
acb_CopyRight:
|
acb_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
ELF_TYPE(_Copy_arrayof_conjoint_jshorts,@function)
|
ELF_TYPE(_Copy_arrayof_conjoint_jshorts,@function)
|
||||||
ELF_TYPE(_Copy_conjoint_jshorts_atomic,@function)
|
ELF_TYPE(_Copy_conjoint_jshorts_atomic,@function)
|
||||||
SYMBOL(_Copy_arrayof_conjoint_jshorts):
|
SYMBOL(_Copy_arrayof_conjoint_jshorts):
|
||||||
SYMBOL(_Copy_conjoint_jshorts_atomic):
|
SYMBOL(_Copy_conjoint_jshorts_atomic):
|
||||||
movq %rdx,%r8 # word count
|
movq %rdx,%r8 # word count
|
||||||
@ -175,7 +186,7 @@ SYMBOL(_Copy_conjoint_jshorts_atomic):
|
|||||||
leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2
|
leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2
|
||||||
jbe acs_CopyRight
|
jbe acs_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acs_CopyLeft
|
jbe acs_CopyLeft
|
||||||
acs_CopyRight:
|
acs_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
ELF_TYPE(_Copy_arrayof_conjoint_jints,@function)
|
ELF_TYPE(_Copy_arrayof_conjoint_jints,@function)
|
||||||
ELF_TYPE(_Copy_conjoint_jints_atomic,@function)
|
ELF_TYPE(_Copy_conjoint_jints_atomic,@function)
|
||||||
SYMBOL(_Copy_arrayof_conjoint_jints):
|
SYMBOL(_Copy_arrayof_conjoint_jints):
|
||||||
SYMBOL(_Copy_conjoint_jints_atomic):
|
SYMBOL(_Copy_conjoint_jints_atomic):
|
||||||
movq %rdx,%r8 # dword count
|
movq %rdx,%r8 # dword count
|
||||||
@ -265,7 +276,7 @@ SYMBOL(_Copy_conjoint_jints_atomic):
|
|||||||
leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4
|
leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4
|
||||||
jbe aci_CopyRight
|
jbe aci_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe aci_CopyLeft
|
jbe aci_CopyLeft
|
||||||
aci_CopyRight:
|
aci_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
ELF_TYPE(_Copy_arrayof_conjoint_jlongs,@function)
|
ELF_TYPE(_Copy_arrayof_conjoint_jlongs,@function)
|
||||||
ELF_TYPE(_Copy_conjoint_jlongs_atomic,@function)
|
ELF_TYPE(_Copy_conjoint_jlongs_atomic,@function)
|
||||||
SYMBOL(_Copy_arrayof_conjoint_jlongs):
|
SYMBOL(_Copy_arrayof_conjoint_jlongs):
|
||||||
SYMBOL(_Copy_conjoint_jlongs_atomic):
|
SYMBOL(_Copy_conjoint_jlongs_atomic):
|
||||||
cmpq %rdi,%rsi
|
cmpq %rdi,%rsi
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8
|
||||||
jbe acl_CopyRight
|
jbe acl_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acl_CopyLeft
|
jbe acl_CopyLeft
|
||||||
acl_CopyRight:
|
acl_CopyRight:
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8
|
leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8
|
||||||
negq %rdx
|
negq %rdx
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022 SAP SE. All rights reserved.
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -38,13 +38,22 @@
|
|||||||
.globl SYMBOL(_SafeFetch32_continuation)
|
.globl SYMBOL(_SafeFetch32_continuation)
|
||||||
.globl SYMBOL(_SafeFetchN_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
|
.text
|
||||||
|
|
||||||
# Support for int SafeFetch32(int* address, int defaultval);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# %rdi : address
|
# %rdi : address
|
||||||
# %esi : defaultval
|
# %esi : defaultval
|
||||||
ELF_TYPE(SafeFetch32_impl,@function)
|
ELF_TYPE(SafeFetch32_impl,@function)
|
||||||
SYMBOL(SafeFetch32_impl:)
|
SYMBOL(SafeFetch32_impl:)
|
||||||
SYMBOL(_SafeFetch32_fault:)
|
SYMBOL(_SafeFetch32_fault:)
|
||||||
movl (%rdi), %eax
|
movl (%rdi), %eax
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
.globl aarch64_atomic_fetch_add_8_default_impl
|
.globl aarch64_atomic_fetch_add_8_default_impl
|
||||||
|
.hidden aarch64_atomic_fetch_add_8_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_fetch_add_8_default_impl:
|
aarch64_atomic_fetch_add_8_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -40,6 +41,7 @@ aarch64_atomic_fetch_add_8_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_fetch_add_4_default_impl
|
.globl aarch64_atomic_fetch_add_4_default_impl
|
||||||
|
.hidden aarch64_atomic_fetch_add_4_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_fetch_add_4_default_impl:
|
aarch64_atomic_fetch_add_4_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -56,6 +58,7 @@ aarch64_atomic_fetch_add_4_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.global aarch64_atomic_fetch_add_8_relaxed_default_impl
|
.global aarch64_atomic_fetch_add_8_relaxed_default_impl
|
||||||
|
.hidden aarch64_atomic_fetch_add_8_relaxed_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_fetch_add_8_relaxed_default_impl:
|
aarch64_atomic_fetch_add_8_relaxed_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -71,6 +74,7 @@ aarch64_atomic_fetch_add_8_relaxed_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.global aarch64_atomic_fetch_add_4_relaxed_default_impl
|
.global aarch64_atomic_fetch_add_4_relaxed_default_impl
|
||||||
|
.hidden aarch64_atomic_fetch_add_4_relaxed_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_fetch_add_4_relaxed_default_impl:
|
aarch64_atomic_fetch_add_4_relaxed_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -86,6 +90,7 @@ aarch64_atomic_fetch_add_4_relaxed_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_xchg_4_default_impl
|
.globl aarch64_atomic_xchg_4_default_impl
|
||||||
|
.hidden aarch64_atomic_xchg_4_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_xchg_4_default_impl:
|
aarch64_atomic_xchg_4_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -101,6 +106,7 @@ aarch64_atomic_xchg_4_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_xchg_8_default_impl
|
.globl aarch64_atomic_xchg_8_default_impl
|
||||||
|
.hidden aarch64_atomic_xchg_8_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_xchg_8_default_impl:
|
aarch64_atomic_xchg_8_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -116,6 +122,7 @@ aarch64_atomic_xchg_8_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_1_default_impl
|
.globl aarch64_atomic_cmpxchg_1_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_1_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_1_default_impl:
|
aarch64_atomic_cmpxchg_1_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -136,6 +143,7 @@ aarch64_atomic_cmpxchg_1_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_4_default_impl
|
.globl aarch64_atomic_cmpxchg_4_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_4_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_4_default_impl:
|
aarch64_atomic_cmpxchg_4_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -155,6 +163,7 @@ aarch64_atomic_cmpxchg_4_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_8_default_impl
|
.globl aarch64_atomic_cmpxchg_8_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_8_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_8_default_impl:
|
aarch64_atomic_cmpxchg_8_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -174,6 +183,7 @@ aarch64_atomic_cmpxchg_8_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_4_release_default_impl
|
.globl aarch64_atomic_cmpxchg_4_release_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_4_release_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_4_release_default_impl:
|
aarch64_atomic_cmpxchg_4_release_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -191,6 +201,7 @@ aarch64_atomic_cmpxchg_4_release_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_8_release_default_impl
|
.globl aarch64_atomic_cmpxchg_8_release_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_8_release_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_8_release_default_impl:
|
aarch64_atomic_cmpxchg_8_release_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -208,6 +219,7 @@ aarch64_atomic_cmpxchg_8_release_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_4_seq_cst_default_impl
|
.globl aarch64_atomic_cmpxchg_4_seq_cst_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_4_seq_cst_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_4_seq_cst_default_impl:
|
aarch64_atomic_cmpxchg_4_seq_cst_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -225,6 +237,7 @@ aarch64_atomic_cmpxchg_4_seq_cst_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_8_seq_cst_default_impl
|
.globl aarch64_atomic_cmpxchg_8_seq_cst_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_8_seq_cst_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_8_seq_cst_default_impl:
|
aarch64_atomic_cmpxchg_8_seq_cst_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -242,6 +255,7 @@ aarch64_atomic_cmpxchg_8_seq_cst_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_1_relaxed_default_impl
|
.globl aarch64_atomic_cmpxchg_1_relaxed_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_1_relaxed_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_1_relaxed_default_impl:
|
aarch64_atomic_cmpxchg_1_relaxed_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -260,6 +274,7 @@ aarch64_atomic_cmpxchg_1_relaxed_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_4_relaxed_default_impl
|
.globl aarch64_atomic_cmpxchg_4_relaxed_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_4_relaxed_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_4_relaxed_default_impl:
|
aarch64_atomic_cmpxchg_4_relaxed_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
@ -277,6 +292,7 @@ aarch64_atomic_cmpxchg_4_relaxed_default_impl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.globl aarch64_atomic_cmpxchg_8_relaxed_default_impl
|
.globl aarch64_atomic_cmpxchg_8_relaxed_default_impl
|
||||||
|
.hidden aarch64_atomic_cmpxchg_8_relaxed_default_impl
|
||||||
.align 5
|
.align 5
|
||||||
aarch64_atomic_cmpxchg_8_relaxed_default_impl:
|
aarch64_atomic_cmpxchg_8_relaxed_default_impl:
|
||||||
#ifdef __ARM_FEATURE_ATOMICS
|
#ifdef __ARM_FEATURE_ATOMICS
|
||||||
|
@ -24,6 +24,9 @@
|
|||||||
.global _Copy_conjoint_words
|
.global _Copy_conjoint_words
|
||||||
.global _Copy_disjoint_words
|
.global _Copy_disjoint_words
|
||||||
|
|
||||||
|
.hidden _Copy_conjoint_words
|
||||||
|
.hidden _Copy_disjoint_words
|
||||||
|
|
||||||
s .req x0
|
s .req x0
|
||||||
d .req x1
|
d .req x1
|
||||||
count .req x2
|
count .req x2
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,13 @@
|
|||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# x0 : address
|
# x0 : address
|
||||||
|
@ -25,22 +25,23 @@
|
|||||||
// Clobber x1, flags.
|
// Clobber x1, flags.
|
||||||
// All other registers are preserved,
|
// All other registers are preserved,
|
||||||
|
|
||||||
.global _ZN10JavaThread25aarch64_get_thread_helperEv
|
.global _ZN10JavaThread25aarch64_get_thread_helperEv
|
||||||
.type _ZN10JavaThread25aarch64_get_thread_helperEv, %function
|
.hidden _ZN10JavaThread25aarch64_get_thread_helperEv
|
||||||
|
.type _ZN10JavaThread25aarch64_get_thread_helperEv, %function
|
||||||
|
|
||||||
_ZN10JavaThread25aarch64_get_thread_helperEv:
|
_ZN10JavaThread25aarch64_get_thread_helperEv:
|
||||||
hint #0x19 // paciasp
|
hint #0x19 // paciasp
|
||||||
stp x29, x30, [sp, -16]!
|
stp x29, x30, [sp, -16]!
|
||||||
adrp x0, :tlsdesc:_ZN6Thread12_thr_currentE
|
adrp x0, :tlsdesc:_ZN6Thread12_thr_currentE
|
||||||
ldr x1, [x0, #:tlsdesc_lo12:_ZN6Thread12_thr_currentE]
|
ldr x1, [x0, #:tlsdesc_lo12:_ZN6Thread12_thr_currentE]
|
||||||
add x0, x0, :tlsdesc_lo12:_ZN6Thread12_thr_currentE
|
add x0, x0, :tlsdesc_lo12:_ZN6Thread12_thr_currentE
|
||||||
.tlsdesccall _ZN6Thread12_thr_currentE
|
.tlsdesccall _ZN6Thread12_thr_currentE
|
||||||
blr x1
|
blr x1
|
||||||
mrs x1, tpidr_el0
|
mrs x1, tpidr_el0
|
||||||
add x0, x1, x0
|
add x0, x1, x0
|
||||||
ldr x0, [x0]
|
ldr x0, [x0]
|
||||||
ldp x29, x30, [sp], 16
|
ldp x29, x30, [sp], 16
|
||||||
hint #0x1d // autiasp
|
hint #0x1d // autiasp
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.size _ZN10JavaThread25aarch64_get_thread_helperEv, .-_ZN10JavaThread25aarch64_get_thread_helperEv
|
.size _ZN10JavaThread25aarch64_get_thread_helperEv, .-_ZN10JavaThread25aarch64_get_thread_helperEv
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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
|
# NOTE WELL! The _Copy functions are called directly
|
||||||
# from server-compiler-generated code via CallLeafNoFP,
|
# from server-compiler-generated code via CallLeafNoFP,
|
||||||
# which means that they *must* either not use floating
|
# which means that they *must* either not use floating
|
||||||
# point or use it in the same manner as does the server
|
# point or use it in the same manner as does the server
|
||||||
# compiler.
|
# compiler.
|
||||||
|
|
||||||
.globl _Copy_conjoint_bytes
|
.globl SpinPause
|
||||||
.type _Copy_conjoint_bytes, %function
|
.hidden SpinPause
|
||||||
|
.type SpinPause, %function
|
||||||
.globl _Copy_arrayof_conjoint_bytes
|
.globl _Copy_arrayof_conjoint_bytes
|
||||||
.type _Copy_arrayof_conjoint_bytes, %function
|
.hidden _Copy_arrayof_conjoint_bytes
|
||||||
.globl _Copy_disjoint_words
|
.type _Copy_arrayof_conjoint_bytes, %function
|
||||||
.type _Copy_disjoint_words, %function
|
.globl _Copy_disjoint_words
|
||||||
.globl _Copy_conjoint_words
|
.hidden _Copy_disjoint_words
|
||||||
.type _Copy_conjoint_words, %function
|
.type _Copy_disjoint_words, %function
|
||||||
|
.globl _Copy_conjoint_words
|
||||||
|
.hidden _Copy_conjoint_words
|
||||||
|
.type _Copy_conjoint_words, %function
|
||||||
.globl _Copy_conjoint_jshorts_atomic
|
.globl _Copy_conjoint_jshorts_atomic
|
||||||
.type _Copy_conjoint_jshorts_atomic, %function
|
.hidden _Copy_conjoint_jshorts_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jshorts
|
.type _Copy_conjoint_jshorts_atomic, %function
|
||||||
.type _Copy_arrayof_conjoint_jshorts, %function
|
.globl _Copy_arrayof_conjoint_jshorts
|
||||||
|
.hidden _Copy_arrayof_conjoint_jshorts
|
||||||
|
.type _Copy_arrayof_conjoint_jshorts, %function
|
||||||
.globl _Copy_conjoint_jints_atomic
|
.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
|
.globl _Copy_arrayof_conjoint_jints
|
||||||
.type _Copy_arrayof_conjoint_jints, %function
|
.hidden _Copy_arrayof_conjoint_jints
|
||||||
.globl _Copy_conjoint_jlongs_atomic
|
.type _Copy_arrayof_conjoint_jints, %function
|
||||||
.type _Copy_conjoint_jlongs_atomic, %function
|
.globl _Copy_conjoint_jlongs_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jlongs
|
.hidden _Copy_conjoint_jlongs_atomic
|
||||||
.type _Copy_arrayof_conjoint_jlongs, %function
|
.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
|
from .req r0
|
||||||
to .req r1
|
to .req r1
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.globl SpinPause
|
|
||||||
.type SpinPause, %function
|
|
||||||
SpinPause:
|
SpinPause:
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
@ -70,7 +78,7 @@ _Copy_arrayof_conjoint_bytes:
|
|||||||
# size_t count)
|
# size_t count)
|
||||||
_Copy_disjoint_words:
|
_Copy_disjoint_words:
|
||||||
stmdb sp!, {r3 - r9, ip}
|
stmdb sp!, {r3 - r9, ip}
|
||||||
|
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
beq disjoint_words_finish
|
beq disjoint_words_finish
|
||||||
|
|
||||||
@ -81,17 +89,17 @@ _Copy_disjoint_words:
|
|||||||
.align 3
|
.align 3
|
||||||
dw_f2b_loop_32:
|
dw_f2b_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt dw_f2b_loop_32_finish
|
blt dw_f2b_loop_32_finish
|
||||||
ldmia from!, {r3 - r9, ip}
|
ldmia from!, {r3 - r9, ip}
|
||||||
nop
|
nop
|
||||||
pld [from]
|
pld [from]
|
||||||
stmia to!, {r3 - r9, ip}
|
stmia to!, {r3 - r9, ip}
|
||||||
bgt dw_f2b_loop_32
|
bgt dw_f2b_loop_32
|
||||||
dw_f2b_loop_32_finish:
|
dw_f2b_loop_32_finish:
|
||||||
addlts r2, #32
|
addlts r2, #32
|
||||||
beq disjoint_words_finish
|
beq disjoint_words_finish
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt disjoint_words_small
|
blt disjoint_words_small
|
||||||
ldmia from!, {r3 - r6}
|
ldmia from!, {r3 - r6}
|
||||||
subge r2, r2, #16
|
subge r2, r2, #16
|
||||||
stmia to!, {r3 - r6}
|
stmia to!, {r3 - r6}
|
||||||
@ -116,8 +124,8 @@ disjoint_words_finish:
|
|||||||
_Copy_conjoint_words:
|
_Copy_conjoint_words:
|
||||||
stmdb sp!, {r3 - r9, ip}
|
stmdb sp!, {r3 - r9, ip}
|
||||||
|
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
beq conjoint_words_finish
|
beq conjoint_words_finish
|
||||||
|
|
||||||
pld [from, #0]
|
pld [from, #0]
|
||||||
cmp r2, #12
|
cmp r2, #12
|
||||||
@ -129,17 +137,17 @@ _Copy_conjoint_words:
|
|||||||
.align 3
|
.align 3
|
||||||
cw_f2b_loop_32:
|
cw_f2b_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cw_f2b_loop_32_finish
|
blt cw_f2b_loop_32_finish
|
||||||
ldmia from!, {r3 - r9, ip}
|
ldmia from!, {r3 - r9, ip}
|
||||||
nop
|
nop
|
||||||
pld [from]
|
pld [from]
|
||||||
stmia to!, {r3 - r9, ip}
|
stmia to!, {r3 - r9, ip}
|
||||||
bgt cw_f2b_loop_32
|
bgt cw_f2b_loop_32
|
||||||
cw_f2b_loop_32_finish:
|
cw_f2b_loop_32_finish:
|
||||||
addlts r2, #32
|
addlts r2, #32
|
||||||
beq conjoint_words_finish
|
beq conjoint_words_finish
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt conjoint_words_small
|
blt conjoint_words_small
|
||||||
ldmia from!, {r3 - r6}
|
ldmia from!, {r3 - r6}
|
||||||
subge r2, r2, #16
|
subge r2, r2, #16
|
||||||
stmia to!, {r3 - r6}
|
stmia to!, {r3 - r6}
|
||||||
@ -154,7 +162,7 @@ conjoint_words_small:
|
|||||||
strgt r9, [to], #4
|
strgt r9, [to], #4
|
||||||
b conjoint_words_finish
|
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:
|
cw_b2f_copy:
|
||||||
add from, r2
|
add from, r2
|
||||||
pld [from, #-32]
|
pld [from, #-32]
|
||||||
@ -162,17 +170,17 @@ cw_b2f_copy:
|
|||||||
.align 3
|
.align 3
|
||||||
cw_b2f_loop_32:
|
cw_b2f_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cw_b2f_loop_32_finish
|
blt cw_b2f_loop_32_finish
|
||||||
ldmdb from!, {r3-r9,ip}
|
ldmdb from!, {r3-r9,ip}
|
||||||
nop
|
nop
|
||||||
pld [from, #-32]
|
pld [from, #-32]
|
||||||
stmdb to!, {r3-r9,ip}
|
stmdb to!, {r3-r9,ip}
|
||||||
bgt cw_b2f_loop_32
|
bgt cw_b2f_loop_32
|
||||||
cw_b2f_loop_32_finish:
|
cw_b2f_loop_32_finish:
|
||||||
addlts r2, #32
|
addlts r2, #32
|
||||||
beq conjoint_words_finish
|
beq conjoint_words_finish
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt cw_b2f_copy_small
|
blt cw_b2f_copy_small
|
||||||
ldmdb from!, {r3 - r6}
|
ldmdb from!, {r3 - r6}
|
||||||
subge r2, r2, #16
|
subge r2, r2, #16
|
||||||
stmdb to!, {r3 - r6}
|
stmdb to!, {r3 - r6}
|
||||||
@ -196,8 +204,8 @@ conjoint_words_finish:
|
|||||||
_Copy_conjoint_jshorts_atomic:
|
_Copy_conjoint_jshorts_atomic:
|
||||||
stmdb sp!, {r3 - r9, ip}
|
stmdb sp!, {r3 - r9, ip}
|
||||||
|
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
beq conjoint_shorts_finish
|
beq conjoint_shorts_finish
|
||||||
|
|
||||||
subs r3, to, from
|
subs r3, to, from
|
||||||
cmphi r2, r3
|
cmphi r2, r3
|
||||||
@ -210,11 +218,11 @@ _Copy_conjoint_jshorts_atomic:
|
|||||||
ands r3, from, #3
|
ands r3, from, #3
|
||||||
bne cs_f2b_src_u
|
bne cs_f2b_src_u
|
||||||
|
|
||||||
# Aligned source address
|
# Aligned source address
|
||||||
.align 3
|
.align 3
|
||||||
cs_f2b_loop_32:
|
cs_f2b_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cs_f2b_loop_32_finish
|
blt cs_f2b_loop_32_finish
|
||||||
ldmia from!, {r3 - r9, ip}
|
ldmia from!, {r3 - r9, ip}
|
||||||
nop
|
nop
|
||||||
pld [from]
|
pld [from]
|
||||||
@ -244,14 +252,14 @@ cs_f2b_4:
|
|||||||
strgth r5, [to], #2
|
strgth r5, [to], #2
|
||||||
b conjoint_shorts_finish
|
b conjoint_shorts_finish
|
||||||
|
|
||||||
# Destination not aligned
|
# Destination not aligned
|
||||||
cs_f2b_dest_u:
|
cs_f2b_dest_u:
|
||||||
ldrh r3, [from], #2
|
ldrh r3, [from], #2
|
||||||
subs r2, #2
|
subs r2, #2
|
||||||
strh r3, [to], #2
|
strh r3, [to], #2
|
||||||
beq conjoint_shorts_finish
|
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
|
ands r3, from, #3
|
||||||
beq cs_f2b_loop_32
|
beq cs_f2b_loop_32
|
||||||
|
|
||||||
@ -259,11 +267,11 @@ cs_f2b_src_u:
|
|||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt cs_f2b_8_u
|
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
|
bic from, #3
|
||||||
ldr r7, [from], #4
|
ldr r7, [from], #4
|
||||||
|
|
||||||
# Destination aligned, source not
|
# Destination aligned, source not
|
||||||
mov r8, r2, lsr #4
|
mov r8, r2, lsr #4
|
||||||
.align 3
|
.align 3
|
||||||
cs_f2b_16_u_loop:
|
cs_f2b_16_u_loop:
|
||||||
@ -306,7 +314,7 @@ cs_f2b_4_u:
|
|||||||
strgth r5, [to], #2
|
strgth r5, [to], #2
|
||||||
b conjoint_shorts_finish
|
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:
|
cs_b2f_copy:
|
||||||
add from, r2
|
add from, r2
|
||||||
pld [from, #-32]
|
pld [from, #-32]
|
||||||
@ -319,7 +327,7 @@ cs_b2f_copy:
|
|||||||
.align 3
|
.align 3
|
||||||
cs_b2f_loop_32:
|
cs_b2f_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cs_b2f_loop_32_finish
|
blt cs_b2f_loop_32_finish
|
||||||
ldmdb from!, {r3-r9,ip}
|
ldmdb from!, {r3-r9,ip}
|
||||||
nop
|
nop
|
||||||
pld [from, #-32]
|
pld [from, #-32]
|
||||||
@ -359,16 +367,16 @@ cs_b2f_all_copy:
|
|||||||
strgth r5, [to, #-2]!
|
strgth r5, [to, #-2]!
|
||||||
b conjoint_shorts_finish
|
b conjoint_shorts_finish
|
||||||
|
|
||||||
# Destination not aligned
|
# Destination not aligned
|
||||||
cs_b2f_dest_u:
|
cs_b2f_dest_u:
|
||||||
ldrh r3, [from, #-2]!
|
ldrh r3, [from, #-2]!
|
||||||
strh r3, [to, #-2]!
|
strh r3, [to, #-2]!
|
||||||
sub r2, #2
|
sub r2, #2
|
||||||
# Check source alignment as well
|
# Check source alignment as well
|
||||||
ands r3, from, #3
|
ands r3, from, #3
|
||||||
beq cs_b2f_loop_32
|
beq cs_b2f_loop_32
|
||||||
|
|
||||||
# Source not aligned
|
# Source not aligned
|
||||||
cs_b2f_src_u:
|
cs_b2f_src_u:
|
||||||
bic from, #3
|
bic from, #3
|
||||||
.align 3
|
.align 3
|
||||||
@ -393,7 +401,7 @@ cs_b2f_16_loop_u:
|
|||||||
cs_b2f_16_loop_u_finished:
|
cs_b2f_16_loop_u_finished:
|
||||||
addlts r2, #16
|
addlts r2, #16
|
||||||
ldr r3, [from]
|
ldr r3, [from]
|
||||||
cmp r2, #10
|
cmp r2, #10
|
||||||
blt cs_b2f_2_u_loop
|
blt cs_b2f_2_u_loop
|
||||||
ldmdb from!, {r4 - r5}
|
ldmdb from!, {r4 - r5}
|
||||||
mov r6, r4, lsr #16
|
mov r6, r4, lsr #16
|
||||||
@ -402,7 +410,7 @@ cs_b2f_16_loop_u_finished:
|
|||||||
orr r7, r7, r3, lsl #16
|
orr r7, r7, r3, lsl #16
|
||||||
stmdb to!, {r6-r7}
|
stmdb to!, {r6-r7}
|
||||||
sub r2, #8
|
sub r2, #8
|
||||||
.align 3
|
.align 3
|
||||||
cs_b2f_2_u_loop:
|
cs_b2f_2_u_loop:
|
||||||
subs r2, #2
|
subs r2, #2
|
||||||
ldrh r3, [from], #-2
|
ldrh r3, [from], #-2
|
||||||
@ -426,7 +434,7 @@ _Copy_arrayof_conjoint_jshorts:
|
|||||||
_Copy_conjoint_jints_atomic:
|
_Copy_conjoint_jints_atomic:
|
||||||
_Copy_arrayof_conjoint_jints:
|
_Copy_arrayof_conjoint_jints:
|
||||||
swi 0x9f0001
|
swi 0x9f0001
|
||||||
|
|
||||||
# Support for void Copy::conjoint_jlongs_atomic(jlong* from,
|
# Support for void Copy::conjoint_jlongs_atomic(jlong* from,
|
||||||
# jlong* to,
|
# jlong* to,
|
||||||
# size_t count)
|
# size_t count)
|
||||||
@ -434,8 +442,8 @@ _Copy_conjoint_jlongs_atomic:
|
|||||||
_Copy_arrayof_conjoint_jlongs:
|
_Copy_arrayof_conjoint_jlongs:
|
||||||
stmdb sp!, {r3 - r9, ip}
|
stmdb sp!, {r3 - r9, ip}
|
||||||
|
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
beq conjoint_longs_finish
|
beq conjoint_longs_finish
|
||||||
|
|
||||||
pld [from, #0]
|
pld [from, #0]
|
||||||
cmp r2, #24
|
cmp r2, #24
|
||||||
@ -447,10 +455,10 @@ _Copy_arrayof_conjoint_jlongs:
|
|||||||
.align 3
|
.align 3
|
||||||
cl_f2b_loop_32:
|
cl_f2b_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cl_f2b_loop_32_finish
|
blt cl_f2b_loop_32_finish
|
||||||
ldmia from!, {r3 - r9, ip}
|
ldmia from!, {r3 - r9, ip}
|
||||||
nop
|
nop
|
||||||
pld [from]
|
pld [from]
|
||||||
stmia to!, {r3 - r9, ip}
|
stmia to!, {r3 - r9, ip}
|
||||||
bgt cl_f2b_loop_32
|
bgt cl_f2b_loop_32
|
||||||
cl_f2b_loop_32_finish:
|
cl_f2b_loop_32_finish:
|
||||||
@ -458,21 +466,21 @@ cl_f2b_loop_32_finish:
|
|||||||
beq conjoint_longs_finish
|
beq conjoint_longs_finish
|
||||||
conjoint_longs_small:
|
conjoint_longs_small:
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt cl_f2b_copy_8
|
blt cl_f2b_copy_8
|
||||||
bgt cl_f2b_copy_24
|
bgt cl_f2b_copy_24
|
||||||
ldmia from!, {r3 - r6}
|
ldmia from!, {r3 - r6}
|
||||||
stmia to!, {r3 - r6}
|
stmia to!, {r3 - r6}
|
||||||
b conjoint_longs_finish
|
b conjoint_longs_finish
|
||||||
cl_f2b_copy_8:
|
cl_f2b_copy_8:
|
||||||
ldmia from!, {r3 - r4}
|
ldmia from!, {r3 - r4}
|
||||||
stmia to!, {r3 - r4}
|
stmia to!, {r3 - r4}
|
||||||
b conjoint_longs_finish
|
b conjoint_longs_finish
|
||||||
cl_f2b_copy_24:
|
cl_f2b_copy_24:
|
||||||
ldmia from!, {r3 - r8}
|
ldmia from!, {r3 - r8}
|
||||||
stmia to!, {r3 - r8}
|
stmia to!, {r3 - r8}
|
||||||
b conjoint_longs_finish
|
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:
|
cl_b2f_copy:
|
||||||
add from, r2
|
add from, r2
|
||||||
pld [from, #-32]
|
pld [from, #-32]
|
||||||
@ -480,31 +488,29 @@ cl_b2f_copy:
|
|||||||
.align 3
|
.align 3
|
||||||
cl_b2f_loop_32:
|
cl_b2f_loop_32:
|
||||||
subs r2, #32
|
subs r2, #32
|
||||||
blt cl_b2f_loop_32_finish
|
blt cl_b2f_loop_32_finish
|
||||||
ldmdb from!, {r3 - r9, ip}
|
ldmdb from!, {r3 - r9, ip}
|
||||||
nop
|
nop
|
||||||
pld [from]
|
pld [from]
|
||||||
stmdb to!, {r3 - r9, ip}
|
stmdb to!, {r3 - r9, ip}
|
||||||
bgt cl_b2f_loop_32
|
bgt cl_b2f_loop_32
|
||||||
cl_b2f_loop_32_finish:
|
cl_b2f_loop_32_finish:
|
||||||
addlts r2, #32
|
addlts r2, #32
|
||||||
beq conjoint_longs_finish
|
beq conjoint_longs_finish
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
blt cl_b2f_copy_8
|
blt cl_b2f_copy_8
|
||||||
bgt cl_b2f_copy_24
|
bgt cl_b2f_copy_24
|
||||||
ldmdb from!, {r3 - r6}
|
ldmdb from!, {r3 - r6}
|
||||||
stmdb to!, {r3 - r6}
|
stmdb to!, {r3 - r6}
|
||||||
b conjoint_longs_finish
|
b conjoint_longs_finish
|
||||||
cl_b2f_copy_8:
|
cl_b2f_copy_8:
|
||||||
ldmdb from!, {r3 - r4}
|
ldmdb from!, {r3 - r4}
|
||||||
stmdb to!, {r3 - r4}
|
stmdb to!, {r3 - r4}
|
||||||
b conjoint_longs_finish
|
b conjoint_longs_finish
|
||||||
cl_b2f_copy_24:
|
cl_b2f_copy_24:
|
||||||
ldmdb from!, {r3 - r8}
|
ldmdb from!, {r3 - r8}
|
||||||
stmdb to!, {r3 - r8}
|
stmdb to!, {r3 - r8}
|
||||||
|
|
||||||
conjoint_longs_finish:
|
conjoint_longs_finish:
|
||||||
ldmia sp!, {r3 - r9, ip}
|
ldmia sp!, {r3 - r9, ip}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,11 @@
|
|||||||
.globl SafeFetch32_impl
|
.globl SafeFetch32_impl
|
||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.globl _SafeFetch32_continuation
|
||||||
|
|
||||||
|
.hidden SafeFetch32_impl
|
||||||
|
.hidden _SafeFetch32_fault
|
||||||
|
.hidden _SafeFetch32_continuation
|
||||||
|
|
||||||
.type SafeFetch32_impl, %function
|
.type SafeFetch32_impl, %function
|
||||||
|
|
||||||
# Support for int SafeFetch32(int* address, int defaultval);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,13 @@
|
|||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# r3 : address
|
# r3 : address
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,13 @@
|
|||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# x10 (a0) : address
|
# x10 (a0) : address
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 SAP SE. All rights reserved.
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,6 +30,13 @@
|
|||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
# r2 : address
|
# r2 : address
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -21,28 +21,41 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
.globl SpinPause
|
||||||
|
|
||||||
# NOTE WELL! The _Copy functions are called directly
|
# NOTE WELL! The _Copy functions are called directly
|
||||||
# from server-compiler-generated code via CallLeafNoFP,
|
# from server-compiler-generated code via CallLeafNoFP,
|
||||||
# which means that they *must* either not use floating
|
# which means that they *must* either not use floating
|
||||||
# point or use it in the same manner as does the server
|
# point or use it in the same manner as does the server
|
||||||
# compiler.
|
# compiler.
|
||||||
|
|
||||||
.globl _Copy_arrayof_conjoint_bytes
|
.globl _Copy_arrayof_conjoint_bytes
|
||||||
.globl _Copy_conjoint_jshorts_atomic
|
.globl _Copy_conjoint_jshorts_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jshorts
|
.globl _Copy_arrayof_conjoint_jshorts
|
||||||
.globl _Copy_conjoint_jints_atomic
|
.globl _Copy_conjoint_jints_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jints
|
.globl _Copy_arrayof_conjoint_jints
|
||||||
.globl _Copy_conjoint_jlongs_atomic
|
.globl _Copy_conjoint_jlongs_atomic
|
||||||
.globl _mmx_Copy_arrayof_conjoint_jshorts
|
.globl _mmx_Copy_arrayof_conjoint_jshorts
|
||||||
|
|
||||||
.globl _Atomic_cmpxchg_long
|
.globl _Atomic_cmpxchg_long
|
||||||
.globl _Atomic_move_long
|
.globl _Atomic_move_long
|
||||||
|
|
||||||
.text
|
.hidden SpinPause
|
||||||
|
|
||||||
.globl SpinPause
|
.hidden _Copy_arrayof_conjoint_bytes
|
||||||
.type SpinPause,@function
|
.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
|
.p2align 4,,15
|
||||||
SpinPause:
|
SpinPause:
|
||||||
rep
|
rep
|
||||||
@ -55,7 +68,7 @@ SpinPause:
|
|||||||
# size_t count)
|
# size_t count)
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_bytes,@function
|
.type _Copy_arrayof_conjoint_bytes,@function
|
||||||
_Copy_arrayof_conjoint_bytes:
|
_Copy_arrayof_conjoint_bytes:
|
||||||
pushl %esi
|
pushl %esi
|
||||||
movl 4+12(%esp),%ecx # count
|
movl 4+12(%esp),%ecx # count
|
||||||
@ -115,7 +128,7 @@ acb_CopyLeft:
|
|||||||
jbe 2f # <= 32 dwords
|
jbe 2f # <= 32 dwords
|
||||||
rep; smovl
|
rep; smovl
|
||||||
jmp 4f
|
jmp 4f
|
||||||
.space 8
|
.space 8
|
||||||
2: subl %esi,%edi
|
2: subl %esi,%edi
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
3: movl (%esi),%edx
|
3: movl (%esi),%edx
|
||||||
@ -131,7 +144,7 @@ acb_CopyLeft:
|
|||||||
addl $3,%esi
|
addl $3,%esi
|
||||||
6: movb (%esi),%dl
|
6: movb (%esi),%dl
|
||||||
movb %dl,(%edi,%esi,1)
|
movb %dl,(%edi,%esi,1)
|
||||||
subl $1,%esi
|
subl $1,%esi
|
||||||
subl $1,%ecx
|
subl $1,%ecx
|
||||||
jnz 6b
|
jnz 6b
|
||||||
7: cld
|
7: cld
|
||||||
@ -143,7 +156,7 @@ acb_CopyLeft:
|
|||||||
# void* to,
|
# void* to,
|
||||||
# size_t count)
|
# size_t count)
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_conjoint_jshorts_atomic,@function
|
.type _Copy_conjoint_jshorts_atomic,@function
|
||||||
_Copy_conjoint_jshorts_atomic:
|
_Copy_conjoint_jshorts_atomic:
|
||||||
pushl %esi
|
pushl %esi
|
||||||
movl 4+12(%esp),%ecx # count
|
movl 4+12(%esp),%ecx # count
|
||||||
@ -230,7 +243,7 @@ cs_CopyLeft:
|
|||||||
# void* to,
|
# void* to,
|
||||||
# size_t count)
|
# size_t count)
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_jshorts,@function
|
.type _Copy_arrayof_conjoint_jshorts,@function
|
||||||
_Copy_arrayof_conjoint_jshorts:
|
_Copy_arrayof_conjoint_jshorts:
|
||||||
pushl %esi
|
pushl %esi
|
||||||
movl 4+12(%esp),%ecx # count
|
movl 4+12(%esp),%ecx # count
|
||||||
@ -307,8 +320,8 @@ acs_CopyLeft:
|
|||||||
# Equivalent to
|
# Equivalent to
|
||||||
# arrayof_conjoint_jints
|
# arrayof_conjoint_jints
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_conjoint_jints_atomic,@function
|
.type _Copy_conjoint_jints_atomic,@function
|
||||||
.type _Copy_arrayof_conjoint_jints,@function
|
.type _Copy_arrayof_conjoint_jints,@function
|
||||||
_Copy_conjoint_jints_atomic:
|
_Copy_conjoint_jints_atomic:
|
||||||
_Copy_arrayof_conjoint_jints:
|
_Copy_arrayof_conjoint_jints:
|
||||||
pushl %esi
|
pushl %esi
|
||||||
@ -384,7 +397,7 @@ ci_CopyLeft:
|
|||||||
# }
|
# }
|
||||||
*/
|
*/
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_conjoint_jlongs_atomic,@function
|
.type _Copy_conjoint_jlongs_atomic,@function
|
||||||
_Copy_conjoint_jlongs_atomic:
|
_Copy_conjoint_jlongs_atomic:
|
||||||
movl 4+8(%esp),%ecx # count
|
movl 4+8(%esp),%ecx # count
|
||||||
movl 4+0(%esp),%eax # from
|
movl 4+0(%esp),%eax # from
|
||||||
@ -413,7 +426,7 @@ cla_CopyLeft:
|
|||||||
# void* to,
|
# void* to,
|
||||||
# size_t count)
|
# size_t count)
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _mmx_Copy_arrayof_conjoint_jshorts,@function
|
.type _mmx_Copy_arrayof_conjoint_jshorts,@function
|
||||||
_mmx_Copy_arrayof_conjoint_jshorts:
|
_mmx_Copy_arrayof_conjoint_jshorts:
|
||||||
pushl %esi
|
pushl %esi
|
||||||
movl 4+12(%esp),%ecx
|
movl 4+12(%esp),%ecx
|
||||||
@ -465,8 +478,8 @@ mmx_acs_CopyRight:
|
|||||||
cmpl $16,%ecx
|
cmpl $16,%ecx
|
||||||
jge 4b
|
jge 4b
|
||||||
emms
|
emms
|
||||||
testl %ecx,%ecx
|
testl %ecx,%ecx
|
||||||
ja 1b
|
ja 1b
|
||||||
5: andl $1,%eax
|
5: andl $1,%eax
|
||||||
je 7f
|
je 7f
|
||||||
6: movw (%esi),%dx
|
6: movw (%esi),%dx
|
||||||
@ -511,7 +524,7 @@ mmx_acs_CopyLeft:
|
|||||||
# jlong exchange_value)
|
# jlong exchange_value)
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Atomic_cmpxchg_long,@function
|
.type _Atomic_cmpxchg_long,@function
|
||||||
_Atomic_cmpxchg_long:
|
_Atomic_cmpxchg_long:
|
||||||
# 8(%esp) : return PC
|
# 8(%esp) : return PC
|
||||||
pushl %ebx # 4(%esp) : old %ebx
|
pushl %ebx # 4(%esp) : old %ebx
|
||||||
@ -530,7 +543,7 @@ _Atomic_cmpxchg_long:
|
|||||||
# Support for jlong Atomic::load and Atomic::store.
|
# Support for jlong Atomic::load and Atomic::store.
|
||||||
# void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst)
|
# void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst)
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Atomic_move_long,@function
|
.type _Atomic_move_long,@function
|
||||||
_Atomic_move_long:
|
_Atomic_move_long:
|
||||||
movl 4(%esp), %eax # src
|
movl 4(%esp), %eax # src
|
||||||
fildll (%eax)
|
fildll (%eax)
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -21,24 +21,34 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
.globl SpinPause
|
||||||
|
|
||||||
# NOTE WELL! The _Copy functions are called directly
|
# NOTE WELL! The _Copy functions are called directly
|
||||||
# from server-compiler-generated code via CallLeafNoFP,
|
# from server-compiler-generated code via CallLeafNoFP,
|
||||||
# which means that they *must* either not use floating
|
# which means that they *must* either not use floating
|
||||||
# point or use it in the same manner as does the server
|
# point or use it in the same manner as does the server
|
||||||
# compiler.
|
# compiler.
|
||||||
|
|
||||||
.globl _Copy_arrayof_conjoint_bytes
|
.globl _Copy_arrayof_conjoint_bytes
|
||||||
.globl _Copy_arrayof_conjoint_jshorts
|
.globl _Copy_arrayof_conjoint_jshorts
|
||||||
.globl _Copy_conjoint_jshorts_atomic
|
.globl _Copy_conjoint_jshorts_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jints
|
.globl _Copy_arrayof_conjoint_jints
|
||||||
.globl _Copy_conjoint_jints_atomic
|
.globl _Copy_conjoint_jints_atomic
|
||||||
.globl _Copy_arrayof_conjoint_jlongs
|
.globl _Copy_arrayof_conjoint_jlongs
|
||||||
.globl _Copy_conjoint_jlongs_atomic
|
.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
|
.align 16
|
||||||
.type SpinPause,@function
|
.type SpinPause,@function
|
||||||
SpinPause:
|
SpinPause:
|
||||||
@ -55,7 +65,7 @@ SpinPause:
|
|||||||
# rdx - count, treated as ssize_t
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_bytes,@function
|
.type _Copy_arrayof_conjoint_bytes,@function
|
||||||
_Copy_arrayof_conjoint_bytes:
|
_Copy_arrayof_conjoint_bytes:
|
||||||
movq %rdx,%r8 # byte count
|
movq %rdx,%r8 # byte count
|
||||||
shrq $3,%rdx # qword count
|
shrq $3,%rdx # qword count
|
||||||
@ -63,7 +73,7 @@ _Copy_arrayof_conjoint_bytes:
|
|||||||
leaq -1(%rdi,%r8,1),%rax # from + bcount*1 - 1
|
leaq -1(%rdi,%r8,1),%rax # from + bcount*1 - 1
|
||||||
jbe acb_CopyRight
|
jbe acb_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acb_CopyLeft
|
jbe acb_CopyLeft
|
||||||
acb_CopyRight:
|
acb_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_jshorts,@function
|
.type _Copy_arrayof_conjoint_jshorts,@function
|
||||||
.type _Copy_conjoint_jshorts_atomic,@function
|
.type _Copy_conjoint_jshorts_atomic,@function
|
||||||
_Copy_arrayof_conjoint_jshorts:
|
_Copy_arrayof_conjoint_jshorts:
|
||||||
_Copy_conjoint_jshorts_atomic:
|
_Copy_conjoint_jshorts_atomic:
|
||||||
movq %rdx,%r8 # word count
|
movq %rdx,%r8 # word count
|
||||||
@ -167,7 +177,7 @@ _Copy_conjoint_jshorts_atomic:
|
|||||||
leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2
|
leaq -2(%rdi,%r8,2),%rax # from + wcount*2 - 2
|
||||||
jbe acs_CopyRight
|
jbe acs_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acs_CopyLeft
|
jbe acs_CopyLeft
|
||||||
acs_CopyRight:
|
acs_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_jints,@function
|
.type _Copy_arrayof_conjoint_jints,@function
|
||||||
.type _Copy_conjoint_jints_atomic,@function
|
.type _Copy_conjoint_jints_atomic,@function
|
||||||
_Copy_arrayof_conjoint_jints:
|
_Copy_arrayof_conjoint_jints:
|
||||||
_Copy_conjoint_jints_atomic:
|
_Copy_conjoint_jints_atomic:
|
||||||
movq %rdx,%r8 # dword count
|
movq %rdx,%r8 # dword count
|
||||||
@ -257,7 +267,7 @@ _Copy_conjoint_jints_atomic:
|
|||||||
leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4
|
leaq -4(%rdi,%r8,4),%rax # from + dcount*4 - 4
|
||||||
jbe aci_CopyRight
|
jbe aci_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe aci_CopyLeft
|
jbe aci_CopyLeft
|
||||||
aci_CopyRight:
|
aci_CopyRight:
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + qcount*8 - 8
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + 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
|
# rdx - count, treated as ssize_t
|
||||||
#
|
#
|
||||||
.p2align 4,,15
|
.p2align 4,,15
|
||||||
.type _Copy_arrayof_conjoint_jlongs,@function
|
.type _Copy_arrayof_conjoint_jlongs,@function
|
||||||
.type _Copy_conjoint_jlongs_atomic,@function
|
.type _Copy_conjoint_jlongs_atomic,@function
|
||||||
_Copy_arrayof_conjoint_jlongs:
|
_Copy_arrayof_conjoint_jlongs:
|
||||||
_Copy_conjoint_jlongs_atomic:
|
_Copy_conjoint_jlongs_atomic:
|
||||||
cmpq %rdi,%rsi
|
cmpq %rdi,%rsi
|
||||||
leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8
|
leaq -8(%rdi,%rdx,8),%rax # from + count*8 - 8
|
||||||
jbe acl_CopyRight
|
jbe acl_CopyRight
|
||||||
cmpq %rax,%rsi
|
cmpq %rax,%rsi
|
||||||
jbe acl_CopyLeft
|
jbe acl_CopyLeft
|
||||||
acl_CopyRight:
|
acl_CopyRight:
|
||||||
leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8
|
leaq -8(%rsi,%rdx,8),%rcx # to + count*8 - 8
|
||||||
negq %rdx
|
negq %rdx
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022 SAP SE. All rights reserved.
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,7 +25,11 @@
|
|||||||
.globl _SafeFetch32_fault
|
.globl _SafeFetch32_fault
|
||||||
.globl _SafeFetch32_continuation
|
.globl _SafeFetch32_continuation
|
||||||
|
|
||||||
.text
|
.hidden SafeFetch32_impl
|
||||||
|
.hidden _SafeFetch32_fault
|
||||||
|
.hidden _SafeFetch32_continuation
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
# Support for int SafeFetch32(int* address, int defaultval);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
#
|
#
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022 SAP SE. All rights reserved.
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,14 @@
|
|||||||
.globl _SafeFetch32_continuation
|
.globl _SafeFetch32_continuation
|
||||||
.globl _SafeFetchN_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);
|
# Support for int SafeFetch32(int* address, int defaultval);
|
||||||
|
@ -70,6 +70,11 @@
|
|||||||
#include "jfr/jfr.hpp"
|
#include "jfr/jfr.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(TARGET_COMPILER_gcc)
|
||||||
|
#undef JNIEXPORT
|
||||||
|
#define JNIEXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
JVMCIKlassHandle::JVMCIKlassHandle(Thread* thread, Klass* klass) {
|
JVMCIKlassHandle::JVMCIKlassHandle(Thread* thread, Klass* klass) {
|
||||||
_thread = thread;
|
_thread = thread;
|
||||||
_klass = klass;
|
_klass = klass;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -47,6 +47,11 @@
|
|||||||
#include "gc/g1/g1ThreadLocalData.hpp"
|
#include "gc/g1/g1ThreadLocalData.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(TARGET_COMPILER_gcc)
|
||||||
|
#undef JNIEXPORT
|
||||||
|
#define JNIEXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VM_STRUCTS(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field) \
|
#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_start_offset, int) \
|
||||||
static_field(CompilerToVM::Data, Klass_vtable_length_offset, int) \
|
static_field(CompilerToVM::Data, Klass_vtable_length_offset, int) \
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,6 +32,12 @@
|
|||||||
#include "utilities/debug.hpp"
|
#include "utilities/debug.hpp"
|
||||||
#include "utilities/vmError.hpp"
|
#include "utilities/vmError.hpp"
|
||||||
|
|
||||||
|
#if defined(TARGET_COMPILER_gcc)
|
||||||
|
#define HIDDEN __attribute__ ((visibility ("hidden")))
|
||||||
|
#else
|
||||||
|
#define HIDDEN
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace AccessInternal {
|
namespace AccessInternal {
|
||||||
// These forward copying calls to Copy without exposing the Copy type in headers unnecessarily
|
// These forward copying calls to Copy without exposing the Copy type in headers unnecessarily
|
||||||
|
|
||||||
@ -58,102 +64,102 @@ namespace AccessInternal {
|
|||||||
reinterpret_cast<HeapWord*>(dst), length);
|
reinterpret_cast<HeapWord*>(dst), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jboolean>(jboolean* src, jboolean* dst, size_t length) {
|
void arraycopy_conjoint<jboolean>(jboolean* src, jboolean* dst, size_t length) {
|
||||||
Copy::conjoint_jbytes(reinterpret_cast<jbyte*>(src), reinterpret_cast<jbyte*>(dst), length);
|
Copy::conjoint_jbytes(reinterpret_cast<jbyte*>(src), reinterpret_cast<jbyte*>(dst), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
void arraycopy_conjoint<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
||||||
Copy::conjoint_jbytes(src, dst, length);
|
Copy::conjoint_jbytes(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jchar>(jchar* src, jchar* dst, size_t length) {
|
void arraycopy_conjoint<jchar>(jchar* src, jchar* dst, size_t length) {
|
||||||
Copy::conjoint_jshorts_atomic(reinterpret_cast<jshort*>(src), reinterpret_cast<jshort*>(dst), length);
|
Copy::conjoint_jshorts_atomic(reinterpret_cast<jshort*>(src), reinterpret_cast<jshort*>(dst), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jshort>(jshort* src, jshort* dst, size_t length) {
|
void arraycopy_conjoint<jshort>(jshort* src, jshort* dst, size_t length) {
|
||||||
Copy::conjoint_jshorts_atomic(src, dst, length);
|
Copy::conjoint_jshorts_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jint>(jint* src, jint* dst, size_t length) {
|
void arraycopy_conjoint<jint>(jint* src, jint* dst, size_t length) {
|
||||||
Copy::conjoint_jints_atomic(src, dst, length);
|
Copy::conjoint_jints_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jfloat>(jfloat* src, jfloat* dst, size_t length) {
|
void arraycopy_conjoint<jfloat>(jfloat* src, jfloat* dst, size_t length) {
|
||||||
Copy::conjoint_jints_atomic(reinterpret_cast<jint*>(src), reinterpret_cast<jint*>(dst), length);
|
Copy::conjoint_jints_atomic(reinterpret_cast<jint*>(src), reinterpret_cast<jint*>(dst), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jlong>(jlong* src, jlong* dst, size_t length) {
|
void arraycopy_conjoint<jlong>(jlong* src, jlong* dst, size_t length) {
|
||||||
Copy::conjoint_jlongs_atomic(src, dst, length);
|
Copy::conjoint_jlongs_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<jdouble>(jdouble* src, jdouble* dst, size_t length) {
|
void arraycopy_conjoint<jdouble>(jdouble* src, jdouble* dst, size_t length) {
|
||||||
Copy::conjoint_jlongs_atomic(reinterpret_cast<jlong*>(src), reinterpret_cast<jlong*>(dst), length);
|
Copy::conjoint_jlongs_atomic(reinterpret_cast<jlong*>(src), reinterpret_cast<jlong*>(dst), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_arrayof_conjoint<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
void arraycopy_arrayof_conjoint<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
||||||
Copy::arrayof_conjoint_jbytes(reinterpret_cast<HeapWord*>(src),
|
Copy::arrayof_conjoint_jbytes(reinterpret_cast<HeapWord*>(src),
|
||||||
reinterpret_cast<HeapWord*>(dst),
|
reinterpret_cast<HeapWord*>(dst),
|
||||||
length);
|
length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_arrayof_conjoint<jshort>(jshort* src, jshort* dst, size_t length) {
|
void arraycopy_arrayof_conjoint<jshort>(jshort* src, jshort* dst, size_t length) {
|
||||||
Copy::arrayof_conjoint_jshorts(reinterpret_cast<HeapWord*>(src),
|
Copy::arrayof_conjoint_jshorts(reinterpret_cast<HeapWord*>(src),
|
||||||
reinterpret_cast<HeapWord*>(dst),
|
reinterpret_cast<HeapWord*>(dst),
|
||||||
length);
|
length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_arrayof_conjoint<jint>(jint* src, jint* dst, size_t length) {
|
void arraycopy_arrayof_conjoint<jint>(jint* src, jint* dst, size_t length) {
|
||||||
Copy::arrayof_conjoint_jints(reinterpret_cast<HeapWord*>(src),
|
Copy::arrayof_conjoint_jints(reinterpret_cast<HeapWord*>(src),
|
||||||
reinterpret_cast<HeapWord*>(dst),
|
reinterpret_cast<HeapWord*>(dst),
|
||||||
length);
|
length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_arrayof_conjoint<jlong>(jlong* src, jlong* dst, size_t length) {
|
void arraycopy_arrayof_conjoint<jlong>(jlong* src, jlong* dst, size_t length) {
|
||||||
Copy::arrayof_conjoint_jlongs(reinterpret_cast<HeapWord*>(src),
|
Copy::arrayof_conjoint_jlongs(reinterpret_cast<HeapWord*>(src),
|
||||||
reinterpret_cast<HeapWord*>(dst),
|
reinterpret_cast<HeapWord*>(dst),
|
||||||
length);
|
length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint<void>(void* src, void* dst, size_t length) {
|
void arraycopy_conjoint<void>(void* src, void* dst, size_t length) {
|
||||||
Copy::conjoint_jbytes(reinterpret_cast<jbyte*>(src),
|
Copy::conjoint_jbytes(reinterpret_cast<jbyte*>(src),
|
||||||
reinterpret_cast<jbyte*>(dst),
|
reinterpret_cast<jbyte*>(dst),
|
||||||
length);
|
length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint_atomic<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
void arraycopy_conjoint_atomic<jbyte>(jbyte* src, jbyte* dst, size_t length) {
|
||||||
Copy::conjoint_jbytes_atomic(src, dst, length);
|
Copy::conjoint_jbytes_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint_atomic<jshort>(jshort* src, jshort* dst, size_t length) {
|
void arraycopy_conjoint_atomic<jshort>(jshort* src, jshort* dst, size_t length) {
|
||||||
Copy::conjoint_jshorts_atomic(src, dst, length);
|
Copy::conjoint_jshorts_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint_atomic<jint>(jint* src, jint* dst, size_t length) {
|
void arraycopy_conjoint_atomic<jint>(jint* src, jint* dst, size_t length) {
|
||||||
Copy::conjoint_jints_atomic(src, dst, length);
|
Copy::conjoint_jints_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint_atomic<jlong>(jlong* src, jlong* dst, size_t length) {
|
void arraycopy_conjoint_atomic<jlong>(jlong* src, jlong* dst, size_t length) {
|
||||||
Copy::conjoint_jlongs_atomic(src, dst, length);
|
Copy::conjoint_jlongs_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<> HIDDEN
|
||||||
void arraycopy_conjoint_atomic<void>(void* src, void* dst, size_t length) {
|
void arraycopy_conjoint_atomic<void>(void* src, void* dst, size_t length) {
|
||||||
Copy::conjoint_memory_atomic(src, dst, length);
|
Copy::conjoint_memory_atomic(src, dst, length);
|
||||||
}
|
}
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -67,6 +67,11 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#if defined(TARGET_COMPILER_gcc)
|
||||||
|
#undef JNIEXPORT
|
||||||
|
#define JNIEXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
// Support for showing register content on asserts/guarantees.
|
// Support for showing register content on asserts/guarantees.
|
||||||
#ifdef CAN_SHOW_REGISTERS_ON_ASSERT
|
#ifdef CAN_SHOW_REGISTERS_ON_ASSERT
|
||||||
static char g_dummy;
|
static char g_dummy;
|
||||||
|
Loading…
Reference in New Issue
Block a user