git: openjdk/jdk: 8295044: Implementation of Foreign Function and Memory API (Second Preview)

Maurizio Cimadamore mcimadamore at openjdk.org
Mon Dec 5 13:52:48 UTC 2022


Changeset: 73baadce
Author:    Maurizio Cimadamore <mcimadamore at openjdk.org>
Date:      2022-12-05 13:49:53 +0000
URL:       https://git.openjdk.org/jdk/commit/73baadceb60029f6340c1327118aeb59971c2434

8295044: Implementation of Foreign Function and Memory API (Second Preview)

Co-authored-by: Jorn Vernee <jvernee at openjdk.org>
Co-authored-by: Per Minborg <pminborg at openjdk.org>
Co-authored-by: Maurizio Cimadamore <mcimadamore at openjdk.org>
Reviewed-by: jvernee, pminborg, psandoz, alanb, sundar

! src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp
! src/hotspot/cpu/x86/downcallLinker_x86_64.cpp
! src/hotspot/share/ci/ciField.cpp
! src/java.base/share/classes/java/lang/Module.java
! src/java.base/share/classes/java/lang/ModuleLayer.java
! src/java.base/share/classes/java/lang/System.java
- src/java.base/share/classes/java/lang/foreign/AbstractLayout.java
- src/java.base/share/classes/java/lang/foreign/Addressable.java
+ src/java.base/share/classes/java/lang/foreign/Arena.java
! src/java.base/share/classes/java/lang/foreign/FunctionDescriptor.java
! src/java.base/share/classes/java/lang/foreign/GroupLayout.java
! src/java.base/share/classes/java/lang/foreign/Linker.java
- src/java.base/share/classes/java/lang/foreign/MemoryAddress.java
! src/java.base/share/classes/java/lang/foreign/MemoryLayout.java
! src/java.base/share/classes/java/lang/foreign/MemorySegment.java
- src/java.base/share/classes/java/lang/foreign/MemorySession.java
! src/java.base/share/classes/java/lang/foreign/PaddingLayout.java
! src/java.base/share/classes/java/lang/foreign/SegmentAllocator.java
+ src/java.base/share/classes/java/lang/foreign/SegmentScope.java
! src/java.base/share/classes/java/lang/foreign/SequenceLayout.java
+ src/java.base/share/classes/java/lang/foreign/StructLayout.java
! src/java.base/share/classes/java/lang/foreign/SymbolLookup.java
+ src/java.base/share/classes/java/lang/foreign/UnionLayout.java
! src/java.base/share/classes/java/lang/foreign/VaList.java
! src/java.base/share/classes/java/lang/foreign/ValueLayout.java
! src/java.base/share/classes/java/lang/foreign/package-info.java
! src/java.base/share/classes/java/lang/invoke/MethodHandles.java
! src/java.base/share/classes/java/lang/invoke/NativeMethodHandle.java
! src/java.base/share/classes/java/lang/invoke/X-VarHandleByteArrayView.java.template
! src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template
! src/java.base/share/classes/java/nio/channels/FileChannel.java
! src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java
! src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java
- src/java.base/share/classes/jdk/internal/foreign/ArenaAllocator.java
! src/java.base/share/classes/jdk/internal/foreign/CABI.java
! src/java.base/share/classes/jdk/internal/foreign/ConfinedSession.java
+ src/java.base/share/classes/jdk/internal/foreign/FunctionDescriptorImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/GlobalSession.java
! src/java.base/share/classes/jdk/internal/foreign/HeapMemorySegmentImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/ImplicitSession.java
! src/java.base/share/classes/jdk/internal/foreign/LayoutPath.java
! src/java.base/share/classes/jdk/internal/foreign/MappedMemorySegmentImpl.java
- src/java.base/share/classes/jdk/internal/foreign/MemoryAddressImpl.java
! src/java.base/share/classes/jdk/internal/foreign/MemorySessionImpl.java
! src/java.base/share/classes/jdk/internal/foreign/NativeMemorySegmentImpl.java
! src/java.base/share/classes/jdk/internal/foreign/PlatformLayouts.java
- src/java.base/share/classes/jdk/internal/foreign/Scoped.java
! src/java.base/share/classes/jdk/internal/foreign/SharedSession.java
+ src/java.base/share/classes/jdk/internal/foreign/SlicingAllocator.java
! src/java.base/share/classes/jdk/internal/foreign/SystemLookup.java
! src/java.base/share/classes/jdk/internal/foreign/Utils.java
! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java
! src/java.base/share/classes/jdk/internal/foreign/abi/Binding.java
! src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java
! src/java.base/share/classes/jdk/internal/foreign/abi/CallingSequenceBuilder.java
! src/java.base/share/classes/jdk/internal/foreign/abi/DowncallLinker.java
+ src/java.base/share/classes/jdk/internal/foreign/abi/LinkerOptions.java
! src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java
! src/java.base/share/classes/jdk/internal/foreign/abi/SoftReferenceCache.java
! src/java.base/share/classes/jdk/internal/foreign/abi/UpcallLinker.java
! src/java.base/share/classes/jdk/internal/foreign/abi/UpcallStubs.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/TypeClass.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/linux/LinuxAArch64Linker.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/linux/LinuxAArch64VaList.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64Linker.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64VaList.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/CallArranger.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/SysVVaList.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/SysVx64Linker.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/TypeClass.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/CallArranger.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/TypeClass.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/WinVaList.java
! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/Windowsx64Linker.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/AbstractGroupLayout.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/AbstractLayout.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/MemoryLayoutUtil.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/PaddingLayoutImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/SequenceLayoutImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/StructLayoutImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/UnionLayoutImpl.java
+ src/java.base/share/classes/jdk/internal/foreign/layout/ValueLayouts.java
! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java
! src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java
! src/java.base/share/classes/jdk/internal/reflect/Reflection.java
! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java
! test/hotspot/jtreg/gc/shenandoah/compiler/TestLinkToNativeRBP.java
! test/hotspot/jtreg/runtime/ClassFile/ClassFileVersionTest.java
! test/jdk/com/sun/jdi/JdbLastErrorTest.java
! test/jdk/java/foreign/CallGeneratorHelper.java
! test/jdk/java/foreign/LibraryLookupTest.java
+ test/jdk/java/foreign/MemoryLayoutPrincipalTotalityTest.java
+ test/jdk/java/foreign/MemoryLayoutTypeRetentionTest.java
! test/jdk/java/foreign/NativeTestHelper.java
! test/jdk/java/foreign/SafeFunctionAccessTest.java
! test/jdk/java/foreign/StdLibTest.java
! test/jdk/java/foreign/TestAdaptVarHandles.java
! test/jdk/java/foreign/TestArrays.java
! test/jdk/java/foreign/TestByteBuffer.java
! test/jdk/java/foreign/TestClassLoaderFindNative.java
! test/jdk/java/foreign/TestDowncallBase.java
! test/jdk/java/foreign/TestDowncallScope.java
! test/jdk/java/foreign/TestDowncallStack.java
! test/jdk/java/foreign/TestFallbackLookup.java
! test/jdk/java/foreign/TestFree.java
! test/jdk/java/foreign/TestFunctionDescriptor.java
! test/jdk/java/foreign/TestHandshake.java
! test/jdk/java/foreign/TestHeapAlignment.java
! test/jdk/java/foreign/TestIllegalLink.java
! test/jdk/java/foreign/TestIntrinsics.java
+ test/jdk/java/foreign/TestLargeSegmentCopy.java
! test/jdk/java/foreign/TestLayoutEquality.java
! test/jdk/java/foreign/TestLayoutPaths.java
! test/jdk/java/foreign/TestLayouts.java
+ test/jdk/java/foreign/TestLinker.java
! test/jdk/java/foreign/TestMemoryAccess.java
! test/jdk/java/foreign/TestMemoryAccessInstance.java
! test/jdk/java/foreign/TestMemoryAlignment.java
! test/jdk/java/foreign/TestMemoryDereference.java
! test/jdk/java/foreign/TestMemorySession.java
! test/jdk/java/foreign/TestMismatch.java
! test/jdk/java/foreign/TestNULLAddress.java
! test/jdk/java/foreign/TestNative.java
! test/jdk/java/foreign/TestNulls.java
+ test/jdk/java/foreign/TestOfBufferIssue.java
! test/jdk/java/foreign/TestScopedOperations.java
! test/jdk/java/foreign/TestSegmentAllocators.java
! test/jdk/java/foreign/TestSegmentCopy.java
! test/jdk/java/foreign/TestSegmentOffset.java
! test/jdk/java/foreign/TestSegmentOverlap.java
! test/jdk/java/foreign/TestSegments.java
! test/jdk/java/foreign/TestSharedAccess.java
! test/jdk/java/foreign/TestSlices.java
! test/jdk/java/foreign/TestSpliterator.java
! test/jdk/java/foreign/TestStringEncoding.java
! test/jdk/java/foreign/TestTypeAccess.java
! test/jdk/java/foreign/TestUnsupportedLinker.java
! test/jdk/java/foreign/TestUpcallAsync.java
! test/jdk/java/foreign/TestUpcallBase.java
! test/jdk/java/foreign/TestUpcallException.java
! test/jdk/java/foreign/TestUpcallHighArity.java
! test/jdk/java/foreign/TestUpcallScope.java
! test/jdk/java/foreign/TestUpcallStack.java
! test/jdk/java/foreign/TestUpcallStructScope.java
+ test/jdk/java/foreign/TestValueLayouts.java
! test/jdk/java/foreign/TestVarArgs.java
! test/jdk/java/foreign/TestVarHandleCombinators.java
! test/jdk/java/foreign/ThrowingUpcall.java
+ test/jdk/java/foreign/UpcallTestHelper.java
! test/jdk/java/foreign/callarranger/TestAarch64CallArranger.java
! test/jdk/java/foreign/callarranger/TestSysVCallArranger.java
! test/jdk/java/foreign/callarranger/TestWindowsCallArranger.java
! test/jdk/java/foreign/channels/AbstractChannelsTest.java
! test/jdk/java/foreign/channels/TestAsyncSocketChannels.java
! test/jdk/java/foreign/channels/TestSocketChannels.java
+ test/jdk/java/foreign/dontrelease/TestDontRelease.java
+ test/jdk/java/foreign/dontrelease/libDontRelease.c
+ test/jdk/java/foreign/enablenativeaccess/NativeAccessDynamicMain.java
+ test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccessDynamic.java
! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMainDirect.java
! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMainInvoke.java
! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMainReflection.java
! test/jdk/java/foreign/handles/invoker_module/handle/invoker/MethodHandleInvoker.java
! test/jdk/java/foreign/handles/lookup_module/handle/lookup/MethodHandleLookup.java
+ test/jdk/java/foreign/libNull.c
! test/jdk/java/foreign/loaderLookup/TestLoaderLookup.java
! test/jdk/java/foreign/loaderLookup/TestLoaderLookupJNI.java
! test/jdk/java/foreign/loaderLookup/invoker/Invoker.java
! test/jdk/java/foreign/loaderLookup/lookup/Lookup.java
+ test/jdk/java/foreign/normalize/TestNormalize.java
+ test/jdk/java/foreign/normalize/libNormalize.c
+ test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java
+ test/jdk/java/foreign/passheapsegment/libPassHeapSegment.c
! test/jdk/java/foreign/stackwalk/TestAsyncStackWalk.java
! test/jdk/java/foreign/stackwalk/TestStackWalk.java
! test/jdk/java/foreign/upcalldeopt/TestUpcallDeopt.java
! test/jdk/java/foreign/valist/VaListTest.java
! test/jdk/java/foreign/virtual/TestVirtualCalls.java
! test/jdk/java/lang/Thread/jni/AttachCurrentThread/ImplicitAttach.java
! test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java
! test/jdk/java/nio/channels/FileChannel/LargeMapTest.java
! test/jdk/java/nio/channels/FileChannel/MapToMemorySegmentTest.java
! test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/SpliteratorTest.java
! test/jdk/jdk/incubator/vector/AbstractVectorLoadStoreTest.java
! test/jdk/jdk/incubator/vector/Byte128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Byte256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Byte512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Byte64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/ByteMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Double128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Double256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Double512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Double64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/DoubleMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Float128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Float256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Float512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Float64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/FloatMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Int128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Int256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Int512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Int64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/IntMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Long128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Long256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Long512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Long64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/LongMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Short128VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Short256VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Short512VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/Short64VectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/ShortMaxVectorLoadStoreTests.java
! test/jdk/jdk/incubator/vector/gen-template.sh
! test/jdk/jdk/incubator/vector/templates/X-LoadStoreTest.java.template
! test/micro/org/openjdk/bench/java/lang/foreign/BulkMismatchAcquire.java
! test/micro/org/openjdk/bench/java/lang/foreign/BulkOps.java
! test/micro/org/openjdk/bench/java/lang/foreign/CLayouts.java
! test/micro/org/openjdk/bench/java/lang/foreign/CallOverheadConstant.java
! test/micro/org/openjdk/bench/java/lang/foreign/CallOverheadHelper.java
! test/micro/org/openjdk/bench/java/lang/foreign/CallOverheadVirtual.java
! test/micro/org/openjdk/bench/java/lang/foreign/JavaLayouts.java
! test/micro/org/openjdk/bench/java/lang/foreign/LinkUpcall.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverConstant.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNew.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNewHeap.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNonConstant.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNonConstantFP.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNonConstantHeap.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNonConstantMapped.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverNonConstantShared.java
+ test/micro/org/openjdk/bench/java/lang/foreign/LoopOverOfAddress.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverPollutedSegments.java
! test/micro/org/openjdk/bench/java/lang/foreign/LoopOverSlice.java
! test/micro/org/openjdk/bench/java/lang/foreign/MemorySessionClose.java
! test/micro/org/openjdk/bench/java/lang/foreign/ParallelSum.java
! test/micro/org/openjdk/bench/java/lang/foreign/PointerInvoke.java
! test/micro/org/openjdk/bench/java/lang/foreign/QSort.java
! test/micro/org/openjdk/bench/java/lang/foreign/StrLenTest.java
! test/micro/org/openjdk/bench/java/lang/foreign/TestLoadBytes.java
! test/micro/org/openjdk/bench/java/lang/foreign/UnrolledAccess.java
! test/micro/org/openjdk/bench/java/lang/foreign/Upcalls.java
! test/micro/org/openjdk/bench/java/lang/foreign/VaList.java
! test/micro/org/openjdk/bench/java/lang/foreign/VarHandleExact.java
+ test/micro/org/openjdk/bench/java/lang/foreign/pointers/NativeType.java
+ test/micro/org/openjdk/bench/java/lang/foreign/pointers/Point.java
+ test/micro/org/openjdk/bench/java/lang/foreign/pointers/Pointer.java
+ test/micro/org/openjdk/bench/java/lang/foreign/pointers/PointerBench.java
+ test/micro/org/openjdk/bench/java/lang/foreign/pointers/Struct.java
! test/micro/org/openjdk/bench/java/lang/foreign/points/support/PanamaPoint.java
! test/micro/org/openjdk/bench/jdk/incubator/vector/MemorySegmentVectorAccess.java
! test/micro/org/openjdk/bench/jdk/incubator/vector/TestLoadStoreBytes.java
! test/micro/org/openjdk/bench/jdk/incubator/vector/TestLoadStoreShorts.java



More information about the jdk-changes mailing list