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