From duke at openjdk.org Tue May 2 07:22:38 2023 From: duke at openjdk.org (duke) Date: Tue, 2 May 2023 07:22:38 GMT Subject: git: openjdk/loom: fibers: 2 new changesets Message-ID: <9d73421d-07d7-4e40-a7ba-cc234a4b5a1d@openjdk.org> Changeset: 5854e341 Author: Alan Bateman Date: 2023-05-01 07:57:09 +0000 URL: https://git.openjdk.org/loom/commit/5854e3415eb2f8c11067971fed4a9b17adc1412a More javadoc tweaks ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java Changeset: 768cf700 Author: Alan Bateman Date: 2023-05-02 07:00:04 +0000 URL: https://git.openjdk.org/loom/commit/768cf70084de416016d016e6ba3c92d02ffede45 Javadoc clarifications ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java From duke at openjdk.org Thu May 4 08:44:15 2023 From: duke at openjdk.org (duke) Date: Thu, 4 May 2023 08:44:15 GMT Subject: git: openjdk/loom: fibers: 97 new changesets Message-ID: <1ffe2d33-8dcb-4f60-81ae-70c73ecb7f94@openjdk.org> Changeset: 9d76ab55 Author: Alan Bateman Date: 2023-05-04 07:03:38 +0000 URL: https://git.openjdk.org/loom/commit/9d76ab55a792ef0b94d0e5b4ad55e05abedfc88c Javadoc/test tweaks ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java Changeset: 1e4eafb4 Author: Archie Cobbs Committer: Sergey Bylokhov Date: 2023-04-26 22:45:10 +0000 URL: https://git.openjdk.org/loom/commit/1e4eafb4fe70832294a12938d93e7860073cf4cf 8071693: Introspector ignores default interface methods Reviewed-by: prr, aivanov, serb ! src/java.desktop/share/classes/com/sun/beans/introspect/MethodInfo.java + test/jdk/java/beans/Introspector/DefaultMethodBeanPropertyTest.java Changeset: 9ebcda21 Author: David Holmes Date: 2023-04-26 22:47:54 +0000 URL: https://git.openjdk.org/loom/commit/9ebcda2165c42e3f7b82a9ae8074badb69c0d270 8229147: Linux os::create_thread() overcounts guardpage size with newer glibc (>=2.27) Reviewed-by: shade, stuefe ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/posix/os_posix.cpp Changeset: 27c5c107 Author: Thomas Stuefe Date: 2023-04-27 04:57:29 +0000 URL: https://git.openjdk.org/loom/commit/27c5c1070ac559caa8dbad598337046f59355464 8306883: Thread stacksize is reported with wrong units in os::create_thread logging Reviewed-by: shade ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/windows/os_windows.cpp Changeset: 748476fd Author: Axel Boldt-Christmas Date: 2023-04-27 06:56:22 +0000 URL: https://git.openjdk.org/loom/commit/748476fd80ec93c25d823bc5088c706fcf3c7e65 8306732: TruncatedSeq::predict_next() attempts linear regression with only one data point Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/utilities/numberSeq.cpp Changeset: de0c05da Author: Dmitry Cherepanov Date: 2023-04-27 07:06:24 +0000 URL: https://git.openjdk.org/loom/commit/de0c05da07859ee4552b73a39a35cc8cd37b78b0 6995195: Static initialization deadlock in sun.java2d.loops.Blit and GraphicsPrimitiveMgr Reviewed-by: serb, aivanov ! src/java.desktop/share/classes/sun/java2d/loops/Blit.java ! src/java.desktop/share/classes/sun/java2d/loops/BlitBg.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphList.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListAA.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListColor.java ! src/java.desktop/share/classes/sun/java2d/loops/FillRect.java ! src/java.desktop/share/classes/sun/java2d/loops/GraphicsPrimitiveMgr.java ! src/java.desktop/share/classes/sun/java2d/loops/MaskBlit.java ! src/java.desktop/share/classes/sun/java2d/loops/MaskFill.java + test/jdk/sun/java2d/loops/GraphicsPrimitiveMgrTest.java Changeset: a83c02fe Author: Thomas Stuefe Date: 2023-04-27 07:26:34 +0000 URL: https://git.openjdk.org/loom/commit/a83c02fe2ca52a39018be630b6373f73361fcf3d 8306654: Disable NMT location_printing_cheap_dead_xx tests again Reviewed-by: dholmes ! test/hotspot/gtest/nmt/test_nmt_locationprinting.cpp Changeset: d94ce656 Author: Thomas Schatzl Date: 2023-04-27 07:28:06 +0000 URL: https://git.openjdk.org/loom/commit/d94ce6566d50fc0a6218adbb64d8f90e9eeb844a 8306858: Remove some remnants of CMS from SA agent Reviewed-by: shade, cjplummer, kbarrett, ysr ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeapName.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/Generation.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java Changeset: 41d58533 Author: Daniel Fuchs Date: 2023-04-27 08:25:40 +0000 URL: https://git.openjdk.org/loom/commit/41d58533aca29d439db264540e85c4fa165f19f6 8306940: test/jdk/java/net/httpclient/XxxxInURI.java should call HttpClient::close Reviewed-by: jpai, djelinski ! test/jdk/java/net/httpclient/EncodedCharsInURI.java ! test/jdk/java/net/httpclient/EscapedOctetsInURI.java ! test/jdk/java/net/httpclient/NonAsciiCharsInURI.java Changeset: cbccc4c8 Author: Per Minborg Date: 2023-04-27 09:00:58 +0000 URL: https://git.openjdk.org/loom/commit/cbccc4c8172797ea2f1b7c301d00add3f517546d 8304265: Implementation of Foreign Function and Memory API (Third Preview) Co-authored-by: Maurizio Cimadamore Co-authored-by: Jorn Vernee Co-authored-by: Paul Sandoz Co-authored-by: Feilong Jiang Co-authored-by: Per Minborg Reviewed-by: erikj, jvernee, vlivanov, psandoz ! make/autoconf/configure.ac ! make/autoconf/jdk-options.m4 ! make/autoconf/libraries.m4 ! make/autoconf/spec.gmk.in ! make/conf/jib-profiles.js ! make/data/hotspot-symbols/symbols-shared + make/devkit/createLibffiBundle.sh ! make/modules/java.base/Lib.gmk ! src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp ! src/hotspot/cpu/aarch64/foreignGlobals_aarch64.cpp ! src/hotspot/cpu/arm/downcallLinker_arm.cpp ! src/hotspot/cpu/arm/foreignGlobals_arm.cpp ! src/hotspot/cpu/ppc/downcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp ! src/hotspot/cpu/riscv/downcallLinker_riscv.cpp ! src/hotspot/cpu/riscv/foreignGlobals_riscv.cpp ! src/hotspot/cpu/s390/downcallLinker_s390.cpp ! src/hotspot/cpu/s390/foreignGlobals_s390.cpp ! src/hotspot/cpu/x86/downcallLinker_x86_32.cpp ! src/hotspot/cpu/x86/downcallLinker_x86_64.cpp ! src/hotspot/cpu/x86/foreignGlobals_x86_32.cpp ! src/hotspot/cpu/x86/foreignGlobals_x86_64.cpp ! src/hotspot/cpu/zero/downcallLinker_zero.cpp ! src/hotspot/cpu/zero/foreignGlobals_zero.cpp ! src/hotspot/cpu/zero/globalDefinitions_zero.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/downcallLinker.cpp ! src/hotspot/share/prims/downcallLinker.hpp ! src/hotspot/share/prims/foreignGlobals.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/nativeEntryPoint.cpp ! src/hotspot/share/prims/upcallLinker.cpp + src/java.base/share/classes/java/lang/foreign/AddressLayout.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/MemoryLayout.java ! src/java.base/share/classes/java/lang/foreign/MemorySegment.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/nio/Buffer.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java ! src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/HeapMemorySegmentImpl.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/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/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/BindingInterpreter.java ! src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java ! src/java.base/share/classes/jdk/internal/foreign/abi/CallingSequence.java ! src/java.base/share/classes/jdk/internal/foreign/abi/CapturableState.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/NativeEntryPoint.java ! src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.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/AArch64Architecture.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.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/aarch64/windows/WindowsAArch64Linker.java - src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/windows/WindowsAArch64VaList.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIABI.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIStatus.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIType.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/RISCV64Architecture.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64CallArranger.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64Linker.java - src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64VaList.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/X86_64Architecture.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/windows/CallArranger.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/vm/ForeignLinkerSupport.java ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java + src/java.base/share/native/libfallbackLinker/fallbackLinker.c + src/java.base/share/native/libjava/ForeignLinkerSupport.c ! test/jdk/TEST.groups ! 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/TestAddressDereference.java ! test/jdk/java/foreign/TestArrays.java ! test/jdk/java/foreign/TestByteBuffer.java ! test/jdk/java/foreign/TestClassLoaderFindNative.java + test/jdk/java/foreign/TestDereferencePath.java ! test/jdk/java/foreign/TestDowncallScope.java ! test/jdk/java/foreign/TestDowncallStack.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/TestMemoryAccess.java ! test/jdk/java/foreign/TestMemoryAccessInstance.java ! test/jdk/java/foreign/TestMemoryAlignment.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/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/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/TestVarArgs.java ! test/jdk/java/foreign/TestVarHandleCombinators.java - test/jdk/java/foreign/ThrowingUpcall.java ! test/jdk/java/foreign/UpcallTestHelper.java ! test/jdk/java/foreign/arraystructs/TestArrayStructs.java + test/jdk/java/foreign/callarranger/TestLayoutEquality.java ! test/jdk/java/foreign/callarranger/TestLinuxAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestMacOsAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestRISCV64CallArranger.java ! test/jdk/java/foreign/callarranger/TestSysVCallArranger.java ! test/jdk/java/foreign/callarranger/TestWindowsAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestWindowsCallArranger.java + test/jdk/java/foreign/callarranger/platform/PlatformLayouts.java ! test/jdk/java/foreign/capturecallstate/TestCaptureCallState.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/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/libAddressDereference.c ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/foreign/normalize/TestNormalize.java ! test/jdk/java/foreign/stackwalk/TestAsyncStackWalk.java ! test/jdk/java/foreign/stackwalk/TestReentrantUpcalls.java ! test/jdk/java/foreign/stackwalk/TestStackWalk.java + test/jdk/java/foreign/trivial/TestTrivial.java + test/jdk/java/foreign/trivial/TestTrivialUpcall.java + test/jdk/java/foreign/trivial/libTrivial.c ! test/jdk/java/foreign/upcalldeopt/TestUpcallDeopt.java - test/jdk/java/foreign/valist/VaListTest.java - test/jdk/java/foreign/valist/libVaList.c ! 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/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/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/MemorySegmentVsBits.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/libPtr.c - test/micro/org/openjdk/bench/java/lang/foreign/libVaList.c ! test/micro/org/openjdk/bench/java/lang/foreign/pointers/NativeType.java ! test/micro/org/openjdk/bench/java/lang/foreign/pointers/PointerBench.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 Changeset: ba436495 Author: bobpengxie Committer: Jie Fu Date: 2023-04-27 09:19:13 +0000 URL: https://git.openjdk.org/loom/commit/ba43649530f7fcf29c17d273cfc09c49f6c3a8b5 8306976: UTIL_REQUIRE_SPECIAL warning on grep Reviewed-by: clanger, mbaesken ! make/autoconf/basic_tools.m4 Changeset: 1be80a44 Author: Roberto Casta?eda Lozano Date: 2023-04-27 09:39:53 +0000 URL: https://git.openjdk.org/loom/commit/1be80a4445cf74adc9b2cd5bf262a897f9ede74f 8287087: C2: perform SLP reduction analysis on-demand Reviewed-by: epeter, jbhateja, thartmann ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/adlc/main.cpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! test/hotspot/jtreg/compiler/c2/irTests/TestSuperwordFailsUnrolling.java + test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxReductions.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java + test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java ! test/micro/org/openjdk/bench/vm/compiler/FpMinMaxIntrinsics.java ! test/micro/org/openjdk/bench/vm/compiler/VectorReduction.java Changeset: 96cdf93b Author: Albert Mingkun Yang Date: 2023-04-27 11:40:50 +0000 URL: https://git.openjdk.org/loom/commit/96cdf93b425612ec2e7815fec4f6f6fcc0e70f47 8306833: Change CardTable::_covered to static array Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/shared/cardTable.cpp ! src/hotspot/share/gc/shared/cardTable.hpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp Changeset: fed262a9 Author: Jiangli Zhou Date: 2023-04-27 15:57:51 +0000 URL: https://git.openjdk.org/loom/commit/fed262a9cf324ce7f2c61f4471c88bc84af8e3d0 8306949: Resolve miscellaneous multiple symbol definition issues when statically linking JDK/VM natives with standard launcher Reviewed-by: alanb ! src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c ! src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c ! src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.c ! src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h ! src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c ! src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/j2secmod_md.c Changeset: 41ba05e4 Author: Abhishek Kumar Date: 2023-04-27 15:59:42 +0000 URL: https://git.openjdk.org/loom/commit/41ba05e450ed4467535bcee81946099e38665c3f 8306850: Open source AWT Model related tests Reviewed-by: serb, azvegint + test/jdk/java/awt/Modal/BlockedMouseInputTest.java + test/jdk/java/awt/Modal/BlockedMouseInputTest2.java + test/jdk/java/awt/Modal/BlockedMouseInputTest3.java + test/jdk/java/awt/Modal/ModalDialogCannotBeMadeNonModalTest.java + test/jdk/java/awt/Modal/NonModalDialogReceiveEventsAfterModalTest.java + test/jdk/java/awt/Modal/ParentCatchupDraggingChildDialogTest.java Changeset: eb358619 Author: Raffaello Giulietti Date: 2023-04-27 17:01:56 +0000 URL: https://git.openjdk.org/loom/commit/eb358619dfc344348d72cfe29d50829ba7ca1aea 8205592: BigDecimal.doubleValue() is depressingly slow Reviewed-by: darcy ! src/java.base/share/classes/java/math/BigDecimal.java + test/jdk/java/math/BigDecimal/DoubleFloatValueTests.java Changeset: 80fae514 Author: Brian Burkhalter Date: 2023-04-27 17:20:08 +0000 URL: https://git.openjdk.org/loom/commit/80fae514b16bfe38ff29f71f8cdc6d4c3482ad3d 8306959: (bf) CharBuffer.append(CharSequence,int,int) throws BufferOverflowException where IndexOutOfBoundsException expected Reviewed-by: alanb ! src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! test/jdk/java/nio/Buffer/Basic-X.java.template ! test/jdk/java/nio/Buffer/Basic.java ! test/jdk/java/nio/Buffer/BasicByte.java ! test/jdk/java/nio/Buffer/BasicChar.java ! test/jdk/java/nio/Buffer/BasicDouble.java ! test/jdk/java/nio/Buffer/BasicFloat.java ! test/jdk/java/nio/Buffer/BasicInt.java ! test/jdk/java/nio/Buffer/BasicLong.java ! test/jdk/java/nio/Buffer/BasicShort.java Changeset: 6983d05b Author: Naoto Sato Date: 2023-04-27 18:12:41 +0000 URL: https://git.openjdk.org/loom/commit/6983d05b73258f11dcb35bc3961b724ba58d9667 8306927: Collator treats "v" and "w" as the same letter for Swedish language locale. Reviewed-by: jlu, iris, joehw ! src/jdk.localedata/share/classes/sun/text/resources/ext/CollationData_sv.java + test/jdk/sun/text/resources/Collator/SwedishTest.java Changeset: 78713909 Author: Jonathan Gibbons Date: 2023-04-27 19:13:03 +0000 URL: https://git.openjdk.org/loom/commit/7871390930920f0acc0dacde77dafe01f9e6c865 8306952: improve generic signature of internal DCInlineTag class Reviewed-by: iris ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java Changeset: b827ce83 Author: Roger Riggs Date: 2023-04-27 20:36:40 +0000 URL: https://git.openjdk.org/loom/commit/b827ce8334c568d72990985ff6077db8334e2754 8298993: (process) java/lang/ProcessBuilder/UnblockSignals.java fails Reviewed-by: bchristi ! test/jdk/java/lang/ProcessBuilder/UnblockSignals.java Changeset: f3c90f04 Author: Justin Lu Date: 2023-04-28 00:16:29 +0000 URL: https://git.openjdk.org/loom/commit/f3c90f0445df359a8bc03630fc5cde2843bbfef1 8306711: Improve diagnosis of `IntlTest` framework Reviewed-by: naoto, lancea ! test/jdk/java/text/Normalizer/ICUBasicTest.java ! test/jdk/java/text/testlib/IntlTest.java Changeset: d3abfec8 Author: Kim Barrett Date: 2023-04-28 03:11:00 +0000 URL: https://git.openjdk.org/loom/commit/d3abfec8b7ce901150952356f9f1109d09a8cb2a 8305566: Change StringDedup thread to derive from JavaThread Reviewed-by: stefank, cjplummer, tschatzl ! src/hotspot/share/gc/shared/stringdedup/stringDedup.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupProcessor.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupProcessor.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupStat.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupStat.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupTable.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupTable.hpp + src/hotspot/share/gc/shared/stringdedup/stringDedupThread.cpp + src/hotspot/share/gc/shared/stringdedup/stringDedupThread.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/runtime/java.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/hotspot/share/runtime/javaThread.inline.hpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/vmStructs.cpp + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/StringDedupThread.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/Threads.java Changeset: eb3af8ab Author: Richard Reingruber Date: 2023-04-28 06:06:56 +0000 URL: https://git.openjdk.org/loom/commit/eb3af8abe9743669887445f8fc5ff647187f983a 8306901: Macro offset_of confuses Eclipse CDT Reviewed-by: stuefe, kbarrett ! src/hotspot/share/utilities/globalDefinitions_gcc.hpp Changeset: 0b5c504a Author: Thomas Stuefe Date: 2023-04-28 06:08:24 +0000 URL: https://git.openjdk.org/loom/commit/0b5c504ad00c3a2b64bbb049934ce069fac1d5a3 8306696: Remove MetaspaceReclaimPolicy=aggressive and obsolete MetaspaceReclaimPolicy Reviewed-by: dholmes, rkennke, coleenp ! src/hotspot/share/memory/metaspace/metaspaceReporter.cpp ! src/hotspot/share/memory/metaspace/metaspaceSettings.cpp ! src/hotspot/share/memory/metaspace/metaspaceSettings.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! test/hotspot/jtreg/gtest/MetaspaceGtests.java ! test/hotspot/jtreg/runtime/Metaspace/PrintMetaspaceDcmd.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/MetaspaceTestManyArenasManyThreads.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/MetaspaceTestWithThreads.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/Settings.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocation.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT1.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT2.java Changeset: 84df74ca Author: Afshin Zafari Committer: Tobias Hartmann Date: 2023-04-28 06:32:25 +0000 URL: https://git.openjdk.org/loom/commit/84df74ca3948c50d8e6f24694310860ed3888aba 8305079: Remove finalize() from compiler/c2/Test719030 Reviewed-by: thartmann, coleenp ! test/hotspot/jtreg/compiler/c2/Test7190310.java Changeset: 3d9d84b7 Author: Matthias Baesken Date: 2023-04-28 06:50:06 +0000 URL: https://git.openjdk.org/loom/commit/3d9d84b742ef351572137bec50aa157f36a260d6 8307006: ProblemList gtest/NMTGtest.java on aix Reviewed-by: mdoerr ! test/hotspot/jtreg/ProblemList.txt Changeset: 60a29a66 Author: Aleksei Voitylov Committer: Aleksey Shipilev Date: 2023-04-28 09:41:55 +0000 URL: https://git.openjdk.org/loom/commit/60a29a668c07cf7c15728063b19bb235c5fd2052 8305387: JDK-8301995 breaks arm 32-bit Reviewed-by: shade, matsaave ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.hpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/cpu/arm/templateTable_arm.cpp Changeset: fee02f06 Author: Amit Kumar Committer: Volker Simonis Date: 2023-04-28 11:55:59 +0000 URL: https://git.openjdk.org/loom/commit/fee02f066879e77e55e217660daa46607778b6e8 8299748: java/util/zip/Deinflate.java failing on s390x Reviewed-by: jpai, lancea, simonis, aturbanov ! test/jdk/java/util/zip/DeInflate.java Changeset: 452cb843 Author: Jie Fu Date: 2023-04-28 12:27:16 +0000 URL: https://git.openjdk.org/loom/commit/452cb8432f4d45c3dacd4415bc9499ae73f7a17c 8307103: Two TestMetaspaceAllocationMT tests fail after JDK-8306696 Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT1.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT2.java Changeset: 83a98c66 Author: Antonios Printezis Date: 2023-04-28 12:31:48 +0000 URL: https://git.openjdk.org/loom/commit/83a98c66f1747fec3da77578b646498c4cb5637d 8307063: When cross-compiling with hsdis/binutils, buildjdk creation fails Reviewed-by: erikj ! make/autoconf/buildjdk-spec.gmk.in Changeset: 5d9baa2f Author: JoKern65 Committer: Matthias Baesken Date: 2023-04-28 13:07:53 +0000 URL: https://git.openjdk.org/loom/commit/5d9baa2f9385d66cdf2ff8f065d165385eb48a22 8306672: support offset in dll_address_to_library_name on AIX Reviewed-by: stuefe, clanger, mbaesken ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/aix/porting_aix.cpp ! src/hotspot/os/aix/porting_aix.hpp Changeset: 169a7c27 Author: Tejesh R Date: 2023-04-28 14:27:38 +0000 URL: https://git.openjdk.org/loom/commit/169a7c27a7c6521fbfb1e61fbe85e6d7b0470619 8306640: Open source several AWT TextArea related tests Reviewed-by: prr, serb + test/jdk/java/awt/TextArea/ReplaceRangeTest.java + test/jdk/java/awt/TextArea/TextAreaCRLFAutoDetectTest.java + test/jdk/java/awt/TextArea/TextLengthTest.java + test/jdk/java/awt/TextArea/TextLimitTest.java Changeset: 485a0691 Author: Tejesh R Date: 2023-04-28 14:35:16 +0000 URL: https://git.openjdk.org/loom/commit/485a0691f4a762e9673967b7873356fb65afc5bc 8306432: Open source several AWT Text Component related tests Reviewed-by: prr + test/jdk/java/awt/TextComponent/CorrectSetCaretPositionDuringInitPeerTest.java + test/jdk/java/awt/TextComponent/DeselectionDuringDoSelectionNonVisibleTest.java + test/jdk/java/awt/TextComponent/GetCaretPosOutOfBoundsTest.java + test/jdk/java/awt/TextComponent/InitialInsertionCaretPositionTest.java + test/jdk/java/awt/TextComponent/MiddleMouseClickPasteTest.java Changeset: cf799ba2 Author: Coleen Phillimore Date: 2023-04-28 15:14:30 +0000 URL: https://git.openjdk.org/loom/commit/cf799ba232dcacd1d91a7dab4dc4bf8de9ac258e 8306950: [REDO] JDK-8305252 make_method_handle_intrinsic may call java code under a lock Reviewed-by: dholmes, matsaave, iklam ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: e1196584 Author: Calvin Cheung Date: 2023-04-28 15:45:44 +0000 URL: https://git.openjdk.org/loom/commit/e1196584d5c61e3a6baa3eb96801a518cd5dca64 8303475: potential null pointer dereference in filemap.cpp Reviewed-by: dholmes ! src/hotspot/share/cds/filemap.cpp Changeset: a177152f Author: Dean Long Date: 2023-04-28 15:48:39 +0000 URL: https://git.openjdk.org/loom/commit/a177152f224cdaa3ef24a90baa57f1b42c0cc220 8306331: assert((cnt > 0.0f) && (prob > 0.0f)) failed: Bad frequency assignment in if Reviewed-by: thartmann, chagedorn ! src/hotspot/share/opto/parse2.cpp Changeset: 82ccfe3a Author: Rajan Halade Date: 2023-04-28 16:18:02 +0000 URL: https://git.openjdk.org/loom/commit/82ccfe3a21f6f9933d96c52286ecb4d6b432abb2 8305975: Add TWCA Global Root CA Reviewed-by: mullan + src/java.base/share/data/cacerts/twcaglobalrootca + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/TWCAGlobalCA.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: f83e7302 Author: Madjosz <28844868+Madjosz at users.noreply.github.com> Committer: Naoto Sato Date: 2023-04-28 16:23:13 +0000 URL: https://git.openjdk.org/loom/commit/f83e7302c1660c128f866daa7317bc1dce156686 8302983: ZoneRulesProvider.registerProvider() twice will remove provider Reviewed-by: naoto ! src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java ! test/jdk/java/time/test/java/time/zone/TestZoneRulesProvider.java Changeset: 9ff55508 Author: Weijun Wang Date: 2023-04-28 16:24:50 +0000 URL: https://git.openjdk.org/loom/commit/9ff555083a1ba367ea157b8e1de28e62c1ce2f19 8307077: Convert CRLF to LF in java.xml.crypto Reviewed-by: mullan ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.dtd ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_de.properties ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_en.properties Changeset: 89711f37 Author: Phil Race Date: 2023-04-28 18:17:24 +0000 URL: https://git.openjdk.org/loom/commit/89711f376751d4cfa05758705867afedfafeb602 8307079: Update test java/awt/Choice/DragOffNoSelect.java Reviewed-by: azvegint, serb ! test/jdk/java/awt/Choice/DragOffNoSelectTest.java Changeset: 6d6f726b Author: Alexander Zuev Date: 2023-04-28 18:46:48 +0000 URL: https://git.openjdk.org/loom/commit/6d6f726b74f7fcd3e7c37d50bd2476b3e921662b 8307078: Opensource and clean up five more AWT Focus related tests Reviewed-by: serb, prr + test/jdk/java/awt/Focus/FocusForRemovedComponentTest.java + test/jdk/java/awt/Focus/FocusTraversalPolicyIAE.java + test/jdk/java/awt/Focus/InitialFocusTest.java + test/jdk/java/awt/Focus/LabelScrollBarFocus.java + test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java Changeset: ec5c7926 Author: Damon Nguyen Date: 2023-04-28 19:16:12 +0000 URL: https://git.openjdk.org/loom/commit/ec5c7926f3cea68bf0d0ceb460a8383f5e4ea278 8306133: Open source few AWT Drag & Drop related tests Reviewed-by: prr, psadhukhan + test/jdk/java/awt/dnd/NextDropActionTest/NextDropActionTest.java + test/jdk/java/awt/dnd/NoFormatsDragEnterTest/NoFormatsDragEnterTest.java + test/jdk/java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java + test/jdk/java/awt/dnd/NoTargetNoDragExitTest/NoTargetNoDragExitTest.java + test/jdk/java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java Changeset: 05af487a Author: Damon Nguyen Date: 2023-04-28 19:20:16 +0000 URL: https://git.openjdk.org/loom/commit/05af487a2d9b85b87d13ea23776d04e52c67bf49 8306681: Open source more AWT DnD related tests Reviewed-by: prr, serb + test/jdk/java/awt/dnd/ZeroFormatTransferableTest.java + test/jdk/java/awt/event/ComponentEvent/ComponentResizedTest.java + test/jdk/java/awt/event/ComponentEvent/ObjectSourceTest.java + test/jdk/java/awt/event/ComponentEvent/ResizeDeniedTest.java + test/jdk/java/awt/event/FocusEvent/OppositeSerialization/OppositeSerialization.java + test/jdk/java/awt/event/FocusEvent/OppositeSerialization/old.ser + test/jdk/java/awt/event/HierarchyEvent/HierarchyEventOnWindowTest.java Changeset: da9efee1 Author: Stuart Marks Date: 2023-04-28 19:45:29 +0000 URL: https://git.openjdk.org/loom/commit/da9efee1c25f76f80fee9065680e7d75d03c7178 8296935: Arrays.asList() can return a List that throws undocumented ArrayStoreException Reviewed-by: rriggs, lancea ! src/java.base/share/classes/java/util/Arrays.java Changeset: 4818c798 Author: Jorn Vernee Date: 2023-04-28 21:43:33 +0000 URL: https://git.openjdk.org/loom/commit/4818c798bcd0ae84cd15c7ab101902896b620016 8307110: zero build broken after JDK-8304265 Reviewed-by: erikj ! make/conf/jib-profiles.js ! make/devkit/createLibffiBundle.sh Changeset: b8de3943 Author: Phil Race Date: 2023-04-28 22:39:17 +0000 URL: https://git.openjdk.org/loom/commit/b8de39431dca90e63552968829a349a9b63e68ca 8307080: Open source some more JComboBox jtreg tests Reviewed-by: kizune + test/jdk/javax/swing/JComboBox/bug4171464.java + test/jdk/javax/swing/JComboBox/bug4244614.java + test/jdk/javax/swing/JComboBox/bug4276920.java + test/jdk/javax/swing/JComboBox/bug4924758.java + test/jdk/javax/swing/JComboBox/bug5029504.java Changeset: 1f689241 Author: Phil Race Date: 2023-04-28 22:42:11 +0000 URL: https://git.openjdk.org/loom/commit/1f689241cfcb4083cba283a2010b532948865283 8306955: Open source several JComboBox jtreg tests Reviewed-by: kizune + test/jdk/javax/swing/JComboBox/bug4167850.java + test/jdk/javax/swing/JComboBox/bug4209474.java + test/jdk/javax/swing/JComboBox/bug4234119.java + test/jdk/javax/swing/JComboBox/bug4890345.java + test/jdk/javax/swing/JComboBox/bug4996503.java Changeset: d43a5a28 Author: Sergey Bylokhov Date: 2023-04-29 01:29:13 +0000 URL: https://git.openjdk.org/loom/commit/d43a5a289f4ac84480bf54ab304c1ce1dbc8e067 8307135: java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java failed Reviewed-by: jiefu, prr ! test/jdk/java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java Changeset: a2d3fc83 Author: SirYwell Committer: Julian Waters Date: 2023-04-29 07:48:14 +0000 URL: https://git.openjdk.org/loom/commit/a2d3fc83b0dd7eea38e1dd5898a97d6d7ff60194 8304837: Classfile API throws IOOBE for MethodParameters attribute without parameter names Reviewed-by: asotona, jwaters, vromero ! src/java.base/share/classes/jdk/internal/classfile/impl/BoundAttribute.java + test/jdk/jdk/classfile/BoundAttributeTest.java Changeset: bb7608ba Author: Lance Andersen Date: 2023-04-29 14:37:13 +0000 URL: https://git.openjdk.org/loom/commit/bb7608bacc605b2aa9a291f4e23dab49815ce932 8307088: Allow the jdbc.drivers system property to be searchable Reviewed-by: naoto, joehw ! src/java.sql/share/classes/java/sql/DriverManager.java Changeset: 6d6d00b6 Author: Alexander Zuev Date: 2023-04-29 18:19:11 +0000 URL: https://git.openjdk.org/loom/commit/6d6d00b69cea47ccbe05a844db0fb6c384045caa 8306954: Open source five Focus related tests Reviewed-by: prr + test/jdk/java/awt/Focus/AsyncUpFocusCycleTest.java + test/jdk/java/awt/Focus/ClearMostRecentFocusOwnerTest.java + test/jdk/java/awt/Focus/ConsumedTabKeyTest.java + test/jdk/java/awt/Focus/EventRetargetTest.java + test/jdk/java/awt/Focus/ExtraPropChangeNotifVetoingTest.java Changeset: b3dbf28b Author: Hannes Greule Committer: Julian Waters Date: 2023-04-30 07:34:09 +0000 URL: https://git.openjdk.org/loom/commit/b3dbf28bc0614bee2f7137af95389134155c9511 8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default Co-authored-by: Chen Liang Reviewed-by: vromero, jwaters ! make/langtools/src/classes/build/tools/symbolgenerator/CreateSymbols.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java + test/jdk/java/lang/reflect/AccessFlag/RequiredMethodParameterFlagTest.java + test/langtools/tools/javac/RequiredParameterFlags/ImplicitParameters.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnnotatedExtendsTest.java + test/langtools/tools/javac/processing/model/util/elements/MethodParameters/ImplicitParametersProcessor.java ! test/langtools/tools/javap/AnnoTest.java Changeset: b54c4a33 Author: Prasanta Sadhukhan Date: 2023-05-01 04:41:22 +0000 URL: https://git.openjdk.org/loom/commit/b54c4a33c69e16adf5b85b80b8deb4ded2ed074d 8299713: Test javax/swing/JTableHeader/6889007/bug6889007.java failed: Wrong type of cursor Reviewed-by: serb, tr ! test/jdk/javax/swing/JTableHeader/6889007/bug6889007.java Changeset: e1b06eac Author: Prasanta Sadhukhan Date: 2023-05-01 04:45:38 +0000 URL: https://git.openjdk.org/loom/commit/e1b06eac722ea19ed33fbd15e763ca983aab34f2 8305780: javax/swing/JTable/7068740/bug7068740.java fails on Ubunutu 20.04 Reviewed-by: serb, tr ! test/jdk/javax/swing/JTable/7068740/bug7068740.java Changeset: 2d7c5079 Author: Prasanta Sadhukhan Date: 2023-05-01 04:49:40 +0000 URL: https://git.openjdk.org/loom/commit/2d7c50791bd79d9a140df12e38050c851423992c 8305778: javax/swing/JTableHeader/6884066/bug6884066.java: Unexpected header's value; index = 4 value = E Reviewed-by: serb, jdv ! test/jdk/javax/swing/JTableHeader/6884066/bug6884066.java Changeset: a6b4f25b Author: Aleksey Shipilev Date: 2023-05-01 07:56:07 +0000 URL: https://git.openjdk.org/loom/commit/a6b4f25bd50e6861281d162f143c5bc9c16bac51 8306825: Monitor deflation might be accidentally disabled by zero intervals Reviewed-by: dcubed, eastigeevich, phh ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/monitorDeflationThread.cpp + test/hotspot/jtreg/runtime/Monitor/DeflationIntervalsTest.java - test/hotspot/jtreg/runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java Changeset: 316d303c Author: Coleen Phillimore Date: 2023-05-01 11:33:22 +0000 URL: https://git.openjdk.org/loom/commit/316d303c1da550c9589c9be56b65650964e3886b 8306851: Move Method access flags Reviewed-by: cjplummer, dholmes, dnsimon, matsaave, fparain ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/interpreter/bytecodeUtils.cpp ! src/hotspot/share/interpreter/rewriter.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/oops/constMethod.cpp ! src/hotspot/share/oops/constMethod.hpp + src/hotspot/share/oops/constMethodFlags.cpp + src/hotspot/share/oops/constMethodFlags.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlassFlags.cpp ! src/hotspot/share/oops/instanceKlassFlags.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp + src/hotspot/share/oops/methodFlags.cpp + src/hotspot/share/oops/methodFlags.hpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/hotspot/share/utilities/accessFlags.cpp ! src/hotspot/share/utilities/accessFlags.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/AccessFlags.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstMethod.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Method.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java Changeset: 1de1a388 Author: Jorn Vernee Date: 2023-05-01 13:00:41 +0000 URL: https://git.openjdk.org/loom/commit/1de1a38859c696cd5f3f6efa51809bff9c127953 8303002: Reject packed structs from linker 8300784: Specify exactly how padding should be presented to the linker 8304803: NPE thrown during downcall classification under Linux/x64 8303524: Check FunctionDescriptor byte order when linking Reviewed-by: mcimadamore ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/linux/LinuxAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/windows/WindowsAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/SysVx64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/Windowsx64Linker.java ! test/jdk/java/foreign/TestIllegalLink.java ! test/jdk/java/foreign/TestUpcallStructScope.java Changeset: b39a9bff Author: Jorn Vernee Date: 2023-05-01 13:15:16 +0000 URL: https://git.openjdk.org/loom/commit/b39a9bffda0440b1617a802ceb70bf12e075a779 8301703: java.base jdk.internal.foreign.abi.BindingSpecializer uses ASM to generate classes Reviewed-by: mcimadamore, asotona ! src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java Changeset: d437c61f Author: Archie Cobbs Committer: Vicente Romero Date: 2023-05-01 13:23:37 +0000 URL: https://git.openjdk.org/loom/commit/d437c61f5b77793606d73960eeaf98a091f14f6a 8305672: Surprising definite assignment error after JDK-8043179 Reviewed-by: kcr, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java + test/langtools/tools/javac/lambda/TryWithLambdaFinal.java Changeset: 67dd8414 Author: Jorn Vernee Date: 2023-05-01 13:41:00 +0000 URL: https://git.openjdk.org/loom/commit/67dd8414321677e3fc41fa1470c857c0afaa4259 8305093: Linker cache should not take layout names into account Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/TestLinker.java Changeset: 7d07d195 Author: Jorn Vernee Date: 2023-05-01 14:12:51 +0000 URL: https://git.openjdk.org/loom/commit/7d07d19523658cb8034121af6569fbbe92c9afd1 8305201: Improve error message for GroupLayouts that are too large on SysV Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/TypeClass.java ! test/jdk/java/foreign/TestIllegalLink.java Changeset: f00a748b Author: Roger Riggs Date: 2023-05-01 15:22:07 +0000 URL: https://git.openjdk.org/loom/commit/f00a748bc5b708d4f8f277d075859b058f9d575c 8304915: Create jdk.internal.util.Architecture enum and apply Reviewed-by: erikj, mdoerr, amitkumar ! make/modules/java.base/gensrc/GensrcMisc.gmk + src/java.base/share/classes/jdk/internal/util/Architecture.java ! src/java.base/share/classes/jdk/internal/util/OperatingSystem.java - src/java.base/share/classes/jdk/internal/util/OperatingSystemProps.java.template + src/java.base/share/classes/jdk/internal/util/PlatformProps.java.template ! src/jdk.attach/windows/classes/sun/tools/attach/AttachProviderImpl.java + test/jdk/jdk/internal/util/ArchTest.java Changeset: 6acf032d Author: Roger Riggs Date: 2023-05-01 17:56:04 +0000 URL: https://git.openjdk.org/loom/commit/6acf032db891875c6a7403a18d5dc7c552fb4c11 8306678: Replace use of os.version with an internal Version record Reviewed-by: mchung ! src/java.base/macosx/classes/jdk/internal/loader/ClassLoaderHelper.java ! src/java.base/share/classes/jdk/internal/util/OperatingSystem.java ! src/java.base/share/classes/jdk/internal/util/StaticProperty.java + src/java.base/share/classes/jdk/internal/util/Version.java ! test/jdk/jdk/internal/util/OSTest.java + test/jdk/jdk/internal/util/VersionTest.java Changeset: c7e1df83 Author: Rajan Halade Date: 2023-05-01 18:03:54 +0000 URL: https://git.openjdk.org/loom/commit/c7e1df832837c2f19629cf0d5a5d3e65142ac208 8304760: Add 2 Microsoft TLS roots Reviewed-by: mullan + src/java.base/share/data/cacerts/microsoftecc2017 + src/java.base/share/data/cacerts/microsoftrsa2017 + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/MicrosoftTLS.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: ae5f678f Author: Chris Plummer Date: 2023-05-01 18:13:11 +0000 URL: https://git.openjdk.org/loom/commit/ae5f678fbafcd643a5a74447ed718636a53f9e2b 8282384: [LOOM] Need test for ThreadReference.interrupt() on a vthread Reviewed-by: lmesnik, sspitsyn ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001a.java Changeset: 561ec9c5 Author: Sergey Tsypanov Committer: Roger Riggs Date: 2023-05-01 18:24:07 +0000 URL: https://git.openjdk.org/loom/commit/561ec9c5a06e5baeb0cf72463d14d1d720facb13 8300818: Reduce complexity of padding with DateTimeFormatter Reviewed-by: redestad, rriggs ! src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java + test/micro/org/openjdk/bench/java/time/format/DateTimeFormatterWithPaddingBench.java Changeset: 35e75c13 Author: Vicente Romero Date: 2023-05-01 20:28:50 +0000 URL: https://git.openjdk.org/loom/commit/35e75c131d7c1c2596022955c0f4c53dd3c7e448 8301455: comments in TestTypeAnnotations still refer to resolved JDK-8068737 Reviewed-by: jjg ! test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java Changeset: 1227a275 Author: Serguei Spitsyn Date: 2023-05-02 02:40:50 +0000 URL: https://git.openjdk.org/loom/commit/1227a275a1c1e82b9a6410843f32534d7e841f54 8306028: separate ThreadStart/ThreadEnd events posting code in JVMTI VTMS transitions 8304444: Reappearance of NULL in jvmtiThreadState.cpp Reviewed-by: pchilanomate, lmesnik ! make/data/hotspot-symbols/symbols-unix ! src/hotspot/share/classfile/vmIntrinsics.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/opto/c2compiler.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/java.base/share/classes/java/lang/VirtualThread.java ! src/java.base/share/native/libjava/VirtualThread.c Changeset: 2179a8f2 Author: Joe Wang Date: 2023-05-02 03:12:06 +0000 URL: https://git.openjdk.org/loom/commit/2179a8f2d622f832aa21eb7f48e8ab055bc55731 8298087: XML Schema Validation reports an required attribute twice via ErrorHandler Reviewed-by: naoto ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java + test/jaxp/javax/xml/jaxp/unittest/validation/ErrorHandlingTest.java Changeset: 86f97fe7 Author: Alan Bateman Date: 2023-05-02 07:20:19 +0000 URL: https://git.openjdk.org/loom/commit/86f97fe70c9b55d196876e1e144f26a576492ebe 8305919: java/lang/Thread/virtual/HoldsLock.java#id0 failed, ThreadInfo.getLockInfo() return null Reviewed-by: jpai ! test/jdk/ProblemList-Xcomp.txt + test/jdk/java/lang/Thread/virtual/CarrierThreadWaits.java - test/jdk/java/lang/Thread/virtual/HoldsLock.java ! test/jdk/java/lang/Thread/virtual/ThreadAPI.java Changeset: 860bf9b3 Author: Martin Doerr Date: 2023-05-02 09:19:49 +0000 URL: https://git.openjdk.org/loom/commit/860bf9b35fb168b7b725388c797f193564d9af4d 8307104: [AIX] VM crashes with UseRTMLocking on Power10 Reviewed-by: clanger, lucy ! src/hotspot/cpu/ppc/vm_version_ppc.cpp Changeset: 1532a1b0 Author: Jorn Vernee Date: 2023-05-02 10:42:49 +0000 URL: https://git.openjdk.org/loom/commit/1532a1b0bd72f37b77540af51368271ef80e17d2 8307164: TestSegmentCopy times out (mainline) Reviewed-by: mcimadamore ! test/jdk/java/foreign/TestSegmentCopy.java Changeset: a8d16dea Author: Fredrik Bredberg Committer: Richard Reingruber Date: 2023-05-02 12:14:12 +0000 URL: https://git.openjdk.org/loom/commit/a8d16dea8eb4a2807a4b0349dea708b4d0d6db35 8300197: Freeze/thaw an interpreter frame using a single copy_to_chunk() call Reviewed-by: rrich, pchilanomate, fyang ! src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp ! src/hotspot/cpu/arm/continuationFreezeThaw_arm.inline.hpp ! src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp ! src/hotspot/cpu/riscv/continuationFreezeThaw_riscv.inline.hpp ! src/hotspot/cpu/s390/continuationFreezeThaw_s390.inline.hpp ! src/hotspot/cpu/x86/continuationFreezeThaw_x86.inline.hpp ! src/hotspot/cpu/zero/continuationFreezeThaw_zero.inline.hpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp Changeset: ea9201f4 Author: Thomas Stuefe Date: 2023-05-02 12:18:23 +0000 URL: https://git.openjdk.org/loom/commit/ea9201f42085028f6f16738214f058efb680ac09 8306510: Print number of threads and stack sizes in error reports Reviewed-by: gziemski, dholmes ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/threads.hpp Changeset: 544bd260 Author: Yoshiki Sato Committer: Naoto Sato Date: 2023-05-02 12:42:15 +0000 URL: https://git.openjdk.org/loom/commit/544bd260b6eb7bc7cf79a3739cc94bad658d7d15 8305505: NPE in javazic compiler Reviewed-by: naoto ! test/jdk/sun/util/calendar/zi/GenDoc.java Changeset: 75a4edca Author: Johan Sj?len Date: 2023-05-02 13:04:14 +0000 URL: https://git.openjdk.org/loom/commit/75a4edca6b9fa6b3e66b564aeb4d7ca8acf02491 8301223: Replace NULL with nullptr in share/gc/g1/ Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/c1/g1BarrierSetC1.cpp ! src/hotspot/share/gc/g1/c1/g1BarrierSetC1.hpp ! src/hotspot/share/gc/g1/c2/g1BarrierSetC2.cpp ! src/hotspot/share/gc/g1/g1AllocRegion.cpp ! src/hotspot/share/gc/g1/g1AllocRegion.hpp ! src/hotspot/share/gc/g1/g1AllocRegion.inline.hpp ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1Allocator.hpp ! src/hotspot/share/gc/g1/g1Allocator.inline.hpp ! src/hotspot/share/gc/g1/g1Arguments.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp ! src/hotspot/share/gc/g1/g1BiasedArray.cpp ! src/hotspot/share/gc/g1/g1BiasedArray.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardTable.hpp ! src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp ! src/hotspot/share/gc/g1/g1CodeBlobClosure.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.hpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkBitMap.hpp ! src/hotspot/share/gc/g1/g1ConcurrentRebuildAndScrub.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefine.hpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.hpp ! src/hotspot/share/gc/g1/g1FreeIdSet.cpp ! src/hotspot/share/gc/g1/g1FromCardCache.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1HeapRegionTraceType.hpp ! src/hotspot/share/gc/g1/g1HeapTransition.cpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1NUMA.cpp ! src/hotspot/share/gc/g1/g1NUMAStats.cpp ! src/hotspot/share/gc/g1/g1OopClosures.cpp ! src/hotspot/share/gc/g1/g1OopClosures.inline.hpp ! src/hotspot/share/gc/g1/g1OopStarChunkedList.hpp ! src/hotspot/share/gc/g1/g1OopStarChunkedList.inline.hpp ! src/hotspot/share/gc/g1/g1PageBasedVirtualSpace.cpp ! src/hotspot/share/gc/g1/g1PageBasedVirtualSpace.hpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1RedirtyCardsQueue.cpp ! src/hotspot/share/gc/g1/g1RegionToSpaceMapper.cpp ! src/hotspot/share/gc/g1/g1RegionToSpaceMapper.hpp ! src/hotspot/share/gc/g1/g1RegionsOnNodes.cpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/g1/g1RemSetSummary.cpp ! src/hotspot/share/gc/g1/g1RootClosures.cpp ! src/hotspot/share/gc/g1/g1RootProcessor.cpp ! src/hotspot/share/gc/g1/g1SATBMarkQueueSet.cpp ! src/hotspot/share/gc/g1/g1ServiceThread.cpp ! src/hotspot/share/gc/g1/g1ServiceThread.hpp ! src/hotspot/share/gc/g1/g1SurvRateGroup.cpp ! src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/gc/g1/heapRegionManager.cpp ! src/hotspot/share/gc/g1/heapRegionManager.hpp ! src/hotspot/share/gc/g1/heapRegionManager.inline.hpp ! src/hotspot/share/gc/g1/heapRegionRemSet.cpp ! src/hotspot/share/gc/g1/heapRegionSet.cpp ! src/hotspot/share/gc/g1/heapRegionSet.hpp ! src/hotspot/share/gc/g1/heapRegionSet.inline.hpp ! src/hotspot/share/gc/g1/heapRegionType.cpp Changeset: a8bf2acb Author: Jorn Vernee Date: 2023-05-02 13:56:32 +0000 URL: https://git.openjdk.org/loom/commit/a8bf2acb7db63b508ef169e42a27b9c99178cbb1 8304888: Add dedicated VMProps for linker and fallback linker Reviewed-by: alanb, mcimadamore ! test/hotspot/jtreg/TEST.ROOT ! test/jdk/TEST.ROOT ! test/jdk/java/foreign/LibraryLookupTest.java ! test/jdk/java/foreign/SafeFunctionAccessTest.java ! test/jdk/java/foreign/StdLibTest.java ! test/jdk/java/foreign/TestAddressDereference.java ! test/jdk/java/foreign/TestClassLoaderFindNative.java ! test/jdk/java/foreign/TestDowncallScope.java ! test/jdk/java/foreign/TestDowncallStack.java ! test/jdk/java/foreign/TestFallbackLookup.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestHeapAlignment.java ! test/jdk/java/foreign/TestIllegalLink.java ! test/jdk/java/foreign/TestIntrinsics.java ! test/jdk/java/foreign/TestLinker.java ! test/jdk/java/foreign/TestMatrix.java ! test/jdk/java/foreign/TestNULLAddress.java ! test/jdk/java/foreign/TestNative.java ! test/jdk/java/foreign/TestNulls.java ! test/jdk/java/foreign/TestScopedOperations.java ! test/jdk/java/foreign/TestSegments.java ! test/jdk/java/foreign/TestStringEncoding.java ! test/jdk/java/foreign/TestUpcallAsync.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/TestVarArgs.java ! test/jdk/java/foreign/arraystructs/TestArrayStructs.java ! test/jdk/java/foreign/capturecallstate/TestCaptureCallState.java ! test/jdk/java/foreign/dontrelease/TestDontRelease.java ! test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccess.java ! test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccessDynamic.java ! test/jdk/java/foreign/handles/Driver.java ! test/jdk/java/foreign/largestub/TestLargeStub.java ! test/jdk/java/foreign/loaderLookup/TestLoaderLookup.java ! test/jdk/java/foreign/loaderLookup/TestLoaderLookupJNI.java ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/foreign/normalize/TestNormalize.java ! test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java ! test/jdk/java/foreign/stackwalk/TestAsyncStackWalk.java ! test/jdk/java/foreign/stackwalk/TestReentrantUpcalls.java ! test/jdk/java/foreign/stackwalk/TestStackWalk.java ! test/jdk/java/foreign/trivial/TestTrivial.java ! test/jdk/java/foreign/trivial/TestTrivialUpcall.java ! test/jdk/java/foreign/upcalldeopt/TestUpcallDeopt.java ! test/jdk/java/foreign/virtual/TestVirtualCalls.java ! test/jtreg-ext/requires/VMProps.java ! test/langtools/TEST.ROOT Changeset: b76f320e Author: Jonathan Gibbons Date: 2023-05-02 16:54:39 +0000 URL: https://git.openjdk.org/loom/commit/b76f320e76f0fb58c598fdd7a5937f1b5bb1de15 8307123: Fix deprecation warnings in DPrinter Reviewed-by: vromero ! test/langtools/tools/javac/lib/DPrinter.java Changeset: 8c106b0c Author: Liam Miller-Cushon Date: 2023-05-02 18:19:03 +0000 URL: https://git.openjdk.org/loom/commit/8c106b0c8e4562a44ecd1e069c0911acfc428ecf 8303784: no- at Target annotations should be applicable to type parameter declarations Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java + test/langtools/tools/javac/annotations/typeAnnotations/NoTargetOnTypeParameterDeclaration.java + test/langtools/tools/javac/annotations/typeAnnotations/NoTargetOnTypeParameterDeclaration.out Changeset: 8a70664e Author: Kim Barrett Date: 2023-05-02 21:27:01 +0000 URL: https://git.openjdk.org/loom/commit/8a70664e5248cd6b9d63951729e93bf73eff004c 8293117: Add atomic bitset functions Reviewed-by: shade, coleenp, dholmes ! src/hotspot/share/runtime/atomic.hpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 05b9b582 Author: Stuart Marks Date: 2023-05-02 23:19:30 +0000 URL: https://git.openjdk.org/loom/commit/05b9b5821db0e0d5d998a1bd8574aa6021878c9e 8302496: Runtime.exit incorrectly says it never throws an exception Reviewed-by: alanb ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/System.java Changeset: 76991c81 Author: Harshitha Onkar Date: 2023-05-02 23:22:17 +0000 URL: https://git.openjdk.org/loom/commit/76991c8129a6599a3dfaa0cfdc77a23014a02b35 8282232: [Win] GetMousePositionWithPopup test fails due to wrong mouse position Reviewed-by: prr ! test/jdk/java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java Changeset: 74667e3d Author: Eamonn McManus Date: 2023-05-02 23:26:01 +0000 URL: https://git.openjdk.org/loom/commit/74667e3d56a0e6780363359b69007770f5678d8e 8303919: Instant.ofEpochMilli says it can throw an exception that it can't Reviewed-by: rriggs ! src/java.base/share/classes/java/time/Instant.java Changeset: 418a8255 Author: Damon Nguyen Date: 2023-05-02 23:45:44 +0000 URL: https://git.openjdk.org/loom/commit/418a82551a2c58e43963beb5aa242a58bbd30e2f 8306466: Open source more AWT Drag & Drop related tests Reviewed-by: prr + test/jdk/java/awt/dnd/RejectDragDropActionTest.java + test/jdk/java/awt/dnd/RemoveDragSourceListenerTest.java + test/jdk/java/awt/dnd/RemoveParentChildDropTargetTest.java + test/jdk/java/awt/dnd/SameJVMModalDialogDeadlockTest.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/SkipDropCompleteTest.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/SourceFrame.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/TargetFrame.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/TransferableObject.java Changeset: 0b5b6429 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-03 02:23:41 +0000 URL: https://git.openjdk.org/loom/commit/0b5b6429a080c6526daeb262fee96e7d0408b4f8 8307150: RISC-V: Remove remaining StoreLoad barrier with UseCondCardMark for Serial/Parallel GC Reviewed-by: shade, fyang ! src/hotspot/cpu/riscv/gc/shared/cardTableBarrierSetAssembler_riscv.cpp Changeset: c8f37564 Author: Adam Sotona Date: 2023-05-03 06:34:58 +0000 URL: https://git.openjdk.org/loom/commit/c8f37564bf0983f449195434378479e1adfc1466 8306729: Add nominal descriptors of modules and packages to Constants API Reviewed-by: mchung ! src/java.base/share/classes/java/lang/constant/ConstantUtils.java + src/java.base/share/classes/java/lang/constant/ModuleDesc.java + src/java.base/share/classes/java/lang/constant/ModuleDescImpl.java + src/java.base/share/classes/java/lang/constant/PackageDesc.java + src/java.base/share/classes/java/lang/constant/PackageDescImpl.java ! src/java.base/share/classes/java/lang/constant/package-info.java + test/jdk/java/lang/constant/ModuleDescTest.java + test/jdk/java/lang/constant/PackageDescTest.java Changeset: 462b1df7 Author: Erik ?sterlund Date: 2023-05-03 08:16:15 +0000 URL: https://git.openjdk.org/loom/commit/462b1df7587470756d9e565342552d1a52b62c27 8307106: Allow concurrent GCs to walk CLDG without ClassLoaderDataGraph_lock Reviewed-by: stefank, aboldtch, coleenp, dholmes ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/classfile/classLoaderDataGraph.cpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: e0774bed Author: Roland Westrelin Date: 2023-05-03 08:29:01 +0000 URL: https://git.openjdk.org/loom/commit/e0774bed2d2fcd850f5ca6884dd7aeb45f0bdaef 8306997: C2: "malformed control flow" assert due to missing safepoint on backedge with a switch Reviewed-by: thartmann, kvn ! src/hotspot/share/opto/parse2.cpp + test/hotspot/jtreg/compiler/parsing/MissingSafepointOnSwitch.jasm + test/hotspot/jtreg/compiler/parsing/TestMissingSafepointOnSwitch.java Changeset: 891530fb Author: Albert Mingkun Yang Date: 2023-05-03 09:26:27 +0000 URL: https://git.openjdk.org/loom/commit/891530fbc9aa3031d7903970d9248405951c8521 8307005: Make CardTableBarrierSet::initialize non-virtual Reviewed-by: dholmes ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp Changeset: fcb280a4 Author: Aleksey Shipilev Date: 2023-05-03 09:39:57 +0000 URL: https://git.openjdk.org/loom/commit/fcb280a48bf9f562e6c0982c1d7a0076ee2e736e 8305092: Improve Thread.sleep(millis, nanos) for sub-millisecond granularity Reviewed-by: dholmes, alanb ! src/hotspot/os/posix/os_posix.cpp ! src/hotspot/os/posix/park_posix.hpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/os/windows/park_windows.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/java.base/share/classes/java/lang/Thread.java + test/jdk/java/lang/Thread/SleepSanity.java + test/micro/org/openjdk/bench/java/lang/ThreadSleep.java Changeset: e9807a4b Author: Emanuel Peter Date: 2023-05-03 10:45:30 +0000 URL: https://git.openjdk.org/loom/commit/e9807a4b0f3533512623fba96042472b69d4ac34 8306042: C2: failed: Missed optimization opportunity in PhaseCCP (adding LShift->Cast->Add notification) Reviewed-by: thartmann, chagedorn, kvn ! src/hotspot/share/opto/castnode.hpp ! src/hotspot/share/opto/phaseX.cpp + test/hotspot/jtreg/compiler/ccp/TestShiftCastAndNotification.java Changeset: ccf91f88 Author: Roland Westrelin Date: 2023-05-03 11:14:53 +0000 URL: https://git.openjdk.org/loom/commit/ccf91f881c06308f39740751161111946487abf1 8306933: C2: "assert(false) failed: infinite loop" failure Reviewed-by: chagedorn, thartmann ! src/hotspot/share/opto/compile.cpp + test/hotspot/jtreg/compiler/c2/TestInfiniteLoopCompilationFailure.java Changeset: fc76687c Author: Thomas Schatzl Date: 2023-05-03 13:50:02 +0000 URL: https://git.openjdk.org/loom/commit/fc76687c2fac39fcbf706c419bfa170b8efa5747 8306836: Remove pinned tag for G1 heap regions Reviewed-by: ayang, cjplummer, sspitsyn ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp ! src/hotspot/share/gc/g1/g1FullGCHeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.inline.hpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/gc/g1/heapRegionType.hpp ! src/hotspot/share/gc/g1/vmStructs_g1.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/HeapRegion.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/HeapRegionType.java Changeset: 3930709a Author: Jonathan Gibbons Date: 2023-05-03 17:32:24 +0000 URL: https://git.openjdk.org/loom/commit/3930709af40c2524622f379e16b90a0226bedf2a 8068925: Add @Override in javax.tools classes Reviewed-by: darcy, iris ! src/java.compiler/share/classes/javax/tools/DiagnosticCollector.java ! src/java.compiler/share/classes/javax/tools/DocumentationTool.java ! src/java.compiler/share/classes/javax/tools/JavaCompiler.java ! src/java.compiler/share/classes/javax/tools/SimpleJavaFileObject.java Changeset: 705ad7d8 Author: Matthew Donovan Committer: Xue-Lei Andrew Fan Date: 2023-05-03 18:00:10 +0000 URL: https://git.openjdk.org/loom/commit/705ad7d829dcbf8f5e2f098275d0856f6b86db2d 8306014: Update javax.net.ssl TLS tests to use SSLContextTemplate or SSLEngineTemplate Reviewed-by: xuelei ! test/jdk/javax/net/ssl/ALPN/SSLEngineAlpnTest.java ! test/jdk/javax/net/ssl/TLSv12/DisabledShortDSAKeys.java ! test/jdk/javax/net/ssl/TLSv12/ShortRSAKey512.java ! test/jdk/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java ! test/jdk/javax/net/ssl/TLSv12/SignatureAlgorithms.java ! test/jdk/javax/net/ssl/templates/SSLContextTemplate.java Changeset: eedcde24 Author: Alan Bateman Date: 2023-05-04 07:48:45 +0000 URL: https://git.openjdk.org/loom/commit/eedcde2498c9ddd35b00a2f11244bbcf5d09b863 Merge with jdk-21+21 ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/lang/Thread.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! test/hotspot/jtreg/ProblemList.txt ! test/jdk/TEST.groups ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/lang/Thread.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! test/hotspot/jtreg/ProblemList.txt ! test/jdk/TEST.groups From duke at openjdk.org Thu May 4 08:50:07 2023 From: duke at openjdk.org (duke) Date: Thu, 4 May 2023 08:50:07 GMT Subject: git: openjdk/loom: master: 95 new changesets Message-ID: <639f8fc9-63b6-4c2b-af62-9f259e67b80e@openjdk.org> Changeset: 1e4eafb4 Author: Archie Cobbs Committer: Sergey Bylokhov Date: 2023-04-26 22:45:10 +0000 URL: https://git.openjdk.org/loom/commit/1e4eafb4fe70832294a12938d93e7860073cf4cf 8071693: Introspector ignores default interface methods Reviewed-by: prr, aivanov, serb ! src/java.desktop/share/classes/com/sun/beans/introspect/MethodInfo.java + test/jdk/java/beans/Introspector/DefaultMethodBeanPropertyTest.java Changeset: 9ebcda21 Author: David Holmes Date: 2023-04-26 22:47:54 +0000 URL: https://git.openjdk.org/loom/commit/9ebcda2165c42e3f7b82a9ae8074badb69c0d270 8229147: Linux os::create_thread() overcounts guardpage size with newer glibc (>=2.27) Reviewed-by: shade, stuefe ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/posix/os_posix.cpp Changeset: 27c5c107 Author: Thomas Stuefe Date: 2023-04-27 04:57:29 +0000 URL: https://git.openjdk.org/loom/commit/27c5c1070ac559caa8dbad598337046f59355464 8306883: Thread stacksize is reported with wrong units in os::create_thread logging Reviewed-by: shade ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/windows/os_windows.cpp Changeset: 748476fd Author: Axel Boldt-Christmas Date: 2023-04-27 06:56:22 +0000 URL: https://git.openjdk.org/loom/commit/748476fd80ec93c25d823bc5088c706fcf3c7e65 8306732: TruncatedSeq::predict_next() attempts linear regression with only one data point Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/utilities/numberSeq.cpp Changeset: de0c05da Author: Dmitry Cherepanov Date: 2023-04-27 07:06:24 +0000 URL: https://git.openjdk.org/loom/commit/de0c05da07859ee4552b73a39a35cc8cd37b78b0 6995195: Static initialization deadlock in sun.java2d.loops.Blit and GraphicsPrimitiveMgr Reviewed-by: serb, aivanov ! src/java.desktop/share/classes/sun/java2d/loops/Blit.java ! src/java.desktop/share/classes/sun/java2d/loops/BlitBg.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphList.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListAA.java ! src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListColor.java ! src/java.desktop/share/classes/sun/java2d/loops/FillRect.java ! src/java.desktop/share/classes/sun/java2d/loops/GraphicsPrimitiveMgr.java ! src/java.desktop/share/classes/sun/java2d/loops/MaskBlit.java ! src/java.desktop/share/classes/sun/java2d/loops/MaskFill.java + test/jdk/sun/java2d/loops/GraphicsPrimitiveMgrTest.java Changeset: a83c02fe Author: Thomas Stuefe Date: 2023-04-27 07:26:34 +0000 URL: https://git.openjdk.org/loom/commit/a83c02fe2ca52a39018be630b6373f73361fcf3d 8306654: Disable NMT location_printing_cheap_dead_xx tests again Reviewed-by: dholmes ! test/hotspot/gtest/nmt/test_nmt_locationprinting.cpp Changeset: d94ce656 Author: Thomas Schatzl Date: 2023-04-27 07:28:06 +0000 URL: https://git.openjdk.org/loom/commit/d94ce6566d50fc0a6218adbb64d8f90e9eeb844a 8306858: Remove some remnants of CMS from SA agent Reviewed-by: shade, cjplummer, kbarrett, ysr ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeapName.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/Generation.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java Changeset: 41d58533 Author: Daniel Fuchs Date: 2023-04-27 08:25:40 +0000 URL: https://git.openjdk.org/loom/commit/41d58533aca29d439db264540e85c4fa165f19f6 8306940: test/jdk/java/net/httpclient/XxxxInURI.java should call HttpClient::close Reviewed-by: jpai, djelinski ! test/jdk/java/net/httpclient/EncodedCharsInURI.java ! test/jdk/java/net/httpclient/EscapedOctetsInURI.java ! test/jdk/java/net/httpclient/NonAsciiCharsInURI.java Changeset: cbccc4c8 Author: Per Minborg Date: 2023-04-27 09:00:58 +0000 URL: https://git.openjdk.org/loom/commit/cbccc4c8172797ea2f1b7c301d00add3f517546d 8304265: Implementation of Foreign Function and Memory API (Third Preview) Co-authored-by: Maurizio Cimadamore Co-authored-by: Jorn Vernee Co-authored-by: Paul Sandoz Co-authored-by: Feilong Jiang Co-authored-by: Per Minborg Reviewed-by: erikj, jvernee, vlivanov, psandoz ! make/autoconf/configure.ac ! make/autoconf/jdk-options.m4 ! make/autoconf/libraries.m4 ! make/autoconf/spec.gmk.in ! make/conf/jib-profiles.js ! make/data/hotspot-symbols/symbols-shared + make/devkit/createLibffiBundle.sh ! make/modules/java.base/Lib.gmk ! src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp ! src/hotspot/cpu/aarch64/foreignGlobals_aarch64.cpp ! src/hotspot/cpu/arm/downcallLinker_arm.cpp ! src/hotspot/cpu/arm/foreignGlobals_arm.cpp ! src/hotspot/cpu/ppc/downcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp ! src/hotspot/cpu/riscv/downcallLinker_riscv.cpp ! src/hotspot/cpu/riscv/foreignGlobals_riscv.cpp ! src/hotspot/cpu/s390/downcallLinker_s390.cpp ! src/hotspot/cpu/s390/foreignGlobals_s390.cpp ! src/hotspot/cpu/x86/downcallLinker_x86_32.cpp ! src/hotspot/cpu/x86/downcallLinker_x86_64.cpp ! src/hotspot/cpu/x86/foreignGlobals_x86_32.cpp ! src/hotspot/cpu/x86/foreignGlobals_x86_64.cpp ! src/hotspot/cpu/zero/downcallLinker_zero.cpp ! src/hotspot/cpu/zero/foreignGlobals_zero.cpp ! src/hotspot/cpu/zero/globalDefinitions_zero.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/downcallLinker.cpp ! src/hotspot/share/prims/downcallLinker.hpp ! src/hotspot/share/prims/foreignGlobals.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/nativeEntryPoint.cpp ! src/hotspot/share/prims/upcallLinker.cpp + src/java.base/share/classes/java/lang/foreign/AddressLayout.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/MemoryLayout.java ! src/java.base/share/classes/java/lang/foreign/MemorySegment.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/nio/Buffer.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java ! src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/HeapMemorySegmentImpl.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/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/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/BindingInterpreter.java ! src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java ! src/java.base/share/classes/jdk/internal/foreign/abi/CallingSequence.java ! src/java.base/share/classes/jdk/internal/foreign/abi/CapturableState.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/NativeEntryPoint.java ! src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.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/AArch64Architecture.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.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/aarch64/windows/WindowsAArch64Linker.java - src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/windows/WindowsAArch64VaList.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIABI.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIStatus.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIType.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java + src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/RISCV64Architecture.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64CallArranger.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64Linker.java - src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64VaList.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/X86_64Architecture.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/windows/CallArranger.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/vm/ForeignLinkerSupport.java ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java + src/java.base/share/native/libfallbackLinker/fallbackLinker.c + src/java.base/share/native/libjava/ForeignLinkerSupport.c ! test/jdk/TEST.groups ! 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/TestAddressDereference.java ! test/jdk/java/foreign/TestArrays.java ! test/jdk/java/foreign/TestByteBuffer.java ! test/jdk/java/foreign/TestClassLoaderFindNative.java + test/jdk/java/foreign/TestDereferencePath.java ! test/jdk/java/foreign/TestDowncallScope.java ! test/jdk/java/foreign/TestDowncallStack.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/TestMemoryAccess.java ! test/jdk/java/foreign/TestMemoryAccessInstance.java ! test/jdk/java/foreign/TestMemoryAlignment.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/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/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/TestVarArgs.java ! test/jdk/java/foreign/TestVarHandleCombinators.java - test/jdk/java/foreign/ThrowingUpcall.java ! test/jdk/java/foreign/UpcallTestHelper.java ! test/jdk/java/foreign/arraystructs/TestArrayStructs.java + test/jdk/java/foreign/callarranger/TestLayoutEquality.java ! test/jdk/java/foreign/callarranger/TestLinuxAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestMacOsAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestRISCV64CallArranger.java ! test/jdk/java/foreign/callarranger/TestSysVCallArranger.java ! test/jdk/java/foreign/callarranger/TestWindowsAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestWindowsCallArranger.java + test/jdk/java/foreign/callarranger/platform/PlatformLayouts.java ! test/jdk/java/foreign/capturecallstate/TestCaptureCallState.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/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/libAddressDereference.c ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/foreign/normalize/TestNormalize.java ! test/jdk/java/foreign/stackwalk/TestAsyncStackWalk.java ! test/jdk/java/foreign/stackwalk/TestReentrantUpcalls.java ! test/jdk/java/foreign/stackwalk/TestStackWalk.java + test/jdk/java/foreign/trivial/TestTrivial.java + test/jdk/java/foreign/trivial/TestTrivialUpcall.java + test/jdk/java/foreign/trivial/libTrivial.c ! test/jdk/java/foreign/upcalldeopt/TestUpcallDeopt.java - test/jdk/java/foreign/valist/VaListTest.java - test/jdk/java/foreign/valist/libVaList.c ! 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/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/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/MemorySegmentVsBits.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/libPtr.c - test/micro/org/openjdk/bench/java/lang/foreign/libVaList.c ! test/micro/org/openjdk/bench/java/lang/foreign/pointers/NativeType.java ! test/micro/org/openjdk/bench/java/lang/foreign/pointers/PointerBench.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 Changeset: ba436495 Author: bobpengxie Committer: Jie Fu Date: 2023-04-27 09:19:13 +0000 URL: https://git.openjdk.org/loom/commit/ba43649530f7fcf29c17d273cfc09c49f6c3a8b5 8306976: UTIL_REQUIRE_SPECIAL warning on grep Reviewed-by: clanger, mbaesken ! make/autoconf/basic_tools.m4 Changeset: 1be80a44 Author: Roberto Casta?eda Lozano Date: 2023-04-27 09:39:53 +0000 URL: https://git.openjdk.org/loom/commit/1be80a4445cf74adc9b2cd5bf262a897f9ede74f 8287087: C2: perform SLP reduction analysis on-demand Reviewed-by: epeter, jbhateja, thartmann ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/adlc/main.cpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! test/hotspot/jtreg/compiler/c2/irTests/TestSuperwordFailsUnrolling.java + test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxReductions.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java + test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java ! test/micro/org/openjdk/bench/vm/compiler/FpMinMaxIntrinsics.java ! test/micro/org/openjdk/bench/vm/compiler/VectorReduction.java Changeset: 96cdf93b Author: Albert Mingkun Yang Date: 2023-04-27 11:40:50 +0000 URL: https://git.openjdk.org/loom/commit/96cdf93b425612ec2e7815fec4f6f6fcc0e70f47 8306833: Change CardTable::_covered to static array Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/shared/cardTable.cpp ! src/hotspot/share/gc/shared/cardTable.hpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp Changeset: fed262a9 Author: Jiangli Zhou Date: 2023-04-27 15:57:51 +0000 URL: https://git.openjdk.org/loom/commit/fed262a9cf324ce7f2c61f4471c88bc84af8e3d0 8306949: Resolve miscellaneous multiple symbol definition issues when statically linking JDK/VM natives with standard launcher Reviewed-by: alanb ! src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c ! src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c ! src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.c ! src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h ! src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c ! src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/j2secmod_md.c Changeset: 41ba05e4 Author: Abhishek Kumar Date: 2023-04-27 15:59:42 +0000 URL: https://git.openjdk.org/loom/commit/41ba05e450ed4467535bcee81946099e38665c3f 8306850: Open source AWT Model related tests Reviewed-by: serb, azvegint + test/jdk/java/awt/Modal/BlockedMouseInputTest.java + test/jdk/java/awt/Modal/BlockedMouseInputTest2.java + test/jdk/java/awt/Modal/BlockedMouseInputTest3.java + test/jdk/java/awt/Modal/ModalDialogCannotBeMadeNonModalTest.java + test/jdk/java/awt/Modal/NonModalDialogReceiveEventsAfterModalTest.java + test/jdk/java/awt/Modal/ParentCatchupDraggingChildDialogTest.java Changeset: eb358619 Author: Raffaello Giulietti Date: 2023-04-27 17:01:56 +0000 URL: https://git.openjdk.org/loom/commit/eb358619dfc344348d72cfe29d50829ba7ca1aea 8205592: BigDecimal.doubleValue() is depressingly slow Reviewed-by: darcy ! src/java.base/share/classes/java/math/BigDecimal.java + test/jdk/java/math/BigDecimal/DoubleFloatValueTests.java Changeset: 80fae514 Author: Brian Burkhalter Date: 2023-04-27 17:20:08 +0000 URL: https://git.openjdk.org/loom/commit/80fae514b16bfe38ff29f71f8cdc6d4c3482ad3d 8306959: (bf) CharBuffer.append(CharSequence,int,int) throws BufferOverflowException where IndexOutOfBoundsException expected Reviewed-by: alanb ! src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! test/jdk/java/nio/Buffer/Basic-X.java.template ! test/jdk/java/nio/Buffer/Basic.java ! test/jdk/java/nio/Buffer/BasicByte.java ! test/jdk/java/nio/Buffer/BasicChar.java ! test/jdk/java/nio/Buffer/BasicDouble.java ! test/jdk/java/nio/Buffer/BasicFloat.java ! test/jdk/java/nio/Buffer/BasicInt.java ! test/jdk/java/nio/Buffer/BasicLong.java ! test/jdk/java/nio/Buffer/BasicShort.java Changeset: 6983d05b Author: Naoto Sato Date: 2023-04-27 18:12:41 +0000 URL: https://git.openjdk.org/loom/commit/6983d05b73258f11dcb35bc3961b724ba58d9667 8306927: Collator treats "v" and "w" as the same letter for Swedish language locale. Reviewed-by: jlu, iris, joehw ! src/jdk.localedata/share/classes/sun/text/resources/ext/CollationData_sv.java + test/jdk/sun/text/resources/Collator/SwedishTest.java Changeset: 78713909 Author: Jonathan Gibbons Date: 2023-04-27 19:13:03 +0000 URL: https://git.openjdk.org/loom/commit/7871390930920f0acc0dacde77dafe01f9e6c865 8306952: improve generic signature of internal DCInlineTag class Reviewed-by: iris ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java Changeset: b827ce83 Author: Roger Riggs Date: 2023-04-27 20:36:40 +0000 URL: https://git.openjdk.org/loom/commit/b827ce8334c568d72990985ff6077db8334e2754 8298993: (process) java/lang/ProcessBuilder/UnblockSignals.java fails Reviewed-by: bchristi ! test/jdk/java/lang/ProcessBuilder/UnblockSignals.java Changeset: f3c90f04 Author: Justin Lu Date: 2023-04-28 00:16:29 +0000 URL: https://git.openjdk.org/loom/commit/f3c90f0445df359a8bc03630fc5cde2843bbfef1 8306711: Improve diagnosis of `IntlTest` framework Reviewed-by: naoto, lancea ! test/jdk/java/text/Normalizer/ICUBasicTest.java ! test/jdk/java/text/testlib/IntlTest.java Changeset: d3abfec8 Author: Kim Barrett Date: 2023-04-28 03:11:00 +0000 URL: https://git.openjdk.org/loom/commit/d3abfec8b7ce901150952356f9f1109d09a8cb2a 8305566: Change StringDedup thread to derive from JavaThread Reviewed-by: stefank, cjplummer, tschatzl ! src/hotspot/share/gc/shared/stringdedup/stringDedup.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupProcessor.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupProcessor.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupStat.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupStat.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupTable.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupTable.hpp + src/hotspot/share/gc/shared/stringdedup/stringDedupThread.cpp + src/hotspot/share/gc/shared/stringdedup/stringDedupThread.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/runtime/java.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/hotspot/share/runtime/javaThread.inline.hpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/vmStructs.cpp + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/StringDedupThread.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/Threads.java Changeset: eb3af8ab Author: Richard Reingruber Date: 2023-04-28 06:06:56 +0000 URL: https://git.openjdk.org/loom/commit/eb3af8abe9743669887445f8fc5ff647187f983a 8306901: Macro offset_of confuses Eclipse CDT Reviewed-by: stuefe, kbarrett ! src/hotspot/share/utilities/globalDefinitions_gcc.hpp Changeset: 0b5c504a Author: Thomas Stuefe Date: 2023-04-28 06:08:24 +0000 URL: https://git.openjdk.org/loom/commit/0b5c504ad00c3a2b64bbb049934ce069fac1d5a3 8306696: Remove MetaspaceReclaimPolicy=aggressive and obsolete MetaspaceReclaimPolicy Reviewed-by: dholmes, rkennke, coleenp ! src/hotspot/share/memory/metaspace/metaspaceReporter.cpp ! src/hotspot/share/memory/metaspace/metaspaceSettings.cpp ! src/hotspot/share/memory/metaspace/metaspaceSettings.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! test/hotspot/jtreg/gtest/MetaspaceGtests.java ! test/hotspot/jtreg/runtime/Metaspace/PrintMetaspaceDcmd.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/MetaspaceTestManyArenasManyThreads.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/MetaspaceTestWithThreads.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/Settings.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocation.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT1.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT2.java Changeset: 84df74ca Author: Afshin Zafari Committer: Tobias Hartmann Date: 2023-04-28 06:32:25 +0000 URL: https://git.openjdk.org/loom/commit/84df74ca3948c50d8e6f24694310860ed3888aba 8305079: Remove finalize() from compiler/c2/Test719030 Reviewed-by: thartmann, coleenp ! test/hotspot/jtreg/compiler/c2/Test7190310.java Changeset: 3d9d84b7 Author: Matthias Baesken Date: 2023-04-28 06:50:06 +0000 URL: https://git.openjdk.org/loom/commit/3d9d84b742ef351572137bec50aa157f36a260d6 8307006: ProblemList gtest/NMTGtest.java on aix Reviewed-by: mdoerr ! test/hotspot/jtreg/ProblemList.txt Changeset: 60a29a66 Author: Aleksei Voitylov Committer: Aleksey Shipilev Date: 2023-04-28 09:41:55 +0000 URL: https://git.openjdk.org/loom/commit/60a29a668c07cf7c15728063b19bb235c5fd2052 8305387: JDK-8301995 breaks arm 32-bit Reviewed-by: shade, matsaave ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.hpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/cpu/arm/templateTable_arm.cpp Changeset: fee02f06 Author: Amit Kumar Committer: Volker Simonis Date: 2023-04-28 11:55:59 +0000 URL: https://git.openjdk.org/loom/commit/fee02f066879e77e55e217660daa46607778b6e8 8299748: java/util/zip/Deinflate.java failing on s390x Reviewed-by: jpai, lancea, simonis, aturbanov ! test/jdk/java/util/zip/DeInflate.java Changeset: 452cb843 Author: Jie Fu Date: 2023-04-28 12:27:16 +0000 URL: https://git.openjdk.org/loom/commit/452cb8432f4d45c3dacd4415bc9499ae73f7a17c 8307103: Two TestMetaspaceAllocationMT tests fail after JDK-8306696 Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT1.java ! test/hotspot/jtreg/runtime/Metaspace/elastic/TestMetaspaceAllocationMT2.java Changeset: 83a98c66 Author: Antonios Printezis Date: 2023-04-28 12:31:48 +0000 URL: https://git.openjdk.org/loom/commit/83a98c66f1747fec3da77578b646498c4cb5637d 8307063: When cross-compiling with hsdis/binutils, buildjdk creation fails Reviewed-by: erikj ! make/autoconf/buildjdk-spec.gmk.in Changeset: 5d9baa2f Author: JoKern65 Committer: Matthias Baesken Date: 2023-04-28 13:07:53 +0000 URL: https://git.openjdk.org/loom/commit/5d9baa2f9385d66cdf2ff8f065d165385eb48a22 8306672: support offset in dll_address_to_library_name on AIX Reviewed-by: stuefe, clanger, mbaesken ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/aix/porting_aix.cpp ! src/hotspot/os/aix/porting_aix.hpp Changeset: 169a7c27 Author: Tejesh R Date: 2023-04-28 14:27:38 +0000 URL: https://git.openjdk.org/loom/commit/169a7c27a7c6521fbfb1e61fbe85e6d7b0470619 8306640: Open source several AWT TextArea related tests Reviewed-by: prr, serb + test/jdk/java/awt/TextArea/ReplaceRangeTest.java + test/jdk/java/awt/TextArea/TextAreaCRLFAutoDetectTest.java + test/jdk/java/awt/TextArea/TextLengthTest.java + test/jdk/java/awt/TextArea/TextLimitTest.java Changeset: 485a0691 Author: Tejesh R Date: 2023-04-28 14:35:16 +0000 URL: https://git.openjdk.org/loom/commit/485a0691f4a762e9673967b7873356fb65afc5bc 8306432: Open source several AWT Text Component related tests Reviewed-by: prr + test/jdk/java/awt/TextComponent/CorrectSetCaretPositionDuringInitPeerTest.java + test/jdk/java/awt/TextComponent/DeselectionDuringDoSelectionNonVisibleTest.java + test/jdk/java/awt/TextComponent/GetCaretPosOutOfBoundsTest.java + test/jdk/java/awt/TextComponent/InitialInsertionCaretPositionTest.java + test/jdk/java/awt/TextComponent/MiddleMouseClickPasteTest.java Changeset: cf799ba2 Author: Coleen Phillimore Date: 2023-04-28 15:14:30 +0000 URL: https://git.openjdk.org/loom/commit/cf799ba232dcacd1d91a7dab4dc4bf8de9ac258e 8306950: [REDO] JDK-8305252 make_method_handle_intrinsic may call java code under a lock Reviewed-by: dholmes, matsaave, iklam ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: e1196584 Author: Calvin Cheung Date: 2023-04-28 15:45:44 +0000 URL: https://git.openjdk.org/loom/commit/e1196584d5c61e3a6baa3eb96801a518cd5dca64 8303475: potential null pointer dereference in filemap.cpp Reviewed-by: dholmes ! src/hotspot/share/cds/filemap.cpp Changeset: a177152f Author: Dean Long Date: 2023-04-28 15:48:39 +0000 URL: https://git.openjdk.org/loom/commit/a177152f224cdaa3ef24a90baa57f1b42c0cc220 8306331: assert((cnt > 0.0f) && (prob > 0.0f)) failed: Bad frequency assignment in if Reviewed-by: thartmann, chagedorn ! src/hotspot/share/opto/parse2.cpp Changeset: 82ccfe3a Author: Rajan Halade Date: 2023-04-28 16:18:02 +0000 URL: https://git.openjdk.org/loom/commit/82ccfe3a21f6f9933d96c52286ecb4d6b432abb2 8305975: Add TWCA Global Root CA Reviewed-by: mullan + src/java.base/share/data/cacerts/twcaglobalrootca + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/TWCAGlobalCA.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: f83e7302 Author: Madjosz <28844868+Madjosz at users.noreply.github.com> Committer: Naoto Sato Date: 2023-04-28 16:23:13 +0000 URL: https://git.openjdk.org/loom/commit/f83e7302c1660c128f866daa7317bc1dce156686 8302983: ZoneRulesProvider.registerProvider() twice will remove provider Reviewed-by: naoto ! src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java ! test/jdk/java/time/test/java/time/zone/TestZoneRulesProvider.java Changeset: 9ff55508 Author: Weijun Wang Date: 2023-04-28 16:24:50 +0000 URL: https://git.openjdk.org/loom/commit/9ff555083a1ba367ea157b8e1de28e62c1ce2f19 8307077: Convert CRLF to LF in java.xml.crypto Reviewed-by: mullan ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.dtd ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_de.properties ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_en.properties Changeset: 89711f37 Author: Phil Race Date: 2023-04-28 18:17:24 +0000 URL: https://git.openjdk.org/loom/commit/89711f376751d4cfa05758705867afedfafeb602 8307079: Update test java/awt/Choice/DragOffNoSelect.java Reviewed-by: azvegint, serb ! test/jdk/java/awt/Choice/DragOffNoSelectTest.java Changeset: 6d6f726b Author: Alexander Zuev Date: 2023-04-28 18:46:48 +0000 URL: https://git.openjdk.org/loom/commit/6d6f726b74f7fcd3e7c37d50bd2476b3e921662b 8307078: Opensource and clean up five more AWT Focus related tests Reviewed-by: serb, prr + test/jdk/java/awt/Focus/FocusForRemovedComponentTest.java + test/jdk/java/awt/Focus/FocusTraversalPolicyIAE.java + test/jdk/java/awt/Focus/InitialFocusTest.java + test/jdk/java/awt/Focus/LabelScrollBarFocus.java + test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java Changeset: ec5c7926 Author: Damon Nguyen Date: 2023-04-28 19:16:12 +0000 URL: https://git.openjdk.org/loom/commit/ec5c7926f3cea68bf0d0ceb460a8383f5e4ea278 8306133: Open source few AWT Drag & Drop related tests Reviewed-by: prr, psadhukhan + test/jdk/java/awt/dnd/NextDropActionTest/NextDropActionTest.java + test/jdk/java/awt/dnd/NoFormatsDragEnterTest/NoFormatsDragEnterTest.java + test/jdk/java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java + test/jdk/java/awt/dnd/NoTargetNoDragExitTest/NoTargetNoDragExitTest.java + test/jdk/java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java Changeset: 05af487a Author: Damon Nguyen Date: 2023-04-28 19:20:16 +0000 URL: https://git.openjdk.org/loom/commit/05af487a2d9b85b87d13ea23776d04e52c67bf49 8306681: Open source more AWT DnD related tests Reviewed-by: prr, serb + test/jdk/java/awt/dnd/ZeroFormatTransferableTest.java + test/jdk/java/awt/event/ComponentEvent/ComponentResizedTest.java + test/jdk/java/awt/event/ComponentEvent/ObjectSourceTest.java + test/jdk/java/awt/event/ComponentEvent/ResizeDeniedTest.java + test/jdk/java/awt/event/FocusEvent/OppositeSerialization/OppositeSerialization.java + test/jdk/java/awt/event/FocusEvent/OppositeSerialization/old.ser + test/jdk/java/awt/event/HierarchyEvent/HierarchyEventOnWindowTest.java Changeset: da9efee1 Author: Stuart Marks Date: 2023-04-28 19:45:29 +0000 URL: https://git.openjdk.org/loom/commit/da9efee1c25f76f80fee9065680e7d75d03c7178 8296935: Arrays.asList() can return a List that throws undocumented ArrayStoreException Reviewed-by: rriggs, lancea ! src/java.base/share/classes/java/util/Arrays.java Changeset: 4818c798 Author: Jorn Vernee Date: 2023-04-28 21:43:33 +0000 URL: https://git.openjdk.org/loom/commit/4818c798bcd0ae84cd15c7ab101902896b620016 8307110: zero build broken after JDK-8304265 Reviewed-by: erikj ! make/conf/jib-profiles.js ! make/devkit/createLibffiBundle.sh Changeset: b8de3943 Author: Phil Race Date: 2023-04-28 22:39:17 +0000 URL: https://git.openjdk.org/loom/commit/b8de39431dca90e63552968829a349a9b63e68ca 8307080: Open source some more JComboBox jtreg tests Reviewed-by: kizune + test/jdk/javax/swing/JComboBox/bug4171464.java + test/jdk/javax/swing/JComboBox/bug4244614.java + test/jdk/javax/swing/JComboBox/bug4276920.java + test/jdk/javax/swing/JComboBox/bug4924758.java + test/jdk/javax/swing/JComboBox/bug5029504.java Changeset: 1f689241 Author: Phil Race Date: 2023-04-28 22:42:11 +0000 URL: https://git.openjdk.org/loom/commit/1f689241cfcb4083cba283a2010b532948865283 8306955: Open source several JComboBox jtreg tests Reviewed-by: kizune + test/jdk/javax/swing/JComboBox/bug4167850.java + test/jdk/javax/swing/JComboBox/bug4209474.java + test/jdk/javax/swing/JComboBox/bug4234119.java + test/jdk/javax/swing/JComboBox/bug4890345.java + test/jdk/javax/swing/JComboBox/bug4996503.java Changeset: d43a5a28 Author: Sergey Bylokhov Date: 2023-04-29 01:29:13 +0000 URL: https://git.openjdk.org/loom/commit/d43a5a289f4ac84480bf54ab304c1ce1dbc8e067 8307135: java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java failed Reviewed-by: jiefu, prr ! test/jdk/java/awt/dnd/NotReallySerializableTest/NotReallySerializableTest.java Changeset: a2d3fc83 Author: SirYwell Committer: Julian Waters Date: 2023-04-29 07:48:14 +0000 URL: https://git.openjdk.org/loom/commit/a2d3fc83b0dd7eea38e1dd5898a97d6d7ff60194 8304837: Classfile API throws IOOBE for MethodParameters attribute without parameter names Reviewed-by: asotona, jwaters, vromero ! src/java.base/share/classes/jdk/internal/classfile/impl/BoundAttribute.java + test/jdk/jdk/classfile/BoundAttributeTest.java Changeset: bb7608ba Author: Lance Andersen Date: 2023-04-29 14:37:13 +0000 URL: https://git.openjdk.org/loom/commit/bb7608bacc605b2aa9a291f4e23dab49815ce932 8307088: Allow the jdbc.drivers system property to be searchable Reviewed-by: naoto, joehw ! src/java.sql/share/classes/java/sql/DriverManager.java Changeset: 6d6d00b6 Author: Alexander Zuev Date: 2023-04-29 18:19:11 +0000 URL: https://git.openjdk.org/loom/commit/6d6d00b69cea47ccbe05a844db0fb6c384045caa 8306954: Open source five Focus related tests Reviewed-by: prr + test/jdk/java/awt/Focus/AsyncUpFocusCycleTest.java + test/jdk/java/awt/Focus/ClearMostRecentFocusOwnerTest.java + test/jdk/java/awt/Focus/ConsumedTabKeyTest.java + test/jdk/java/awt/Focus/EventRetargetTest.java + test/jdk/java/awt/Focus/ExtraPropChangeNotifVetoingTest.java Changeset: b3dbf28b Author: Hannes Greule Committer: Julian Waters Date: 2023-04-30 07:34:09 +0000 URL: https://git.openjdk.org/loom/commit/b3dbf28bc0614bee2f7137af95389134155c9511 8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default Co-authored-by: Chen Liang Reviewed-by: vromero, jwaters ! make/langtools/src/classes/build/tools/symbolgenerator/CreateSymbols.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java + test/jdk/java/lang/reflect/AccessFlag/RequiredMethodParameterFlagTest.java + test/langtools/tools/javac/RequiredParameterFlags/ImplicitParameters.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnnotatedExtendsTest.java + test/langtools/tools/javac/processing/model/util/elements/MethodParameters/ImplicitParametersProcessor.java ! test/langtools/tools/javap/AnnoTest.java Changeset: b54c4a33 Author: Prasanta Sadhukhan Date: 2023-05-01 04:41:22 +0000 URL: https://git.openjdk.org/loom/commit/b54c4a33c69e16adf5b85b80b8deb4ded2ed074d 8299713: Test javax/swing/JTableHeader/6889007/bug6889007.java failed: Wrong type of cursor Reviewed-by: serb, tr ! test/jdk/javax/swing/JTableHeader/6889007/bug6889007.java Changeset: e1b06eac Author: Prasanta Sadhukhan Date: 2023-05-01 04:45:38 +0000 URL: https://git.openjdk.org/loom/commit/e1b06eac722ea19ed33fbd15e763ca983aab34f2 8305780: javax/swing/JTable/7068740/bug7068740.java fails on Ubunutu 20.04 Reviewed-by: serb, tr ! test/jdk/javax/swing/JTable/7068740/bug7068740.java Changeset: 2d7c5079 Author: Prasanta Sadhukhan Date: 2023-05-01 04:49:40 +0000 URL: https://git.openjdk.org/loom/commit/2d7c50791bd79d9a140df12e38050c851423992c 8305778: javax/swing/JTableHeader/6884066/bug6884066.java: Unexpected header's value; index = 4 value = E Reviewed-by: serb, jdv ! test/jdk/javax/swing/JTableHeader/6884066/bug6884066.java Changeset: a6b4f25b Author: Aleksey Shipilev Date: 2023-05-01 07:56:07 +0000 URL: https://git.openjdk.org/loom/commit/a6b4f25bd50e6861281d162f143c5bc9c16bac51 8306825: Monitor deflation might be accidentally disabled by zero intervals Reviewed-by: dcubed, eastigeevich, phh ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/monitorDeflationThread.cpp + test/hotspot/jtreg/runtime/Monitor/DeflationIntervalsTest.java - test/hotspot/jtreg/runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java Changeset: 316d303c Author: Coleen Phillimore Date: 2023-05-01 11:33:22 +0000 URL: https://git.openjdk.org/loom/commit/316d303c1da550c9589c9be56b65650964e3886b 8306851: Move Method access flags Reviewed-by: cjplummer, dholmes, dnsimon, matsaave, fparain ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/interpreter/bytecodeUtils.cpp ! src/hotspot/share/interpreter/rewriter.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/oops/constMethod.cpp ! src/hotspot/share/oops/constMethod.hpp + src/hotspot/share/oops/constMethodFlags.cpp + src/hotspot/share/oops/constMethodFlags.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlassFlags.cpp ! src/hotspot/share/oops/instanceKlassFlags.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp + src/hotspot/share/oops/methodFlags.cpp + src/hotspot/share/oops/methodFlags.hpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/hotspot/share/utilities/accessFlags.cpp ! src/hotspot/share/utilities/accessFlags.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/AccessFlags.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstMethod.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Method.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java Changeset: 1de1a388 Author: Jorn Vernee Date: 2023-05-01 13:00:41 +0000 URL: https://git.openjdk.org/loom/commit/1de1a38859c696cd5f3f6efa51809bff9c127953 8303002: Reject packed structs from linker 8300784: Specify exactly how padding should be presented to the linker 8304803: NPE thrown during downcall classification under Linux/x64 8303524: Check FunctionDescriptor byte order when linking Reviewed-by: mcimadamore ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/linux/LinuxAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/windows/WindowsAArch64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/LinuxRISCV64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/SysVx64Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/windows/Windowsx64Linker.java ! test/jdk/java/foreign/TestIllegalLink.java ! test/jdk/java/foreign/TestUpcallStructScope.java Changeset: b39a9bff Author: Jorn Vernee Date: 2023-05-01 13:15:16 +0000 URL: https://git.openjdk.org/loom/commit/b39a9bffda0440b1617a802ceb70bf12e075a779 8301703: java.base jdk.internal.foreign.abi.BindingSpecializer uses ASM to generate classes Reviewed-by: mcimadamore, asotona ! src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java Changeset: d437c61f Author: Archie Cobbs Committer: Vicente Romero Date: 2023-05-01 13:23:37 +0000 URL: https://git.openjdk.org/loom/commit/d437c61f5b77793606d73960eeaf98a091f14f6a 8305672: Surprising definite assignment error after JDK-8043179 Reviewed-by: kcr, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java + test/langtools/tools/javac/lambda/TryWithLambdaFinal.java Changeset: 67dd8414 Author: Jorn Vernee Date: 2023-05-01 13:41:00 +0000 URL: https://git.openjdk.org/loom/commit/67dd8414321677e3fc41fa1470c857c0afaa4259 8305093: Linker cache should not take layout names into account Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/TestLinker.java Changeset: 7d07d195 Author: Jorn Vernee Date: 2023-05-01 14:12:51 +0000 URL: https://git.openjdk.org/loom/commit/7d07d19523658cb8034121af6569fbbe92c9afd1 8305201: Improve error message for GroupLayouts that are too large on SysV Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/TypeClass.java ! test/jdk/java/foreign/TestIllegalLink.java Changeset: f00a748b Author: Roger Riggs Date: 2023-05-01 15:22:07 +0000 URL: https://git.openjdk.org/loom/commit/f00a748bc5b708d4f8f277d075859b058f9d575c 8304915: Create jdk.internal.util.Architecture enum and apply Reviewed-by: erikj, mdoerr, amitkumar ! make/modules/java.base/gensrc/GensrcMisc.gmk + src/java.base/share/classes/jdk/internal/util/Architecture.java ! src/java.base/share/classes/jdk/internal/util/OperatingSystem.java - src/java.base/share/classes/jdk/internal/util/OperatingSystemProps.java.template + src/java.base/share/classes/jdk/internal/util/PlatformProps.java.template ! src/jdk.attach/windows/classes/sun/tools/attach/AttachProviderImpl.java + test/jdk/jdk/internal/util/ArchTest.java Changeset: 6acf032d Author: Roger Riggs Date: 2023-05-01 17:56:04 +0000 URL: https://git.openjdk.org/loom/commit/6acf032db891875c6a7403a18d5dc7c552fb4c11 8306678: Replace use of os.version with an internal Version record Reviewed-by: mchung ! src/java.base/macosx/classes/jdk/internal/loader/ClassLoaderHelper.java ! src/java.base/share/classes/jdk/internal/util/OperatingSystem.java ! src/java.base/share/classes/jdk/internal/util/StaticProperty.java + src/java.base/share/classes/jdk/internal/util/Version.java ! test/jdk/jdk/internal/util/OSTest.java + test/jdk/jdk/internal/util/VersionTest.java Changeset: c7e1df83 Author: Rajan Halade Date: 2023-05-01 18:03:54 +0000 URL: https://git.openjdk.org/loom/commit/c7e1df832837c2f19629cf0d5a5d3e65142ac208 8304760: Add 2 Microsoft TLS roots Reviewed-by: mullan + src/java.base/share/data/cacerts/microsoftecc2017 + src/java.base/share/data/cacerts/microsoftrsa2017 + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/MicrosoftTLS.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: ae5f678f Author: Chris Plummer Date: 2023-05-01 18:13:11 +0000 URL: https://git.openjdk.org/loom/commit/ae5f678fbafcd643a5a74447ed718636a53f9e2b 8282384: [LOOM] Need test for ThreadReference.interrupt() on a vthread Reviewed-by: lmesnik, sspitsyn ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001a.java Changeset: 561ec9c5 Author: Sergey Tsypanov Committer: Roger Riggs Date: 2023-05-01 18:24:07 +0000 URL: https://git.openjdk.org/loom/commit/561ec9c5a06e5baeb0cf72463d14d1d720facb13 8300818: Reduce complexity of padding with DateTimeFormatter Reviewed-by: redestad, rriggs ! src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java + test/micro/org/openjdk/bench/java/time/format/DateTimeFormatterWithPaddingBench.java Changeset: 35e75c13 Author: Vicente Romero Date: 2023-05-01 20:28:50 +0000 URL: https://git.openjdk.org/loom/commit/35e75c131d7c1c2596022955c0f4c53dd3c7e448 8301455: comments in TestTypeAnnotations still refer to resolved JDK-8068737 Reviewed-by: jjg ! test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java Changeset: 1227a275 Author: Serguei Spitsyn Date: 2023-05-02 02:40:50 +0000 URL: https://git.openjdk.org/loom/commit/1227a275a1c1e82b9a6410843f32534d7e841f54 8306028: separate ThreadStart/ThreadEnd events posting code in JVMTI VTMS transitions 8304444: Reappearance of NULL in jvmtiThreadState.cpp Reviewed-by: pchilanomate, lmesnik ! make/data/hotspot-symbols/symbols-unix ! src/hotspot/share/classfile/vmIntrinsics.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/opto/c2compiler.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/java.base/share/classes/java/lang/VirtualThread.java ! src/java.base/share/native/libjava/VirtualThread.c Changeset: 2179a8f2 Author: Joe Wang Date: 2023-05-02 03:12:06 +0000 URL: https://git.openjdk.org/loom/commit/2179a8f2d622f832aa21eb7f48e8ab055bc55731 8298087: XML Schema Validation reports an required attribute twice via ErrorHandler Reviewed-by: naoto ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java + test/jaxp/javax/xml/jaxp/unittest/validation/ErrorHandlingTest.java Changeset: 86f97fe7 Author: Alan Bateman Date: 2023-05-02 07:20:19 +0000 URL: https://git.openjdk.org/loom/commit/86f97fe70c9b55d196876e1e144f26a576492ebe 8305919: java/lang/Thread/virtual/HoldsLock.java#id0 failed, ThreadInfo.getLockInfo() return null Reviewed-by: jpai ! test/jdk/ProblemList-Xcomp.txt + test/jdk/java/lang/Thread/virtual/CarrierThreadWaits.java - test/jdk/java/lang/Thread/virtual/HoldsLock.java ! test/jdk/java/lang/Thread/virtual/ThreadAPI.java Changeset: 860bf9b3 Author: Martin Doerr Date: 2023-05-02 09:19:49 +0000 URL: https://git.openjdk.org/loom/commit/860bf9b35fb168b7b725388c797f193564d9af4d 8307104: [AIX] VM crashes with UseRTMLocking on Power10 Reviewed-by: clanger, lucy ! src/hotspot/cpu/ppc/vm_version_ppc.cpp Changeset: 1532a1b0 Author: Jorn Vernee Date: 2023-05-02 10:42:49 +0000 URL: https://git.openjdk.org/loom/commit/1532a1b0bd72f37b77540af51368271ef80e17d2 8307164: TestSegmentCopy times out (mainline) Reviewed-by: mcimadamore ! test/jdk/java/foreign/TestSegmentCopy.java Changeset: a8d16dea Author: Fredrik Bredberg Committer: Richard Reingruber Date: 2023-05-02 12:14:12 +0000 URL: https://git.openjdk.org/loom/commit/a8d16dea8eb4a2807a4b0349dea708b4d0d6db35 8300197: Freeze/thaw an interpreter frame using a single copy_to_chunk() call Reviewed-by: rrich, pchilanomate, fyang ! src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp ! src/hotspot/cpu/arm/continuationFreezeThaw_arm.inline.hpp ! src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp ! src/hotspot/cpu/riscv/continuationFreezeThaw_riscv.inline.hpp ! src/hotspot/cpu/s390/continuationFreezeThaw_s390.inline.hpp ! src/hotspot/cpu/x86/continuationFreezeThaw_x86.inline.hpp ! src/hotspot/cpu/zero/continuationFreezeThaw_zero.inline.hpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp Changeset: ea9201f4 Author: Thomas Stuefe Date: 2023-05-02 12:18:23 +0000 URL: https://git.openjdk.org/loom/commit/ea9201f42085028f6f16738214f058efb680ac09 8306510: Print number of threads and stack sizes in error reports Reviewed-by: gziemski, dholmes ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/threads.hpp Changeset: 544bd260 Author: Yoshiki Sato Committer: Naoto Sato Date: 2023-05-02 12:42:15 +0000 URL: https://git.openjdk.org/loom/commit/544bd260b6eb7bc7cf79a3739cc94bad658d7d15 8305505: NPE in javazic compiler Reviewed-by: naoto ! test/jdk/sun/util/calendar/zi/GenDoc.java Changeset: 75a4edca Author: Johan Sj?len Date: 2023-05-02 13:04:14 +0000 URL: https://git.openjdk.org/loom/commit/75a4edca6b9fa6b3e66b564aeb4d7ca8acf02491 8301223: Replace NULL with nullptr in share/gc/g1/ Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/c1/g1BarrierSetC1.cpp ! src/hotspot/share/gc/g1/c1/g1BarrierSetC1.hpp ! src/hotspot/share/gc/g1/c2/g1BarrierSetC2.cpp ! src/hotspot/share/gc/g1/g1AllocRegion.cpp ! src/hotspot/share/gc/g1/g1AllocRegion.hpp ! src/hotspot/share/gc/g1/g1AllocRegion.inline.hpp ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1Allocator.hpp ! src/hotspot/share/gc/g1/g1Allocator.inline.hpp ! src/hotspot/share/gc/g1/g1Arguments.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp ! src/hotspot/share/gc/g1/g1BiasedArray.cpp ! src/hotspot/share/gc/g1/g1BiasedArray.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardTable.hpp ! src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp ! src/hotspot/share/gc/g1/g1CodeBlobClosure.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.hpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkBitMap.hpp ! src/hotspot/share/gc/g1/g1ConcurrentRebuildAndScrub.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefine.hpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.hpp ! src/hotspot/share/gc/g1/g1FreeIdSet.cpp ! src/hotspot/share/gc/g1/g1FromCardCache.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1HeapRegionTraceType.hpp ! src/hotspot/share/gc/g1/g1HeapTransition.cpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1NUMA.cpp ! src/hotspot/share/gc/g1/g1NUMAStats.cpp ! src/hotspot/share/gc/g1/g1OopClosures.cpp ! src/hotspot/share/gc/g1/g1OopClosures.inline.hpp ! src/hotspot/share/gc/g1/g1OopStarChunkedList.hpp ! src/hotspot/share/gc/g1/g1OopStarChunkedList.inline.hpp ! src/hotspot/share/gc/g1/g1PageBasedVirtualSpace.cpp ! src/hotspot/share/gc/g1/g1PageBasedVirtualSpace.hpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1RedirtyCardsQueue.cpp ! src/hotspot/share/gc/g1/g1RegionToSpaceMapper.cpp ! src/hotspot/share/gc/g1/g1RegionToSpaceMapper.hpp ! src/hotspot/share/gc/g1/g1RegionsOnNodes.cpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/g1/g1RemSetSummary.cpp ! src/hotspot/share/gc/g1/g1RootClosures.cpp ! src/hotspot/share/gc/g1/g1RootProcessor.cpp ! src/hotspot/share/gc/g1/g1SATBMarkQueueSet.cpp ! src/hotspot/share/gc/g1/g1ServiceThread.cpp ! src/hotspot/share/gc/g1/g1ServiceThread.hpp ! src/hotspot/share/gc/g1/g1SurvRateGroup.cpp ! src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/gc/g1/heapRegionManager.cpp ! src/hotspot/share/gc/g1/heapRegionManager.hpp ! src/hotspot/share/gc/g1/heapRegionManager.inline.hpp ! src/hotspot/share/gc/g1/heapRegionRemSet.cpp ! src/hotspot/share/gc/g1/heapRegionSet.cpp ! src/hotspot/share/gc/g1/heapRegionSet.hpp ! src/hotspot/share/gc/g1/heapRegionSet.inline.hpp ! src/hotspot/share/gc/g1/heapRegionType.cpp Changeset: a8bf2acb Author: Jorn Vernee Date: 2023-05-02 13:56:32 +0000 URL: https://git.openjdk.org/loom/commit/a8bf2acb7db63b508ef169e42a27b9c99178cbb1 8304888: Add dedicated VMProps for linker and fallback linker Reviewed-by: alanb, mcimadamore ! test/hotspot/jtreg/TEST.ROOT ! test/jdk/TEST.ROOT ! test/jdk/java/foreign/LibraryLookupTest.java ! test/jdk/java/foreign/SafeFunctionAccessTest.java ! test/jdk/java/foreign/StdLibTest.java ! test/jdk/java/foreign/TestAddressDereference.java ! test/jdk/java/foreign/TestClassLoaderFindNative.java ! test/jdk/java/foreign/TestDowncallScope.java ! test/jdk/java/foreign/TestDowncallStack.java ! test/jdk/java/foreign/TestFallbackLookup.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestHeapAlignment.java ! test/jdk/java/foreign/TestIllegalLink.java ! test/jdk/java/foreign/TestIntrinsics.java ! test/jdk/java/foreign/TestLinker.java ! test/jdk/java/foreign/TestMatrix.java ! test/jdk/java/foreign/TestNULLAddress.java ! test/jdk/java/foreign/TestNative.java ! test/jdk/java/foreign/TestNulls.java ! test/jdk/java/foreign/TestScopedOperations.java ! test/jdk/java/foreign/TestSegments.java ! test/jdk/java/foreign/TestStringEncoding.java ! test/jdk/java/foreign/TestUpcallAsync.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/TestVarArgs.java ! test/jdk/java/foreign/arraystructs/TestArrayStructs.java ! test/jdk/java/foreign/capturecallstate/TestCaptureCallState.java ! test/jdk/java/foreign/dontrelease/TestDontRelease.java ! test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccess.java ! test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccessDynamic.java ! test/jdk/java/foreign/handles/Driver.java ! test/jdk/java/foreign/largestub/TestLargeStub.java ! test/jdk/java/foreign/loaderLookup/TestLoaderLookup.java ! test/jdk/java/foreign/loaderLookup/TestLoaderLookupJNI.java ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/foreign/normalize/TestNormalize.java ! test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java ! test/jdk/java/foreign/stackwalk/TestAsyncStackWalk.java ! test/jdk/java/foreign/stackwalk/TestReentrantUpcalls.java ! test/jdk/java/foreign/stackwalk/TestStackWalk.java ! test/jdk/java/foreign/trivial/TestTrivial.java ! test/jdk/java/foreign/trivial/TestTrivialUpcall.java ! test/jdk/java/foreign/upcalldeopt/TestUpcallDeopt.java ! test/jdk/java/foreign/virtual/TestVirtualCalls.java ! test/jtreg-ext/requires/VMProps.java ! test/langtools/TEST.ROOT Changeset: b76f320e Author: Jonathan Gibbons Date: 2023-05-02 16:54:39 +0000 URL: https://git.openjdk.org/loom/commit/b76f320e76f0fb58c598fdd7a5937f1b5bb1de15 8307123: Fix deprecation warnings in DPrinter Reviewed-by: vromero ! test/langtools/tools/javac/lib/DPrinter.java Changeset: 8c106b0c Author: Liam Miller-Cushon Date: 2023-05-02 18:19:03 +0000 URL: https://git.openjdk.org/loom/commit/8c106b0c8e4562a44ecd1e069c0911acfc428ecf 8303784: no- at Target annotations should be applicable to type parameter declarations Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java + test/langtools/tools/javac/annotations/typeAnnotations/NoTargetOnTypeParameterDeclaration.java + test/langtools/tools/javac/annotations/typeAnnotations/NoTargetOnTypeParameterDeclaration.out Changeset: 8a70664e Author: Kim Barrett Date: 2023-05-02 21:27:01 +0000 URL: https://git.openjdk.org/loom/commit/8a70664e5248cd6b9d63951729e93bf73eff004c 8293117: Add atomic bitset functions Reviewed-by: shade, coleenp, dholmes ! src/hotspot/share/runtime/atomic.hpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 05b9b582 Author: Stuart Marks Date: 2023-05-02 23:19:30 +0000 URL: https://git.openjdk.org/loom/commit/05b9b5821db0e0d5d998a1bd8574aa6021878c9e 8302496: Runtime.exit incorrectly says it never throws an exception Reviewed-by: alanb ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/System.java Changeset: 76991c81 Author: Harshitha Onkar Date: 2023-05-02 23:22:17 +0000 URL: https://git.openjdk.org/loom/commit/76991c8129a6599a3dfaa0cfdc77a23014a02b35 8282232: [Win] GetMousePositionWithPopup test fails due to wrong mouse position Reviewed-by: prr ! test/jdk/java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java Changeset: 74667e3d Author: Eamonn McManus Date: 2023-05-02 23:26:01 +0000 URL: https://git.openjdk.org/loom/commit/74667e3d56a0e6780363359b69007770f5678d8e 8303919: Instant.ofEpochMilli says it can throw an exception that it can't Reviewed-by: rriggs ! src/java.base/share/classes/java/time/Instant.java Changeset: 418a8255 Author: Damon Nguyen Date: 2023-05-02 23:45:44 +0000 URL: https://git.openjdk.org/loom/commit/418a82551a2c58e43963beb5aa242a58bbd30e2f 8306466: Open source more AWT Drag & Drop related tests Reviewed-by: prr + test/jdk/java/awt/dnd/RejectDragDropActionTest.java + test/jdk/java/awt/dnd/RemoveDragSourceListenerTest.java + test/jdk/java/awt/dnd/RemoveParentChildDropTargetTest.java + test/jdk/java/awt/dnd/SameJVMModalDialogDeadlockTest.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/SkipDropCompleteTest.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/SourceFrame.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/TargetFrame.java + test/jdk/java/awt/dnd/SkipDropCompleteTest/TransferableObject.java Changeset: 0b5b6429 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-03 02:23:41 +0000 URL: https://git.openjdk.org/loom/commit/0b5b6429a080c6526daeb262fee96e7d0408b4f8 8307150: RISC-V: Remove remaining StoreLoad barrier with UseCondCardMark for Serial/Parallel GC Reviewed-by: shade, fyang ! src/hotspot/cpu/riscv/gc/shared/cardTableBarrierSetAssembler_riscv.cpp Changeset: c8f37564 Author: Adam Sotona Date: 2023-05-03 06:34:58 +0000 URL: https://git.openjdk.org/loom/commit/c8f37564bf0983f449195434378479e1adfc1466 8306729: Add nominal descriptors of modules and packages to Constants API Reviewed-by: mchung ! src/java.base/share/classes/java/lang/constant/ConstantUtils.java + src/java.base/share/classes/java/lang/constant/ModuleDesc.java + src/java.base/share/classes/java/lang/constant/ModuleDescImpl.java + src/java.base/share/classes/java/lang/constant/PackageDesc.java + src/java.base/share/classes/java/lang/constant/PackageDescImpl.java ! src/java.base/share/classes/java/lang/constant/package-info.java + test/jdk/java/lang/constant/ModuleDescTest.java + test/jdk/java/lang/constant/PackageDescTest.java Changeset: 462b1df7 Author: Erik ?sterlund Date: 2023-05-03 08:16:15 +0000 URL: https://git.openjdk.org/loom/commit/462b1df7587470756d9e565342552d1a52b62c27 8307106: Allow concurrent GCs to walk CLDG without ClassLoaderDataGraph_lock Reviewed-by: stefank, aboldtch, coleenp, dholmes ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/classfile/classLoaderDataGraph.cpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: e0774bed Author: Roland Westrelin Date: 2023-05-03 08:29:01 +0000 URL: https://git.openjdk.org/loom/commit/e0774bed2d2fcd850f5ca6884dd7aeb45f0bdaef 8306997: C2: "malformed control flow" assert due to missing safepoint on backedge with a switch Reviewed-by: thartmann, kvn ! src/hotspot/share/opto/parse2.cpp + test/hotspot/jtreg/compiler/parsing/MissingSafepointOnSwitch.jasm + test/hotspot/jtreg/compiler/parsing/TestMissingSafepointOnSwitch.java Changeset: 891530fb Author: Albert Mingkun Yang Date: 2023-05-03 09:26:27 +0000 URL: https://git.openjdk.org/loom/commit/891530fbc9aa3031d7903970d9248405951c8521 8307005: Make CardTableBarrierSet::initialize non-virtual Reviewed-by: dholmes ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp Changeset: fcb280a4 Author: Aleksey Shipilev Date: 2023-05-03 09:39:57 +0000 URL: https://git.openjdk.org/loom/commit/fcb280a48bf9f562e6c0982c1d7a0076ee2e736e 8305092: Improve Thread.sleep(millis, nanos) for sub-millisecond granularity Reviewed-by: dholmes, alanb ! src/hotspot/os/posix/os_posix.cpp ! src/hotspot/os/posix/park_posix.hpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/os/windows/park_windows.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/java.base/share/classes/java/lang/Thread.java + test/jdk/java/lang/Thread/SleepSanity.java + test/micro/org/openjdk/bench/java/lang/ThreadSleep.java Changeset: e9807a4b Author: Emanuel Peter Date: 2023-05-03 10:45:30 +0000 URL: https://git.openjdk.org/loom/commit/e9807a4b0f3533512623fba96042472b69d4ac34 8306042: C2: failed: Missed optimization opportunity in PhaseCCP (adding LShift->Cast->Add notification) Reviewed-by: thartmann, chagedorn, kvn ! src/hotspot/share/opto/castnode.hpp ! src/hotspot/share/opto/phaseX.cpp + test/hotspot/jtreg/compiler/ccp/TestShiftCastAndNotification.java Changeset: ccf91f88 Author: Roland Westrelin Date: 2023-05-03 11:14:53 +0000 URL: https://git.openjdk.org/loom/commit/ccf91f881c06308f39740751161111946487abf1 8306933: C2: "assert(false) failed: infinite loop" failure Reviewed-by: chagedorn, thartmann ! src/hotspot/share/opto/compile.cpp + test/hotspot/jtreg/compiler/c2/TestInfiniteLoopCompilationFailure.java Changeset: fc76687c Author: Thomas Schatzl Date: 2023-05-03 13:50:02 +0000 URL: https://git.openjdk.org/loom/commit/fc76687c2fac39fcbf706c419bfa170b8efa5747 8306836: Remove pinned tag for G1 heap regions Reviewed-by: ayang, cjplummer, sspitsyn ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp ! src/hotspot/share/gc/g1/g1FullGCHeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.inline.hpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/gc/g1/heapRegionType.hpp ! src/hotspot/share/gc/g1/vmStructs_g1.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/HeapRegion.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/HeapRegionType.java Changeset: 3930709a Author: Jonathan Gibbons Date: 2023-05-03 17:32:24 +0000 URL: https://git.openjdk.org/loom/commit/3930709af40c2524622f379e16b90a0226bedf2a 8068925: Add @Override in javax.tools classes Reviewed-by: darcy, iris ! src/java.compiler/share/classes/javax/tools/DiagnosticCollector.java ! src/java.compiler/share/classes/javax/tools/DocumentationTool.java ! src/java.compiler/share/classes/javax/tools/JavaCompiler.java ! src/java.compiler/share/classes/javax/tools/SimpleJavaFileObject.java Changeset: 705ad7d8 Author: Matthew Donovan Committer: Xue-Lei Andrew Fan Date: 2023-05-03 18:00:10 +0000 URL: https://git.openjdk.org/loom/commit/705ad7d829dcbf8f5e2f098275d0856f6b86db2d 8306014: Update javax.net.ssl TLS tests to use SSLContextTemplate or SSLEngineTemplate Reviewed-by: xuelei ! test/jdk/javax/net/ssl/ALPN/SSLEngineAlpnTest.java ! test/jdk/javax/net/ssl/TLSv12/DisabledShortDSAKeys.java ! test/jdk/javax/net/ssl/TLSv12/ShortRSAKey512.java ! test/jdk/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java ! test/jdk/javax/net/ssl/TLSv12/SignatureAlgorithms.java ! test/jdk/javax/net/ssl/templates/SSLContextTemplate.java From sergey.kuksenko at oracle.com Tue May 9 01:14:01 2023 From: sergey.kuksenko at oracle.com (Sergey Kuksenko) Date: Tue, 9 May 2023 01:14:01 +0000 Subject: How to write JMH microbenchmarks for asynchronous functions (tips and tricks). Message-ID: Now, when Project Loom is reaching its maturity, it is raised the question: how to write reliable and simple microbenchmarks for virtual threads (or asynchronous frameworks) using JMH. 1) Recently JMH got a new feature - the ability to execute benchmark in virtual threads. It can be turned on by specifying property "-Djmh.executor=VIRTUAL_TPE". All other threading options (-t , -tg , -tg ,<>) remain the same. The feature will be widely available when JMH 1.37 goes to maven central. Until that, you may download and build your local version of JMH. The feature covers only a subset of desired scenarios - long-running virtual threads. In JMH threading architecture, the benchmark running thread (it doesn't matter platform or virtual) exists during the whole iteration run (mainly the whole benchmark run). The feature can't help us in benchmarking short-lived virtual threads and benchmarking asynchronous frameworks, which are natural competitors of project Loom. 2) An asynchronous function is a function that returns Future/CompletableFuture or accepts "onComplete" callback. A practical evaluation of different benchmarking schemes for asynchronous functions was done. All results and conclusions are empirical and could change in future hardware/software evolution. The following schemes were evaluated: 2.1 Naive approach @Benchmark public void bench() { Future f = async_function(...); f.get(); } 2.2 Hammock or batch approach (how we benchmark some async operation in existing microbenchmark corpus). @Benchmark @OperationsPerInvocation(SIZE) public void hammock() { Future[] futures = new Future[SIZE]; for(int i=0; i < SIZE; i++) { futures[i] = async_function(...); } for(Future f : futures) { f.get(); } } This approach has a theoretical flaw - unbalanced work. There are explicit phases of submitting, actual work, and results waiting. It was made in an attempt to create a more stable scheme: 2.3 "OnFly" approach. The key idea here - is to count processing and finished operations and limit the submission rate with the fixed amount of currently processing operations. It requires JMH modification, and different implementations were tested. Note: There is another approach widely used in large benchmarks. When submitting thread works with a fixed "injection rate." In this case, the result of the benchmark is latency distribution. This way works perfectly with large benchmarks, but it has some "ideological" discrepancies with current JMH microbenchmarks. It is desired to have a simple result metric that can be represented as a single number. That is why this approach was not considered. If someone has another idea on how to write microbenchmarks for asynchronous functions - please, share your ideas. It is worth trying. Which metric should be used? JMH has two main metrics: throughput and average time. Average time should be avoided. JMH computes the average time from throughput using simple arithmetic, depending on the number of working (benchmark) threads. Since we don't know the concurrency of asynchronous operation - that may produce inconsistent, meaningless results. Two criteria were used for choosing the better approach: 1. Variance minimization. The key criteria. We want to get consistent and repeatable results. 2. Higher throughput metric. That leads to higher system utilization and gives a high benchmarked operation impact that simplifies analysis and regression tracking. e.g., If some benchmark has 3% variance and 30% impact of benchmarked operation - that means all regressions/changes of the operation which less than 10% (for the operation itself) are invisible/undetectable on the benchmark. There are some benchmarks "classification": - nanobenchmarks - time of the operation expressed in nanoseconds - microbenchmark - .. in microseconds - millibenchmarks - ... in milliseconds - benchmarks - ... in seconds Going forward: - It doesn't matter how to write benchmarks for "benchmarks." All ways (including naive) are consistent and give the same results. - There is no way to do precise benchmarks for nanobenchmarks (asynchronous operation). Infrastructure overhead is too high, and system utilization is too low. It doesn't mean that such microbenchmarks have no sense. This fact should be kept in mind, and nanobenchmarks require careful analysis. Let's talk about micro and millibenchmarks. The best approach is the hammock. 1. Waiting operations completion. Hammock benchmark has a "waiting" loop at the end : for(Future f : futures) { f.get(); } Some of the checked futures are already completed when checked, and some are not and cause blocking/parking benchmarking thread. A number of such benchmarking thread parkings has a very high impact on micro and millibenchmarks variance. Two smaller parkings give worse results than one big park operation. Ideally, we need only the single park until all operations are complete. - The best (minimum variance and overhead) way is using CountDownLatch, which works when asynchronous operation accepts "onComplete" callback or returns CompletableFuture. Benchmark looks like: @Benchmark public void hammock() throws InterruptedException { CountDownLatch latch = new CountDownLatch(SIZE); for (int i = 0; i < SIZE; i++) { async_function(..., () -> latch.countDown()); } latch.await(); } - If async_function returns CompletableFuture/CompletionStage it is possible to use single blocking the following way: CompletableFuture.allOf(futures).join(); Behavior is the same as using CountDownLatch. - If old Java's Future is used, the "Future.get" operations should be invoked in reverse order: @Benchmark public void hammock() throws InterruptedException { Future[] futures = new Future[SIZE]; for (int i = 0; i < size; i++) { futures[i] = async_function(...); } for (int i = futures.length - 1; i >= 0; i--) { futures[i].get(); } } There is a high probability that async operations will be completed in the same order as submitted. By blocking in reverse order, we decrease the number of park operations and minimize variance. (proved on practice). 2. Number of benchmark threads. For benchmarking async functions, benchmark threads are submitting and waiting threads. Real work is done somewhere else. As it was mentioned before hammock approach has a theoretical flaw - unbalanced work. To mitigate it, the number of benchmark threads should be 2 or more. Please, never execute asynchronous benchmarks with the single benchmark thread. This can be set up as JMH option "-t " of "@Threads" annotation. Empirical results show that the best number of submitting threads (especially for microbenchmarks) depends on hardware - "/2". 3. Concurrency. Let's consider "*" as the benchmark concurrency. Experiments have shown that benchmark performance strictly depends on concurrency. Different number of benchmark threads and batch sizes but the same concurrency will give the same result. e.g., 32 submitting threads + SIZE=64 gives the similar result as 16 submitting threads + SIZE=128 Empirical results show the best concurrency value is "32*". This value works well for up to 10-microsecond operations. For smaller operations, it makes sense to increase the concurrency. When "/2" benchmark threads are used, the optimal SIZE value is 64. For microbenchmarks and millibenchmarks, larger SIZE is also may be used. However, when the time of the single operation is larger than 100 milliseconds, the SIZE value larger than 100 causes high variance. Thank you. Comments are welcome. Sergey Kuksenko From forax at univ-mlv.fr Tue May 9 16:33:12 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Tue, 9 May 2023 18:33:12 +0200 (CEST) Subject: Structured Concurrency yet again Message-ID: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> I think we should restart the work on the structured concurrency API, here is a proposal. If Java had async/await keyword, computing the sum of two asynchronous call, it will be something like int value = await async () -> { Thread.sleep(100); return 10; }; int value2 = await async () -> { Thread.sleep(300); return 30; }; assertEquals(40, value + value2); Apart of the colored function problem, another problem of this API is that the asynchronous calls are executed sequentially and not at the same time. If we use the Executor/Future API instead, the calls are called in parallel var executor = ... var future = executor.submit(() -> { Thread.sleep(100); return 10; }); var future2 = executor.submit(() -> { Thread.sleep(300); return 30; }); int value = future.get(); int value2 = future2.get(); assertEquals(40, value + value2); But there are several other issues with this API - if "future.get()" throws an exception, future2.get() is never called so the second task is now a runaway task. It should be cancelled. - submit returns a Future which is only parameterized by the type of the result, all exceptions are stored as a Throwable, there is no exception transparency (something the async/await approach provides). - A future has 4 states, RUNNING, SUCCESS, FAILED and CANCELLED, but as a user we are only need to know if the computation succeed or failed. We should not be able to access to the state of the computation if the computation is not finished (Future.resultNow()/exceptionnNow() already does that) and a cancelled task should be a sub-category of a failed task. To solve the first problem, we introduce a try-with-resources that guarantees that all asynchronous tasks can not escape the scope and a method awaitAll() that guarantee that all computations are finished at that point. (If you wonder why we need both, see later). To solve the two other problems, we need to replace the Callable/Future pair by a functional interface Computation and a class AsyncTask that correctly propagates the exceptions and provides a simpler API, with only two methods, getNow() that either return the result or throw the exception and result() that provides a result object that either represent a SUCCESS with a value or FAILED with an exception. public interface Computation { /** * Compute the computation. * @return a result * @throws E an exception * @throws InterruptedException if the computation is interrupted */ R compute() throws E, InterruptedException; } public interface AsyncTask { /** * Returns a result object corresponding to the computation if the computation is done. * @return a result object corresponding to the computation if the computation is done. * @throws IllegalStateException if the computation is not done. */ Result result(); /** * Returns the value of the computation * @return the value of the computation * @throws E the exception thrown by the computation * @throws InterruptedException if the task was cancelled. * @throws IllegalStateException if the computation is not done. */ R getNow() throws E, InterruptedException; } public static final class Result { public enum State { /** * if the computation succeed. */ SUCCESS, /** * If the computation failed because an exception is thrown */ FAILED } /** * Returns the state of the result. * @return the state of the result. */ public State state() { return state; } /** * Returns the result of the computation. * @throws IllegalStateException if the state is not {@link State#SUCCESS}. * @return the result of the computation. */ public R result() { if (state != State.SUCCESS) { throw new IllegalStateException("state not a success"); } return result; } /** * Returns the failure thrown by the computation. * @throws IllegalStateException if the state is not {@link State#FAILED}. * @return the failure thrown by the computation or null if the task has been cancelled. */ public E failure() { if (state != State.FAILED) { throw new IllegalStateException("state not a failure"); } return failure; } ... } If we put everything together, we get the following code try(var scope = new AsyncScope()) { AsyncTask task = scope.async(() -> { Thread.sleep(100); return 10; }); var task2 = scope.async(() -> { Thread.sleep(300); return 30; }); scope.awaitAll(); int value = task.getNow(); int value2 = task2.getNow(); assertEquals(40, value + value2); } We may also want the results as a stream, for that we introduce a method await() that takes a function that take a stream of the results and return a value. Using a stream is interesting because it's a way to abstract a loop over the results at the same time the results are produced, so if the stream is short-circuited, we do not need to wait all results to be computed and the results are ordered by completion order. This API is far better than the current StructuredTaskScope.handleComplete() which requires to subclass StructuredTaskScope and deal with the concurrency if you want to get access to the future in completion order. But let starts, with a simple example, we can gather all results using Stream.toList(). try(var scope = new AsyncScope()) { var task = scope.async(() -> { Thread.sleep(300); return 30; }); var task2 = scope.async(() -> { Thread.sleep(100); return 10; }); List> results = scope.await(Stream::toList); var sum = 0; for(var result: results) { sum += result.getNow(); } assertEquals(40, sum); } We can filter to only keep the success result using Result::keepOnlySuccess which either return a stream with the result value in case of a SUCCESS and an empty stream if the computation FAILED. try(var scope = new AsyncScope()) { var task = scope.async(() -> { Thread.sleep(300); return 30; }); var task2 = scope.async(() -> { Thread.sleep(100); return 10; }); List values = scope.await(stream -> stream.flatMap(Result::keepOnlySuccess).toList()); assertEquals(List.of(10, 30), values); } And we can reduce the results into one unique result using Result.merger() which takes a binary function to combine the results (failures are combined using addSuppressed). try(var scope = new AsyncScope()) { var task = scope.async(() -> { Thread.sleep(100); return 10; }); var task2 = scope.async(() -> { Thread.sleep(300); return 30; }); Result result = scope.await(stream -> stream.reduce(Result.merger(Integer::sum))) .orElseThrow(); switch (result.state()) { case SUCCESS -> assertEquals(40, result.result()); case FAILED -> fail(); } } And we can use Stream.findFirst() (or any other short circuited terminal operations) if we do not need all results of the computations. In that case, the tasks still running will be cancelled asynchronously with the guarantee that all computation have finished when exiting the scope. try(var scope = new AsyncScope()) { var task = scope.async(() -> { Thread.sleep(100); return 10; }); var task2 = scope.async(() -> { Thread.sleep(1_000); return 30; }); int value = scope .await(stream -> stream.flatMap(Result::keepOnlySuccess).findFirst()) .orElseThrow(); assertEquals(10, value); assertEquals(10, task.getNow()); assertTrue(task2.result().isCancelled()); } There are other examples on Github [1]. To summarize, an async scope defines a scope for asynchronous calls that will run in parallel by default. the method async() executes an asynchronous computation in a fresh virtual thread and returns a task object that is only available after one of the method await() is called. awaitAll() waits for all computations to complete (normally or abnormally). await(stream -> ...) process the results of computation in completion order and in case of early returns, all still running computations are automatically cancelled. R?mi [1] https://github.com/forax/loom-fiber/blob/master/src/test/java/fr/umlv/loom/structured/AsyncScopeTest.java From pedro.lamarao at prodist.com.br Tue May 9 17:09:37 2023 From: pedro.lamarao at prodist.com.br (=?UTF-8?Q?Pedro_Lamar=C3=A3o?=) Date: Tue, 9 May 2023 14:09:37 -0300 Subject: Structured Concurrency yet again In-Reply-To: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Em ter., 9 de mai. de 2023 ?s 13:35, Remi Forax escreveu: > If we put everything together, we get the following code > > try(var scope = new AsyncScope()) { > AsyncTask task = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > var task2 = scope.async(() -> { > Thread.sleep(300); > return 30; > }); > How would we use AsyncScope to concurrently call two services which return different data types? -- Pedro Lamar?o -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Tue May 9 17:16:04 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 9 May 2023 19:16:04 +0200 Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Pedro Lamar?o ezt ?rta (id?pont: 2023. m?j. 9., K, 19:11): > > Em ter., 9 de mai. de 2023 ?s 13:35, Remi Forax escreveu: > >> >> If we put everything together, we get the following code >> >> try(var scope = new AsyncScope()) { >> AsyncTask task = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(300); >> return 30; >> }); > > > > How would we use AsyncScope to concurrently call two services which return different data types? > Previously the scope took a generic parameter "T", and then the fork call returned , so you could declare T to be Object, and then do whatever. From Alan.Bateman at oracle.com Tue May 9 17:27:23 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 9 May 2023 18:27:23 +0100 Subject: Structured Concurrency yet again In-Reply-To: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> On 09/05/2023 17:33, Remi Forax wrote: > I think we should restart the work on the structured concurrency API There is updated JEP for the SC API [1] that we hope will become a candidate soon. -Alan. [1] https://openjdk.org/jeps/8306641 From forax at univ-mlv.fr Tue May 9 17:29:57 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Tue, 9 May 2023 19:29:57 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1408615054.52153446.1683653397703.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "attila kelemen85" > To: "Pedro Lamar?o" > Cc: "Remi Forax" , "loom-dev" > Sent: Tuesday, May 9, 2023 7:16:04 PM > Subject: Re: Structured Concurrency yet again > Pedro Lamar?o ezt ?rta (id?pont: 2023. > m?j. 9., K, 19:11): >> >> Em ter., 9 de mai. de 2023 ?s 13:35, Remi Forax escreveu: >> >>> >>> If we put everything together, we get the following code >>> >>> try(var scope = new AsyncScope()) { >>> AsyncTask task = scope.async(() -> { >>> Thread.sleep(100); >>> return 10; >>> }); >>> var task2 = scope.async(() -> { >>> Thread.sleep(300); >>> return 30; >>> }); >> >> >> >> How would we use AsyncScope to concurrently call two services which return >> different data types? >> > > Previously the scope took a generic parameter "T", and then the fork > call returned , so you could declare T to be Object, and > then do whatever. yes, the scope is declared with the common super type of the two data types, by example, try(var scope = new AsyncScope()) { AsyncTask task = scope.async(() -> { Thread.sleep(100); return "foo"; }); AsyncTask task2 = scope.async(() -> { Thread.sleep(300); return 30; }); ... regards, R?mi From duncan.gittins at gmail.com Tue May 9 17:46:38 2023 From: duncan.gittins at gmail.com (Duncan Gittins) Date: Tue, 9 May 2023 18:46:38 +0100 Subject: javax.imageio.ImageIO ThreadLocal use Message-ID: Hi I've been testing one of my applications in JDK20 preview mode on Windows - conversion to use virtual threads has been very easy and works well - many thanks to everyone involved. One bug I found turned out to be in my own codebase. I happened to be stripping out all my ThreadLocal code recently, and so decided to check this work by adding "allowSetThreadLocals(false)" onto all virtual thread builders to disable ThreadLocal use. This is when I discover that javax.imageio.ImageIO initialisation depends on ThreadLocal. The stack trace points at IIORegistry initialisation: at java.desktop/javax.imageio.spi.IIORegistry.getDefaultInstance(Unknown Source) at java.desktop/javax.imageio.ImageIO.(Unknown Source) Obviously I've got an easy workaround - "allowSetThreadLocals(true)" puts it back to working reliably, plus it appears that using some call like "ImageIO.getCache()" in main() also reduces likelyhood of this exception as it initialises enough of ImageIO before use in multiple threads. Are there any plans to unpick the ThreadLocal dependency inside javax.imageio.ImageIO for future JDK work? Kind regards Duncan Gittins -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Tue May 9 18:01:43 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 9 May 2023 19:01:43 +0100 Subject: javax.imageio.ImageIO ThreadLocal use In-Reply-To: References: Message-ID: <1eff9f0e-ec7f-fe52-16dd-3e37bc44ac1b@oracle.com> On 09/05/2023 18:46, Duncan Gittins wrote: > : > > I happened to be stripping out all my ThreadLocal code recently, and > so decided to check this work by adding "allowSetThreadLocals(false)" > onto all virtual thread builders to disable ThreadLocal use. We decided not to make allowSetThreadLocals a permanent API so it has been removed for Java 21. JEP 444 [1] provides a bit on the reasons for this. We haven't discussed the TL usage in the image I/O area here. Most of the effort on reducing usages of TL has been in the base/core area. If you have proposals/ideas for reducing the usage in the image I/O code then it would be good to bring them to client-libs-dev? If the TLs are for caching purposes then it's good to create some benchmarks to see if the caching helps or makes things worse. -Alan [1] https://openjdk.org/jeps/444 From duncan.gittins at gmail.com Tue May 9 18:47:57 2023 From: duncan.gittins at gmail.com (Duncan Gittins) Date: Tue, 9 May 2023 19:47:57 +0100 Subject: javax.imageio.ImageIO ThreadLocal use In-Reply-To: <1eff9f0e-ec7f-fe52-16dd-3e37bc44ac1b@oracle.com> References: <1eff9f0e-ec7f-fe52-16dd-3e37bc44ac1b@oracle.com> Message-ID: Alan thanks for the information. I'll wipe my allowSetThreadLocal calls and add -Djdk.traceVirtualThreadLocals=true to monitor this from JDK21+. Unfortunately I'm not an expert on ImageIO - my observations (not backed with solid JMH stats) are that JPG loading is quite slow, disabling caching "ImageIO.setUseCache(false);" strangely appears to make it faster, and for the NAS/USB storage devices I have it seems that preloading a whole file into memory before calling Image.read(InputStream) beats Image.read(File) directly. Not an issue for loom-dev, and I may be incorrect anyway. Kind regards Duncan On Tue, 9 May 2023 at 19:01, Alan Bateman wrote: > > > On 09/05/2023 18:46, Duncan Gittins wrote: > > : > > > > I happened to be stripping out all my ThreadLocal code recently, and > > so decided to check this work by adding "allowSetThreadLocals(false)" > > onto all virtual thread builders to disable ThreadLocal use. > > We decided not to make allowSetThreadLocals a permanent API so it has > been removed for Java 21. JEP 444 [1] provides a bit on the reasons for > this. > > We haven't discussed the TL usage in the image I/O area here. Most of > the effort on reducing usages of TL has been in the base/core area. If > you have proposals/ideas for reducing the usage in the image I/O code > then it would be good to bring them to client-libs-dev? If the TLs are > for caching purposes then it's good to create some benchmarks to see if > the caching helps or makes things worse. > > -Alan > > [1] https://openjdk.org/jeps/444 > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Tue May 9 19:07:26 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 9 May 2023 20:07:26 +0100 Subject: javax.imageio.ImageIO ThreadLocal use In-Reply-To: References: <1eff9f0e-ec7f-fe52-16dd-3e37bc44ac1b@oracle.com> Message-ID: On 09/05/2023 19:47, Duncan Gittins wrote: > Alan > > thanks for the information. I'll wipe my allowSetThreadLocal calls and > add -Djdk.traceVirtualThreadLocals=true to monitor this from JDK21+. > > Unfortunately I'm not an expert on ImageIO - my observations (not > backed with solid JMH stats) are that JPG loading is quite slow, > disabling caching "ImageIO.setUseCache(false);" strangely appears to > make it faster, and for the NAS/USB storage devices I have it seems > that preloading a whole?file into memory before calling > Image.read(InputStream) beats Image.read(File) directly. Not an issue > for loom-dev, and I may be incorrect anyway. > ImageIO.setUseCaches configures caching on the file system. From a quick look it doesn't appear to be caching in TLs. In any case, you've found the system property to help track down usages of TLs that might not scale with a lot of virtual threads. -Alan From forax at univ-mlv.fr Tue May 9 19:29:37 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Tue, 9 May 2023 21:29:37 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> Message-ID: <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Remi Forax" , "loom-dev" > Sent: Tuesday, May 9, 2023 7:27:23 PM > Subject: Re: Structured Concurrency yet again > On 09/05/2023 17:33, Remi Forax wrote: >> I think we should restart the work on the structured concurrency API > There is updated JEP for the SC API [1] that we hope will become a > candidate soon. It is interesting to note that we seem to agree that fork() should not return a Future. I can identify two logical consequences. Firstly, as mentioned in the JEP, get() or state() should only be called after joinAll(). Calling task.state() on a running computation would throw an IllegalStateException, making State.RUNNING unnecessary. Furthermore, when scope.shutdown() is invoked, a cancelled task can be in state FAILED or CANCELLED, as explained in the documentation, which is a pain to deal with as a user. I propose to simplify the design and remove the state CANCELLED (perhaps making it a sub-state of FAILED with a method isCancelled() if we want to keep it). This way, users will have only to deal with two states SUCCESS or FAILED. It is worth noting that existing reactive APIs do not differentiate between CANCELLED and FAILED too. The second consequence concerns the TaskHandle.exception() method. It should not return a Throwable, since Callable throws an Exception and storing an Error in a field is not a good practice. Exception handling is a significant concern in Java, and we have the opportunity to provide a transparent way to address it without being constrained by the design of Future. A TaskHandle can be parameterized by both the result type and the exception type. When calling get(), exceptions are transparently re-spawned. However, this means that TaskHandle cannot be a Supplier. Then I prefer to use a Stream to deal with the different semantics of a scope instead of asking to subclass it and hoping that users will correctly manage the concurrency when overriding handleComplete(). > > -Alan. > > [1] https://openjdk.org/jeps/8306641 regards, R?mi From ron.pressler at oracle.com Tue May 9 20:33:25 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Tue, 9 May 2023 20:33:25 +0000 Subject: Structured Concurrency yet again In-Reply-To: <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> > On 9 May 2023, at 15:29, forax at univ-mlv.fr wrote: > > > It is interesting to note that we seem to agree that fork() should not return a Future. I can identify two logical consequences. > > Firstly, as mentioned in the JEP, get() or state() should only be called after joinAll(). Calling task.state() on a running computation would throw an IllegalStateException, making State.RUNNING unnecessary. Furthermore, when scope.shutdown() is invoked, a cancelled task can be in state FAILED or CANCELLED, as explained in the documentation, which is a pain to deal with as a user. I propose to simplify the design and remove the state CANCELLED (perhaps making it a sub-state of FAILED with a method isCancelled() if we want to keep it). This way, users will have only to deal with two states SUCCESS or FAILED. It is worth noting that existing reactive APIs do not differentiate between CANCELLED and FAILED too. > > The second consequence concerns the TaskHandle.exception() method. It should not return a Throwable, since Callable throws an Exception and storing an Error in a field is not a good practice. Exception handling is a significant concern in Java, and we have the opportunity to provide a transparent way to address it without being constrained by the design of Future. A TaskHandle can be parameterized by both the result type and the exception type. When calling get(), exceptions are transparently re-spawned. However, this means that TaskHandle cannot be a Supplier. > > Then I prefer to use a Stream to deal with the different semantics of a scope instead of asking to subclass it and hoping that users will correctly manage the concurrency when overriding handleComplete(). > >> >> -Alan. >> >> [1] https://openjdk.org/jeps/8306641 > > regards, > R?mi When a policy is used, there is no need for the scope to ever call either `state` or `exception` on subtasks? handles; these methods are intended to be used only by handleComplete (or from the scope only if no policy is used, but preferably one should be). As the JEP describes, all exceptions should be handled centrally, as part of the policy, before calling TaskHandle.get(), the only TaskHandle method the scope should call when using a policy. Could you show what problems you?ve run into with exceptions when policies are used? ? Ron From brian.goetz at oracle.com Tue May 9 20:38:35 2023 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 9 May 2023 16:38:35 -0400 Subject: Structured Concurrency yet again In-Reply-To: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: I would suggest to start with what problem you are trying to solve, rather than a proposed competing solution; otherwise, it is hard to compare one solution with another. For example, one problem you could be addressing here is "Future sucks".? But that doesn't require a whole new API, it only requires asking "is Future the best thing for fork to return, or should we define another abstraction?"? (As it turns out, the updated proposal Ron and Alan have does exactly that.) Are there other problems you are trying to solve here, that the incubating JEP does not do well enough? On 5/9/2023 12:33 PM, Remi Forax wrote: > I think we should restart the work on the structured concurrency API, here is a proposal. > > If Java had async/await keyword, computing the sum of two asynchronous call, it will be something like > > int value = await async () -> { > Thread.sleep(100); > return 10; > }; > int value2 = await async () -> { > Thread.sleep(300); > return 30; > }; > assertEquals(40, value + value2); > > Apart of the colored function problem, another problem of this API is that the asynchronous calls are executed sequentially and not at the same time. > > If we use the Executor/Future API instead, the calls are called in parallel > > var executor = ... > var future = executor.submit(() -> { > Thread.sleep(100); > return 10; > }); > var future2 = executor.submit(() -> { > Thread.sleep(300); > return 30; > }); > int value = future.get(); > int value2 = future2.get(); > assertEquals(40, value + value2); > > > But there are several other issues with this API > - if "future.get()" throws an exception, future2.get() is never called so the second task is now a runaway task. It should be cancelled. > - submit returns a Future which is only parameterized by the type of the result, all exceptions are stored as a Throwable, there is no exception transparency (something the async/await approach provides). > - A future has 4 states, RUNNING, SUCCESS, FAILED and CANCELLED, but as a user we are only need to know if the computation succeed or failed. We should not be able to access to the state of the computation if the computation is not finished (Future.resultNow()/exceptionnNow() already does that) and a cancelled task should be a sub-category of a failed task. > > To solve the first problem, we introduce a try-with-resources that guarantees that all asynchronous tasks can not escape the scope and a method awaitAll() that guarantee that all computations are finished at that point. > (If you wonder why we need both, see later). > > To solve the two other problems, we need to replace the Callable/Future pair by a functional interface Computation and a class AsyncTask that correctly propagates the exceptions and provides a simpler API, with only two methods, getNow() that either return the result or throw the exception and result() that provides a result object that either represent a SUCCESS with a value or FAILED with an exception. > > > public interface Computation { > /** > * Compute the computation. > * @return a result > * @throws E an exception > * @throws InterruptedException if the computation is interrupted > */ > R compute() throws E, InterruptedException; > } > > public interface AsyncTask { > /** > * Returns a result object corresponding to the computation if the computation is done. > * @return a result object corresponding to the computation if the computation is done. > * @throws IllegalStateException if the computation is not done. > */ > Result result(); > > /** > * Returns the value of the computation > * @return the value of the computation > * @throws E the exception thrown by the computation > * @throws InterruptedException if the task was cancelled. > * @throws IllegalStateException if the computation is not done. > */ > R getNow() throws E, InterruptedException; > } > > public static final class Result { > public enum State { > /** > * if the computation succeed. > */ > SUCCESS, > /** > * If the computation failed because an exception is thrown > */ > FAILED > } > > /** > * Returns the state of the result. > * @return the state of the result. > */ > public State state() { > return state; > } > > /** > * Returns the result of the computation. > * @throws IllegalStateException if the state is not {@link State#SUCCESS}. > * @return the result of the computation. > */ > public R result() { > if (state != State.SUCCESS) { > throw new IllegalStateException("state not a success"); > } > return result; > } > > /** > * Returns the failure thrown by the computation. > * @throws IllegalStateException if the state is not {@link State#FAILED}. > * @return the failure thrown by the computation or null if the task has been cancelled. > */ > public E failure() { > if (state != State.FAILED) { > throw new IllegalStateException("state not a failure"); > } > return failure; > } > ... > } > > > If we put everything together, we get the following code > > > try(var scope = new AsyncScope()) { > AsyncTask task = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > var task2 = scope.async(() -> { > Thread.sleep(300); > return 30; > }); > > scope.awaitAll(); > > int value = task.getNow(); > int value2 = task2.getNow(); > assertEquals(40, value + value2); > } > > > We may also want the results as a stream, for that we introduce a method await() that takes a function that take a stream of the results and return a value. Using a stream is interesting because it's a way to abstract a loop over the results at the same time the results are produced, so if the stream is short-circuited, we do not need to wait all results to be computed and the results are ordered by completion order. > > This API is far better than the current StructuredTaskScope.handleComplete() which requires to subclass StructuredTaskScope and deal with the concurrency if you want to get access to the future in completion order. > > But let starts, with a simple example, we can gather all results using Stream.toList(). > > > try(var scope = new AsyncScope()) { > var task = scope.async(() -> { > Thread.sleep(300); > return 30; > }); > var task2 = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > > List> results = > scope.await(Stream::toList); > var sum = 0; > for(var result: results) { > sum += result.getNow(); > } > assertEquals(40, sum); > } > > We can filter to only keep the success result using Result::keepOnlySuccess which either return a stream with the result value in case of a SUCCESS and an empty stream if the computation FAILED. > > > try(var scope = new AsyncScope()) { > var task = scope.async(() -> { > Thread.sleep(300); > return 30; > }); > var task2 = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > > List values = > scope.await(stream -> stream.flatMap(Result::keepOnlySuccess).toList()); > assertEquals(List.of(10, 30), values); > } > > > And we can reduce the results into one unique result using Result.merger() which takes a binary function to combine the results (failures are combined using addSuppressed). > > try(var scope = new AsyncScope()) { > var task = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > var task2 = scope.async(() -> { > Thread.sleep(300); > return 30; > }); > > Result result = > scope.await(stream -> stream.reduce(Result.merger(Integer::sum))) > .orElseThrow(); > switch (result.state()) { > case SUCCESS -> assertEquals(40, result.result()); > case FAILED -> fail(); > } > } > > And we can use Stream.findFirst() (or any other short circuited terminal operations) if we do not need all results of the computations. In that case, the tasks still running will be cancelled asynchronously with the guarantee that all computation have finished when exiting the scope. > > > try(var scope = new AsyncScope()) { > var task = scope.async(() -> { > Thread.sleep(100); > return 10; > }); > var task2 = scope.async(() -> { > Thread.sleep(1_000); > return 30; > }); > > int value = scope > .await(stream -> stream.flatMap(Result::keepOnlySuccess).findFirst()) > .orElseThrow(); > assertEquals(10, value); > assertEquals(10, task.getNow()); > assertTrue(task2.result().isCancelled()); > } > > There are other examples on Github [1]. > > To summarize, an async scope defines a scope for asynchronous calls that will run in parallel by default. the method async() executes an asynchronous computation in a fresh virtual thread and returns a task object that is only available after one of the method await() is called. awaitAll() waits for all computations to complete (normally or abnormally). await(stream -> ...) process the results of computation in completion order and in case of early returns, all still running computations are automatically cancelled. > > > R?mi > > [1]https://github.com/forax/loom-fiber/blob/master/src/test/java/fr/umlv/loom/structured/AsyncScopeTest.java > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric at kolotyluk.net Tue May 9 20:43:35 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Tue, 9 May 2023 13:43:35 -0700 Subject: Structured Concurrency yet again In-Reply-To: <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> Message-ID: <9ec1bea6-a742-9e3f-f83f-e7b7e450f91e@kolotyluk.net> Alan, looking at https://openjdk.org/jeps/8306641 It would be nice to see what TaskHandle looks like. In https://docs.oracle.com/en/java/javase/20/docs/api/index.html I cannot find any TaskHandle. Can this be defined in this document? Everyone, I think the move from scope.fork(...) returning Supplier/TaskHandle instead of Future is a good move. Took me a while swallow it, but after I did, I felt better. On 2023-05-09 10:27 a.m., Alan Bateman wrote: > On 09/05/2023 17:33, Remi Forax wrote: >> I think we should restart the work on the structured concurrency API > There is updated JEP for the SC API [1] that we hope will become a > candidate soon. > > -Alan. > > [1] https://openjdk.org/jeps/8306641 From holo3146 at gmail.com Tue May 9 21:02:09 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Wed, 10 May 2023 00:02:09 +0300 Subject: Structured Concurrency yet again In-Reply-To: <9ec1bea6-a742-9e3f-f83f-e7b7e450f91e@kolotyluk.net> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <9ec1bea6-a742-9e3f-f83f-e7b7e450f91e@kolotyluk.net> Message-ID: Hi Eric You can find TaskHandle in the preview javadocs [1]. [1]: https://cr.openjdk.org/~alanb/sc/api/java.base/java/util/concurrent/StructuredTaskScope.TaskHandle.html On Tue, May 9, 2023, 23:43 Eric Kolotyluk wrote: > Alan, looking at https://openjdk.org/jeps/8306641 > > It would be nice to see what TaskHandle looks like. In > https://docs.oracle.com/en/java/javase/20/docs/api/index.html I cannot > find any TaskHandle. Can this be defined in this document? > > Everyone, I think the move from scope.fork(...) returning > Supplier/TaskHandle instead of Future is a good move. Took me a while > swallow it, but after I did, I felt better. > > On 2023-05-09 10:27 a.m., Alan Bateman wrote: > > On 09/05/2023 17:33, Remi Forax wrote: > >> I think we should restart the work on the structured concurrency API > > There is updated JEP for the SC API [1] that we hope will become a > > candidate soon. > > > > -Alan. > > > > [1] https://openjdk.org/jeps/8306641 > -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Tue May 9 22:38:27 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 10 May 2023 00:38:27 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> Message-ID: <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "Alan Bateman" , "loom-dev" > Sent: Tuesday, May 9, 2023 10:33:25 PM > Subject: Re: Structured Concurrency yet again >> On 9 May 2023, at 15:29, forax at univ-mlv.fr wrote: >> >> >> It is interesting to note that we seem to agree that fork() should not return a >> Future. I can identify two logical consequences. >> >> Firstly, as mentioned in the JEP, get() or state() should only be called after >> joinAll(). Calling task.state() on a running computation would throw an >> IllegalStateException, making State.RUNNING unnecessary. Furthermore, when >> scope.shutdown() is invoked, a cancelled task can be in state FAILED or >> CANCELLED, as explained in the documentation, which is a pain to deal with as a >> user. I propose to simplify the design and remove the state CANCELLED (perhaps >> making it a sub-state of FAILED with a method isCancelled() if we want to keep >> it). This way, users will have only to deal with two states SUCCESS or FAILED. >> It is worth noting that existing reactive APIs do not differentiate between >> CANCELLED and FAILED too. >> >> The second consequence concerns the TaskHandle.exception() method. It should not >> return a Throwable, since Callable throws an Exception and storing an Error in >> a field is not a good practice. Exception handling is a significant concern in >> Java, and we have the opportunity to provide a transparent way to address it >> without being constrained by the design of Future. A TaskHandle can be >> parameterized by both the result type and the exception type. When calling >> get(), exceptions are transparently re-spawned. However, this means that >> TaskHandle cannot be a Supplier. >> >> Then I prefer to use a Stream to deal with the different semantics of a scope >> instead of asking to subclass it and hoping that users will correctly manage >> the concurrency when overriding handleComplete(). >> >>> >>> -Alan. >>> >>> [1] https://openjdk.org/jeps/8306641 >> >> regards, >> R?mi > > When a policy is used, there is no need for the scope to ever call either > `state` or `exception` on subtasks? handles; these methods are intended to be > used only by handleComplete (or from the scope only if no policy is used, but > preferably one should be). As the JEP describes, all exceptions should be > handled centrally, as part of the policy, before calling TaskHandle.get(), the > only TaskHandle method the scope should call when using a policy. Could you > show what problems you?ve run into with exceptions when policies are used ? Usually when you do something synchronous with some network calls, you mix an algorithm (i need at most the first three valid values) with some IO/Network specific concerns (i want to stop if the is an UnknownHostException (aka DNS error) but an IOException (aka unknown network error) is fine). In term of synchronous code, it's something like var list = new ArrayList(); var error = (IOException) null; for(...) { Result result; try { result = synchronousCall(...); } catch(UnknownHostException e) { throw ... (e); } catch(IOException e) { if (error == null) { error = e; // just record the error } continue; } if (valid(result)) { list.add(result); if (list.size() == 3) { break; } } } if (list.isEmpty()) { throw ... (error); } ... How can i write this kind of stuff as a reusable policy that centralizes all the exceptions ? > > ? Ron R?mi From forax at univ-mlv.fr Tue May 9 22:42:46 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 10 May 2023 00:42:46 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <582681254.52268732.1683672166761.JavaMail.zimbra@univ-eiffel.fr> > From: "Brian Goetz" > To: "Remi Forax" , "loom-dev" > Sent: Tuesday, May 9, 2023 10:38:35 PM > Subject: Re: Structured Concurrency yet again > I would suggest to start with what problem you are trying to solve, rather than > a proposed competing solution; otherwise, it is hard to compare one solution > with another. > For example, one problem you could be addressing here is "Future sucks". But > that doesn't require a whole new API, it only requires asking "is Future the > best thing for fork to return, or should we define another abstraction?" (As it > turns out, the updated proposal Ron and Alan have does exactly that.) yes, Future does not suck, it's more oriented as something to store result of a pure computation than as something able to run IO/Network operations. > Are there other problems you are trying to solve here, that the incubating JEP > does not do well enough ? See my message to Ron. regards, R?mi > On 5/9/2023 12:33 PM, Remi Forax wrote: >> I think we should restart the work on the structured concurrency API, here is a >> proposal. >> If Java had async/await keyword, computing the sum of two asynchronous call, it >> will be something like >> int value = await async () -> { >> Thread.sleep(100); >> return 10; >> }; >> int value2 = await async () -> { >> Thread.sleep(300); >> return 30; >> }; >> assertEquals(40, value + value2); >> Apart of the colored function problem, another problem of this API is that the >> asynchronous calls are executed sequentially and not at the same time. >> If we use the Executor/Future API instead, the calls are called in parallel >> var executor = ... >> var future = executor.submit(() -> { >> Thread.sleep(100); >> return 10; >> }); >> var future2 = executor.submit(() -> { >> Thread.sleep(300); >> return 30; >> }); >> int value = future.get(); >> int value2 = future2.get(); >> assertEquals(40, value + value2); >> But there are several other issues with this API >> - if "future.get()" throws an exception, future2.get() is never called so the >> second task is now a runaway task. It should be cancelled. >> - submit returns a Future which is only parameterized by the type of the result, >> all exceptions are stored as a Throwable, there is no exception transparency >> (something the async/await approach provides). >> - A future has 4 states, RUNNING, SUCCESS, FAILED and CANCELLED, but as a user >> we are only need to know if the computation succeed or failed. We should not be >> able to access to the state of the computation if the computation is not >> finished (Future.resultNow()/exceptionnNow() already does that) and a cancelled >> task should be a sub-category of a failed task. >> To solve the first problem, we introduce a try-with-resources that guarantees >> that all asynchronous tasks can not escape the scope and a method awaitAll() >> that guarantee that all computations are finished at that point. >> (If you wonder why we need both, see later). >> To solve the two other problems, we need to replace the Callable/Future pair by >> a functional interface Computation and a class AsyncTask that correctly >> propagates the exceptions and provides a simpler API, with only two methods, >> getNow() that either return the result or throw the exception and result() that >> provides a result object that either represent a SUCCESS with a value or FAILED >> with an exception. >> public interface Computation { >> /** >> * Compute the computation. >> * @return a result >> * @throws E an exception >> * @throws InterruptedException if the computation is interrupted >> */ >> R compute() throws E, InterruptedException; >> } >> public interface AsyncTask { >> /** >> * Returns a result object corresponding to the computation if the computation is >> done. >> * @return a result object corresponding to the computation if the computation is >> done. >> * @throws IllegalStateException if the computation is not done. >> */ >> Result result(); >> /** >> * Returns the value of the computation >> * @return the value of the computation >> * @throws E the exception thrown by the computation >> * @throws InterruptedException if the task was cancelled. >> * @throws IllegalStateException if the computation is not done. >> */ >> R getNow() throws E, InterruptedException; >> } >> public static final class Result { >> public enum State { >> /** >> * if the computation succeed. >> */ >> SUCCESS, >> /** >> * If the computation failed because an exception is thrown >> */ >> FAILED >> } >> /** >> * Returns the state of the result. >> * @return the state of the result. >> */ >> public State state() { >> return state; >> } >> /** >> * Returns the result of the computation. >> * @throws IllegalStateException if the state is not {@link State#SUCCESS}. >> * @return the result of the computation. >> */ >> public R result() { >> if (state != State.SUCCESS) { >> throw new IllegalStateException("state not a success"); >> } >> return result; >> } >> /** >> * Returns the failure thrown by the computation. >> * @throws IllegalStateException if the state is not {@link State#FAILED}. >> * @return the failure thrown by the computation or null if the task has been >> cancelled. >> */ >> public E failure() { >> if (state != State.FAILED) { >> throw new IllegalStateException("state not a failure"); >> } >> return failure; >> } >> ... >> } >> If we put everything together, we get the following code >> try(var scope = new AsyncScope()) { >> AsyncTask task = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(300); >> return 30; >> }); >> scope.awaitAll(); >> int value = task.getNow(); >> int value2 = task2.getNow(); >> assertEquals(40, value + value2); >> } >> We may also want the results as a stream, for that we introduce a method await() >> that takes a function that take a stream of the results and return a value. >> Using a stream is interesting because it's a way to abstract a loop over the >> results at the same time the results are produced, so if the stream is >> short-circuited, we do not need to wait all results to be computed and the >> results are ordered by completion order. >> This API is far better than the current StructuredTaskScope.handleComplete() >> which requires to subclass StructuredTaskScope and deal with the concurrency if >> you want to get access to the future in completion order. >> But let starts, with a simple example, we can gather all results using >> Stream.toList(). >> try(var scope = new AsyncScope()) { >> var task = scope.async(() -> { >> Thread.sleep(300); >> return 30; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> List> results = >> scope.await(Stream::toList); >> var sum = 0; >> for(var result: results) { >> sum += result.getNow(); >> } >> assertEquals(40, sum); >> } >> We can filter to only keep the success result using Result::keepOnlySuccess >> which either return a stream with the result value in case of a SUCCESS and an >> empty stream if the computation FAILED. >> try(var scope = new AsyncScope()) { >> var task = scope.async(() -> { >> Thread.sleep(300); >> return 30; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> List values = >> scope.await(stream -> stream.flatMap(Result::keepOnlySuccess).toList()); >> assertEquals(List.of(10, 30), values); >> } >> And we can reduce the results into one unique result using Result.merger() which >> takes a binary function to combine the results (failures are combined using >> addSuppressed). >> try(var scope = new AsyncScope()) { >> var task = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(300); >> return 30; >> }); >> Result result = >> scope.await(stream -> stream.reduce(Result.merger(Integer::sum))) >> .orElseThrow(); >> switch (result.state()) { >> case SUCCESS -> assertEquals(40, result.result()); >> case FAILED -> fail(); >> } >> } >> And we can use Stream.findFirst() (or any other short circuited terminal >> operations) if we do not need all results of the computations. In that case, >> the tasks still running will be cancelled asynchronously with the guarantee >> that all computation have finished when exiting the scope. >> try(var scope = new AsyncScope()) { >> var task = scope.async(() -> { >> Thread.sleep(100); >> return 10; >> }); >> var task2 = scope.async(() -> { >> Thread.sleep(1_000); >> return 30; >> }); >> int value = scope >> .await(stream -> stream.flatMap(Result::keepOnlySuccess).findFirst()) >> .orElseThrow(); >> assertEquals(10, value); >> assertEquals(10, task.getNow()); >> assertTrue(task2.result().isCancelled()); >> } >> There are other examples on Github [1]. >> To summarize, an async scope defines a scope for asynchronous calls that will >> run in parallel by default. the method async() executes an asynchronous >> computation in a fresh virtual thread and returns a task object that is only >> available after one of the method await() is called. awaitAll() waits for all >> computations to complete (normally or abnormally). await(stream -> ...) process >> the results of computation in completion order and in case of early returns, >> all still running computations are automatically cancelled. >> R?mi >> [1] [ >> https://github.com/forax/loom-fiber/blob/master/src/test/java/fr/umlv/loom/structured/AsyncScopeTest.java >> | >> https://github.com/forax/loom-fiber/blob/master/src/test/java/fr/umlv/loom/structured/AsyncScopeTest.java >> ] -------------- next part -------------- An HTML attachment was scrubbed... URL: From holo3146 at gmail.com Wed May 10 06:47:15 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Wed, 10 May 2023 09:47:15 +0300 Subject: Structured Concurrency yet again In-Reply-To: <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> Message-ID: The way to handle these cases is to put the logic after the task ends into the scope itself. For example: class ContinuableScope extends StructuredTaskScope { @FunctionalInterface public interface FanLogic { K get(TaskHandle handle) throws Throwable; } private final Queue results = new ConcurrentLinkedQueue<>(); private final Queue exceptions = new ConcurrentLinkedQueue<>(); ContinuableScope(FanLogic next, ShutdownStrategy strategy) { this.next = next; this.strategt = strategy; super(null, Thread.ofVirtual().factory()); } @Override protected void handleComplete(TaskHandle handle) { try { var nr = next.get(handle); if (nr == null) return; // using null to not make this more complicated in the mail if (strategy.testResult(nr, results, exceptions)) { // Kill the scope return; } results.add(nr); } catch(Throwable e) { if (strategy.testFailure(e, results, exceptions)) { // Kill the scope return; } exceptions.add(nr); } } public Stream results() { super.ensureOwnerAndJoined(); return results.stream(); } public Stream exceptions() { super.ensureOwnerAndJoined(); return exceptions.stream(); } } --- public void main() { var strategy = new ShutdownStrategy(...); // Shut down on unknown host, and on results length == 3 var fanAction = (th) -> { var r = transform(th); if (validate(r)) return r; return null; //again, using null for briefity } try (var scope = new ContinuableScope(fanAction, strategy)) { for (...) { scope.fork(() -> call(...)); } scope.join(); if (scope.results().isEmpty()) { throw ... } // Return an object storing both scope.results() and scope.exceptions() } } On Wed, May 10, 2023, 01:39 wrote: > ----- Original Message ----- > > From: "Ron Pressler" > > To: "Remi Forax" > > Cc: "Alan Bateman" , "loom-dev" < > loom-dev at openjdk.java.net> > > Sent: Tuesday, May 9, 2023 10:33:25 PM > > Subject: Re: Structured Concurrency yet again > > >> On 9 May 2023, at 15:29, forax at univ-mlv.fr wrote: > >> > >> > >> It is interesting to note that we seem to agree that fork() should not > return a > >> Future. I can identify two logical consequences. > >> > >> Firstly, as mentioned in the JEP, get() or state() should only be > called after > >> joinAll(). Calling task.state() on a running computation would throw an > >> IllegalStateException, making State.RUNNING unnecessary. Furthermore, > when > >> scope.shutdown() is invoked, a cancelled task can be in state FAILED or > >> CANCELLED, as explained in the documentation, which is a pain to deal > with as a > >> user. I propose to simplify the design and remove the state CANCELLED > (perhaps > >> making it a sub-state of FAILED with a method isCancelled() if we want > to keep > >> it). This way, users will have only to deal with two states SUCCESS or > FAILED. > >> It is worth noting that existing reactive APIs do not differentiate > between > >> CANCELLED and FAILED too. > >> > >> The second consequence concerns the TaskHandle.exception() method. It > should not > >> return a Throwable, since Callable throws an Exception and storing an > Error in > >> a field is not a good practice. Exception handling is a significant > concern in > >> Java, and we have the opportunity to provide a transparent way to > address it > >> without being constrained by the design of Future. A TaskHandle can be > >> parameterized by both the result type and the exception type. When > calling > >> get(), exceptions are transparently re-spawned. However, this means that > >> TaskHandle cannot be a Supplier. > >> > >> Then I prefer to use a Stream to deal with the different semantics of a > scope > >> instead of asking to subclass it and hoping that users will correctly > manage > >> the concurrency when overriding handleComplete(). > >> > >>> > >>> -Alan. > >>> > >>> [1] https://openjdk.org/jeps/8306641 > >> > >> regards, > >> R?mi > > > > When a policy is used, there is no need for the scope to ever call either > > `state` or `exception` on subtasks? handles; these methods are intended > to be > > used only by handleComplete (or from the scope only if no policy is > used, but > > preferably one should be). As the JEP describes, all exceptions should be > > handled centrally, as part of the policy, before calling > TaskHandle.get(), the > > only TaskHandle method the scope should call when using a policy. Could > you > > show what problems you?ve run into with exceptions when policies are > used ? > > Usually when you do something synchronous with some network calls, you mix > an algorithm (i need at most the first three valid values) with some > IO/Network specific concerns (i want to stop if the is an > UnknownHostException (aka DNS error) but an IOException (aka unknown > network error) is fine). > > In term of synchronous code, it's something like > > var list = new ArrayList(); > var error = (IOException) null; > for(...) { > Result result; > try { > result = synchronousCall(...); > } catch(UnknownHostException e) { > throw ... (e); > } catch(IOException e) { > if (error == null) { > error = e; // just record the error > } > continue; > } > if (valid(result)) { > list.add(result); > if (list.size() == 3) { > break; > } > } > } > if (list.isEmpty()) { > throw ... (error); > } > ... > > How can i write this kind of stuff as a reusable policy that centralizes > all the exceptions ? > > > > > ? Ron > > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Wed May 10 13:03:11 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 10 May 2023 14:03:11 +0100 Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> On 10/05/2023 07:47, Holo The Sage Wolf wrote: > The way to handle these cases is to put the logic after the task ends > into the scope itself. Yes, extend STS and implement the policy in the subclass. The subclass can define APIs to consume the outcome after join. Remi's example calls for short circuiting after 3 tasks complete successfully or any task fails with UnknownHostException, so easy to do. -Alan. From forax at univ-mlv.fr Wed May 10 15:01:19 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 10 May 2023 17:01:19 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> Message-ID: <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Holo The Sage Wolf" , "Remi Forax" > Cc: "Ron Pressler" , "loom-dev" > Sent: Wednesday, May 10, 2023 3:03:11 PM > Subject: Re: Structured Concurrency yet again > On 10/05/2023 07:47, Holo The Sage Wolf wrote: >> The way to handle these cases is to put the logic after the task ends >> into the scope itself. > > Yes, extend STS and implement the policy in the subclass. The subclass > can define APIs to consume the outcome after join. Remi's example calls > for short circuiting after 3 tasks complete successfully or any task > fails with UnknownHostException, so easy to do. The problem is that unlike any other classes in java.util.concurrent, STS is not thread safe by default, it requires to carefully implement any subclasses in a thread safe way. By example, the implementation provided by Holo may not work because - it requires the implementations of FanLogic and the ShutdownStrategy to be thread safe given that they are created and used by different threads. - ConcurrentLinkedQueue.size() is O(n), not O(1) ! - results() can not be protected by ensureOwnerAndJoined given it is accessed by the implementation of the ShutdownStrategy - you can have more than 3 results because a thread can be de-scheduled after the call to strategy.testResult() and before the call to results.add(). Concurrency is really hard, harder than most people think. I would prefer to provide an API easier to use. I believe that having a method join() that takes a function that takes a stream is easier to use correctly. > > -Alan. R?mi From eric at kolotyluk.net Wed May 10 15:44:55 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Wed, 10 May 2023 08:44:55 -0700 Subject: Structured Concurrency yet again In-Reply-To: <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <0645b5c4-0789-d304-0022-7974c5c9c8cf@kolotyluk.net> Yes, but it is a lot easier than in 1995 when I first started using Java. ? Duke has come a long way baby... On 2023-05-10 8:01 a.m., forax at univ-mlv.fr wrote: > Concurrency is really hard, harder than most people think. From holo3146 at gmail.com Wed May 10 16:23:41 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Wed, 10 May 2023 19:23:41 +0300 Subject: Structured Concurrency yet again In-Reply-To: <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > The problem is that unlike any other classes in java.util.concurrent, STS is not thread safe by default, it requires to carefully implement any subclasses in a thread safe way. Yes, it is true, this is a result of the fact that structured concurrency is designed to be similar, and to be easily integrated, with a imperative style programming. > the implementation provided by Holo may not work because [...] All of those are of course true, to make it production ready you would need to add locks, the moment you add locks you can also solve the O(n) problem. > I would prefer to provide an API easier to use Again, this is true. I would like to have as part of the default implementations an implementation of STS that have a good Short-circuit strategy as a parameter (and a Transformer is a nice to have as well) > I believe that having a method join() that takes a function that takes a stream is easier to use correctly This is the first place I disagree with you. Before explaining more why I disagree I need to point out, implementing a STS that have a `await(Stream -> T) -> T method that works as you described is possible, and it is in fact *extremely* similar to the example I have (?locks I omitted and data structures), you can make it and use it everywhere (I'm aware that there are nuances here, but I believe you can overcome them). Now, I *strongly* against putting such implementation in the j.u.concurrency, the API you described encourages a paradigm that is not what the API is aiming for, what you really want to write is not T result; try (var scope = ...) { \\ 0 scope.fork(...); \\1 for (...) { \\ 2 scope.fork(...); \\ 3 } result = scope.await(out -> out.flatMap(...)); \\4 } But rather: T result = new StructuredTaskStream(...) \\ 0 .fork(...) \\ 1 .takeWhile(...) \\ 2 .fork(...) \\ 3 .flatMap(...); \\ 4 Which is a different paradigm, and indeed a different implementation of structures concurrency **as long as** you guarantee that after the scope of any terminating operator all of the tasks ended, successfully or otherwise. Such API can work, and I know people who prefer that style, but this doesn't change the fact that the STScope is not designed for this paradigm On Wed, May 10, 2023, 18:01 wrote: > ----- Original Message ----- > > From: "Alan Bateman" > > To: "Holo The Sage Wolf" , "Remi Forax" < > forax at univ-mlv.fr> > > Cc: "Ron Pressler" , "loom-dev" < > loom-dev at openjdk.java.net> > > Sent: Wednesday, May 10, 2023 3:03:11 PM > > Subject: Re: Structured Concurrency yet again > > > On 10/05/2023 07:47, Holo The Sage Wolf wrote: > >> The way to handle these cases is to put the logic after the task ends > >> into the scope itself. > > > > Yes, extend STS and implement the policy in the subclass. The subclass > > can define APIs to consume the outcome after join. Remi's example calls > > for short circuiting after 3 tasks complete successfully or any task > > fails with UnknownHostException, so easy to do. > > The problem is that unlike any other classes in java.util.concurrent, STS > is not thread safe by default, it requires to carefully implement any > subclasses in a thread safe way. > > By example, the implementation provided by Holo may not work because > - it requires the implementations of FanLogic and the ShutdownStrategy to > be thread safe given that they are created and used by different threads. > - ConcurrentLinkedQueue.size() is O(n), not O(1) ! > - results() can not be protected by ensureOwnerAndJoined given it is > accessed by the implementation of the ShutdownStrategy > - you can have more than 3 results because a thread can be de-scheduled > after the call to strategy.testResult() and before the call to > results.add(). > > Concurrency is really hard, harder than most people think. > > I would prefer to provide an API easier to use. I believe that having a > method join() that takes a function that takes a stream is easier to use > correctly. > > > > > -Alan. > > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Wed May 10 16:34:33 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 10 May 2023 17:34:33 +0100 Subject: Structured Concurrency yet again In-Reply-To: <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> On 10/05/2023 16:01, forax at univ-mlv.fr wrote: > : > The problem is that unlike any other classes in java.util.concurrent, STS is not thread safe by default, it requires to carefully implement any subclasses in a thread safe way. STS is thread safe, as are the ShutdownOnXXX subclasses for the common cases. When you go down the more advanced route, in this case to have a policy to short circuit when there are 3 results or a task fails with UHE, then it means extending STS and being careful. I think we will need to get real world usage to see if this is really a problem or whether additional support is required to make it easier to implement policy in a thread safe way. > : > > - results() can not be protected by ensureOwnerAndJoined given it is accessed by the implementation of the ShutdownStrategy The intention is that methods for processing the outcome after join use ensureOwnerAndJoined so they are restricted to the main task/owner. > : > > I would prefer to provide an API easier to use. I believe that having a method join() that takes a function that takes a stream is easier to use correctly. We were down that road before when the prototype was based on ES. It's a different style of API, also it involves the main task doing O(N) wakeups rather than one. -Alan From ron.pressler at oracle.com Wed May 10 19:36:32 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 10 May 2023 19:36:32 +0000 Subject: Structured Concurrency yet again In-Reply-To: <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> Message-ID: <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> > On 10 May 2023, at 12:34, Alan Bateman wrote: >> I would prefer to provide an API easier to use. I believe that having a method join() that takes a function that takes a stream is easier to use correctly. > We were down that road before when the prototype was based on ES. Exactly. Since we tried quite a few things and STS is expected to start Preview, I think we should let actual problems people encounter with the API inform its evolution (as was the case with ditching Future as fork?s return type), especially because SC is not quite mainstream yet. I think STS is a good API to preview because I find it to strike a nice balance between simplicity and flexibility; it?s neither too high-level nor too low-level. So I think it can teach us about how people may use SC in the field while actually being useful to them. We have ideas for other structured-concurrency APIs (e.g. stream-based) that could be provided in addition to STS to make some common cases even more pleasant, so it?s quite possible that STS will not be the last word the JDK says on the subject of structured concurrency. ? Ron From attila.kelemen85 at gmail.com Wed May 10 20:18:08 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Wed, 10 May 2023 22:18:08 +0200 Subject: Structured Concurrency yet again In-Reply-To: <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <98f82c13-321b-db7a-7779-077d83679ada@oracle.com> <2061316916.52212270.1683660577855.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> Message-ID: Talking about "not the last word": Are there plans to introduce some better cancellation support? I mean something better than the current thread interruption mechanism (even though it is considerably less awkward with virtual threads). If so, are there any posts on the plans somewhere? Ron Pressler ezt ?rta (id?pont: 2023. m?j. 10., Sze, 21:37): > > > > > On 10 May 2023, at 12:34, Alan Bateman wrote: > >> I would prefer to provide an API easier to use. I believe that having a method join() that takes a function that takes a stream is easier to use correctly. > > We were down that road before when the prototype was based on ES. > > Exactly. Since we tried quite a few things and STS is expected to start Preview, I think we should let actual problems people encounter with the API inform its evolution (as was the case with ditching Future as fork?s return type), especially because SC is not quite mainstream yet. I think STS is a good API to preview because I find it to strike a nice balance between simplicity and flexibility; it?s neither too high-level nor too low-level. So I think it can teach us about how people may use SC in the field while actually being useful to them. > > We have ideas for other structured-concurrency APIs (e.g. stream-based) that could be provided in addition to STS to make some common cases even more pleasant, so it?s quite possible that STS will not be the last word the JDK says on the subject of structured concurrency. > > ? Ron > From forax at univ-mlv.fr Wed May 10 21:46:24 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 10 May 2023 23:46:24 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> Message-ID: <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> >> On 10 May 2023, at 12:34, Alan Bateman wrote: >> : >> The problem is that unlike any other classes in java.util.concurrent, STS is not >> thread safe by default, it requires to carefully implement any subclasses in a >> thread safe way. > > STS is thread safe, as are the ShutdownOnXXX subclasses for the common > cases. When you go down the more advanced route, in this case to have a > policy to short circuit when there are 3 results or a task fails with > UHE, then it means extending STS and being careful. I think we will need > to get real world usage to see if this is really a problem or whether > additional support is required to make it easier to implement policy in > a thread safe way. I think we can have 3 implementations, the two existing ShutdownOnXXX and another that uses internally a blocking queue + a spliterator so if a user want a specific logic, he/she does not have to deal with the concurrency issue. > > >> : >> >> - results() can not be protected by ensureOwnerAndJoined given it is accessed by >> the implementation of the ShutdownStrategy > The intention is that methods for processing the outcome after join use > ensureOwnerAndJoined so they are restricted to the main task/owner. This works well only when you wait for all the asynchronous calls to finish before doing something. > > >> : >> >> I would prefer to provide an API easier to use. I believe that having a method >> join() that takes a function that takes a stream is easier to use correctly. > We were down that road before when the prototype was based on ES. It's a > different style of API, also it involves the main task doing O(N) > wakeups rather than one. Yes, but Go channels also do O(N) wakeups in the worst case (sometimes you can pump several results in one wakeup) and nobody complain. What i'm proposing is just a glorified blocking queue + a spliterator but it allows to implement any logic more easily. --- > From: "Ron Pressler" > To: "Alan Bateman" , "Remi Forax" > Cc: "loom-dev" > Sent: Wednesday, May 10, 2023 9:36:32 PM > Subject: Re: Structured Concurrency yet again >> On 10 May 2023, at 12:34, Alan Bateman wrote: >>> I would prefer to provide an API easier to use. I believe that having a method >>> join() that takes a function that takes a stream is easier to use correctly. >> We were down that road before when the prototype was based on ES. > > Exactly. Since we tried quite a few things and STS is expected to start Preview, > I think we should let actual problems people encounter with the API inform its > evolution (as was the case with ditching Future as fork?s return type), > especially because SC is not quite mainstream yet. I think STS is a good API to > preview because I find it to strike a nice balance between simplicity and > flexibility; it?s neither too high-level nor too low-level. So I think it can > teach us about how people may use SC in the field while actually being useful > to them. You're aware that I have demonstrated the Java 19 version of STS to numerous conference attendees. However, the requirement to create custom subclasses is often a point of confusion for them. Many existing APIs attempt to separate the concurrency aspect, which is managed by the implementation, from the business logic that users should focus on. I believe the current incarnation of STS is falling short. > > We have ideas for other structured-concurrency APIs (e.g. stream-based) that > could be provided in addition to STS to make some common cases even more > pleasant, so it?s quite possible that STS will not be the last word the JDK > says on the subject of structured concurrency. Cool ! BTW, here is how to write the code if scope.join() (scope.await() here) takes a function that takes a stream of results try(var scope = new AsyncScope()) { for(...) { scope.async(() -> { ... }); } var box = new Object() { int counter; }; Result, IOException> result = scope.await(stream -> stream .peek(r -> { if (r.isFailed() && r.failure() instanceof UnknownHostException e) { throw new UncheckedIOException(e); } }) .filter(r -> isValid(r)) .takeWhile(r -> r.isFailed() || box.counter++ < 3) .collect(Result.toResult(Collectors.toList()))); ... } The code is full of side effects, more than i would, but i think it's more readable than creating a subclass of STS and hoping to get the concurrency right. > > ? Ron R?mi From ron.pressler at oracle.com Wed May 10 23:36:07 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 10 May 2023 23:36:07 +0000 Subject: Structured Concurrency yet again In-Reply-To: <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 10 May 2023, at 17:46, forax at univ-mlv.fr wrote: Yes, but Go channels also do O(N) wakeups in the worst case (sometimes you can pump several results in one wakeup) and nobody complain. Channels aren?t Go?s structured concurrency construct, errgroups are, and they block once (at least their API suggests that). What i'm proposing is just a glorified blocking queue + a spliterator but it allows to implement any logic more easily. Channels are something we?re interested in, but as an orthogonal feature to ? putting it very simply ? solve the ?blocking queue closing? problem (and perhaps some others, such as distributed implementation, easy functional transformations). You're aware that I have demonstrated the Java 19 version of STS to numerous conference attendees. However, the requirement to create custom subclasses is often a point of confusion for them. Many existing APIs attempt to separate the concurrency aspect, which is managed by the implementation, from the business logic that users should focus on. I believe the current incarnation of STS is falling short. Can you please try to clearly identify the problem you?re trying to solve? E.g. doing X well with STS is hard ? Ron -------------- next part -------------- An HTML attachment was scrubbed... URL: From oleksandr.otenko at gmail.com Thu May 11 07:06:04 2023 From: oleksandr.otenko at gmail.com (Alex Otenko) Date: Thu, 11 May 2023 08:06:04 +0100 Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> Message-ID: :) define "hard". Because the hard bit is "just" creating a subclass of something or other. On Thu, 11 May 2023, 00:36 Ron Pressler, wrote: > > > On 10 May 2023, at 17:46, forax at univ-mlv.fr wrote: > > Yes, but Go channels also do O(N) wakeups in the worst case (sometimes you > can pump several results in one wakeup) and nobody complain. > > > Channels aren?t Go?s structured concurrency construct, errgroups are, and > they block once (at least their API suggests that). > > What i'm proposing is just a glorified blocking queue + a spliterator but > it allows to implement any logic more easily. > > > Channels are something we?re interested in, but as an orthogonal feature > to ? putting it very simply ? solve the ?blocking queue closing? problem > (and perhaps some others, such as distributed implementation, easy > functional transformations). > > > You're aware that I have demonstrated the Java 19 version of STS to > numerous conference attendees. However, the requirement to create custom > subclasses is often a point of confusion for them. Many existing APIs > attempt to separate the concurrency aspect, which is managed by the > implementation, from the business logic that users should focus on. > I believe the current incarnation of STS is falling short. > > > Can you please try to clearly identify the problem you?re trying to solve? > E.g. doing X well with STS is hard > > > ? Ron > -------------- next part -------------- An HTML attachment was scrubbed... URL: From duke at openjdk.org Thu May 11 10:37:58 2023 From: duke at openjdk.org (duke) Date: Thu, 11 May 2023 10:37:58 GMT Subject: git: openjdk/loom: fibers: 122 new changesets Message-ID: Changeset: 14874779 Author: Harshitha Onkar Date: 2023-05-03 19:39:12 +0000 URL: https://git.openjdk.org/loom/commit/14874779eeb9a279479c5aaddb40c056780d6152 8305815: Update Libpng to 1.6.39 Reviewed-by: prr ! src/java.desktop/share/legal/libpng.md ! src/java.desktop/share/native/libsplashscreen/libpng/CHANGES ! src/java.desktop/share/native/libsplashscreen/libpng/LICENSE ! src/java.desktop/share/native/libsplashscreen/libpng/README ! src/java.desktop/share/native/libsplashscreen/libpng/png.c ! src/java.desktop/share/native/libsplashscreen/libpng/png.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c Changeset: dcb2f3f5 Author: Martin Desruisseaux Committer: Phil Race Date: 2023-05-03 20:45:57 +0000 URL: https://git.openjdk.org/loom/commit/dcb2f3f5029ebdb2bb088ad10bed2134aa71cf1a 8306320: BufferedImage spec needs clarification w.r.t its implementation of the WritableRenderedImage interface Reviewed-by: prr ! src/java.desktop/share/classes/java/awt/image/BufferedImage.java Changeset: db8b3cd0 Author: Kevin Driver Committer: Bradford Wetmore Date: 2023-05-03 20:47:23 +0000 URL: https://git.openjdk.org/loom/commit/db8b3cd0842c05396d74abe950a2103654519b61 8305963: Typo in java.security.Security.getProperty Co-authored-by: Sean Coffey Reviewed-by: coffeys, wetmore ! src/java.base/share/classes/java/security/Security.java Changeset: 63cd0a36 Author: jeremy Committer: Phil Race Date: 2023-05-03 20:48:07 +0000 URL: https://git.openjdk.org/loom/commit/63cd0a36dabb3b3446996d0409803238f81fc197 4200096: OffScreenImageSource.removeConsumer NullPointerException Reviewed-by: prr, serb ! src/java.desktop/share/classes/sun/awt/image/OffScreenImageSource.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/AddNullConsumerTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/ImageSizeTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/LegitimateNullPointerTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/bug4200096.java Changeset: 03030d47 Author: Jiangli Zhou Date: 2023-05-03 21:09:22 +0000 URL: https://git.openjdk.org/loom/commit/03030d47ebee5c20919fe0162ec86d3d400cd955 8307134: Add GTS root CAs Co-authored-by: Andy Warner Co-authored-by: Rajan Halade Reviewed-by: mullan, rhalade + src/java.base/share/data/cacerts/gtsrootcar1 + src/java.base/share/data/cacerts/gtsrootcar2 + src/java.base/share/data/cacerts/gtsrootecccar3 + src/java.base/share/data/cacerts/gtsrootecccar4 + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/GoogleCA.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: 64ac9a05 Author: Leonid Mesnik Date: 2023-05-04 01:10:54 +0000 URL: https://git.openjdk.org/loom/commit/64ac9a05e85020d24e33ba55cffa1bd9b269218a 8306946: jdk/test/lib/process/ProcessToolsStartProcessTest.java fails with "wrong number of lines in OutputAnalyzer output" Reviewed-by: dholmes ! test/lib-test/jdk/test/lib/process/ProcessToolsStartProcessTest.java ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 3599448a Author: Kim Barrett Date: 2023-05-04 02:08:07 +0000 URL: https://git.openjdk.org/loom/commit/3599448ad833553dd502a4f941dad7295b557d55 8307147: [x86] Dangling pointer warning for Assembler::_attributes Reviewed-by: dholmes, aph ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/share/utilities/compilerWarnings.hpp ! src/hotspot/share/utilities/compilerWarnings_gcc.hpp Changeset: caee1bea Author: Leonid Mesnik Date: 2023-05-04 03:51:24 +0000 URL: https://git.openjdk.org/loom/commit/caee1beaaff7c11d5cc07fe31d04d8bf656b7a36 8307305: Update debugger tests to support JTREG_TEST_THREAD_FACTORY mode Reviewed-by: cjplummer = test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/share/MainWrapper.java = test/jdk/ProblemList-Virtual.txt ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: 465bdd9e Author: Tejesh R Date: 2023-05-04 04:52:00 +0000 URL: https://git.openjdk.org/loom/commit/465bdd9e416cacc6cc7dd91a29cc84adf2eaf1ed 8307091: A few client tests intermittently throw ConcurrentModificationException Reviewed-by: prr, dnguyen ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java Changeset: 82a8e91e Author: Abhishek Kumar Date: 2023-05-04 06:08:31 +0000 URL: https://git.openjdk.org/loom/commit/82a8e91ef7c3b397f9cce3854722cfe4bace6f2e 8306489: Open source AWT List related tests Reviewed-by: prr, serb + test/jdk/java/awt/List/ISCAfterRemoveAllTest.java + test/jdk/java/awt/List/InstanceOfSelectedArray.java + test/jdk/java/awt/List/ListEnterExitTest.java + test/jdk/java/awt/List/ListNullTest.java + test/jdk/java/awt/List/MaxWidthTest.java + test/jdk/java/awt/List/PageUPSelectsItemsTest.java + test/jdk/java/awt/List/TriggerActionEventTest.java Changeset: e206d57b Author: Kevin Walls Date: 2023-05-04 06:31:15 +0000 URL: https://git.openjdk.org/loom/commit/e206d57bfc09032e17d09714fc54ab2f5e961792 8307362: Remove test com/sun/jdi/JdbLastErrorTest.java Reviewed-by: dcubed ! test/jdk/ProblemList.txt - test/jdk/com/sun/jdi/JdbLastErrorTest.java Changeset: 3f1927a7 Author: Oli Gillespie Committer: Aleksey Shipilev Date: 2023-05-04 09:19:19 +0000 URL: https://git.openjdk.org/loom/commit/3f1927a7f3a2914402a25335c47a5a8bdd5511a6 8307346: Add missing gc+phases logging for ObjectCount(AfterGC) JFR event collection code Reviewed-by: tschatzl, shade, ayang ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp Changeset: cecf817f Author: Maurizio Cimadamore Date: 2023-05-04 09:44:31 +0000 URL: https://git.openjdk.org/loom/commit/cecf817f5ed8e6ca290f8da0f07f694f35ec4c7e 8307181: MemoryLayout.structLayout uses undocumented strict alignment constraints Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/MemoryLayout.java Changeset: 408cec51 Author: Stefan Johansson Date: 2023-05-04 11:00:44 +0000 URL: https://git.openjdk.org/loom/commit/408cec516bb5fd82fb6dcddeee934ac0c5ecffaf 8306929: Avoid CleanClassLoaderDataMetaspaces safepoints when previous versions are shared Reviewed-by: coleenp, sspitsyn ! src/hotspot/share/classfile/classLoaderDataGraph.cpp ! src/hotspot/share/classfile/classLoaderDataGraph.inline.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefinePreviousVersions.java + test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineSharedClassJFR.java Changeset: 29233e0a Author: Stefan Johansson Date: 2023-05-04 12:48:56 +0000 URL: https://git.openjdk.org/loom/commit/29233e0a001adde71a3fa5d56292ccfba8409ea5 8307448: Test RedefineSharedClassJFR fail due to wrong assumption Reviewed-by: eosterlund, coleenp ! test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineSharedClassJFR.java Changeset: dc4096ce Author: Chen Liang Committer: Adam Sotona Date: 2023-05-04 13:24:08 +0000 URL: https://git.openjdk.org/loom/commit/dc4096ce136c867e0806070a2d7c8b4efef5294c 8304937: BufferedFieldBuilder.Model missing writeTo(DirectClassBuilder) Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedFieldBuilder.java + test/jdk/jdk/classfile/ClassBuildingTest.java Changeset: 2adb3b40 Author: Alexander Zvegintsev Date: 2023-05-04 15:39:08 +0000 URL: https://git.openjdk.org/loom/commit/2adb3b409e8cc87685a4379be3f7beeb53706e2e 8306943: Open source several dnd AWT tests Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DnDAWTLockTest.java + test/jdk/java/awt/dnd/DragGestureInvokeLaterTest.java + test/jdk/java/awt/dnd/DragOverDropTargetPerformanceTest.java + test/jdk/java/awt/dnd/DragSourceDragEventModifiersTest.java + test/jdk/java/awt/dnd/DragSourceGCrashTest.java Changeset: 5ca0b08a Author: Phil Race Date: 2023-05-04 16:44:24 +0000 URL: https://git.openjdk.org/loom/commit/5ca0b08a7505d5c210d906e76c2a4cfc3eed64aa 8307133: Open source some JTable jtreg tests Reviewed-by: serb + test/jdk/javax/swing/JTable/4170447/bug4170447.java + test/jdk/javax/swing/JTable/4170447/swing.small.gif + test/jdk/javax/swing/JTable/bug4098201.java + test/jdk/javax/swing/JTable/bug4130356.java + test/jdk/javax/swing/JTable/bug4159300.java + test/jdk/javax/swing/JTable/bug4243159.java + test/jdk/javax/swing/JTable/bug4243313.java + test/jdk/javax/swing/JTable/bug4247487.java + test/jdk/javax/swing/JTable/bug4248070.java Changeset: 0c6529d2 Author: Markus Gr?nlund Date: 2023-05-04 17:26:31 +0000 URL: https://git.openjdk.org/loom/commit/0c6529d2d38a668f74936cca7803ca9de1a05d49 8307156: native_thread not protected by TLH Reviewed-by: coleenp, dcubed ! src/hotspot/share/jfr/jni/jfrJavaSupport.cpp Changeset: a87262ef Author: Coleen Phillimore Date: 2023-05-04 17:42:14 +0000 URL: https://git.openjdk.org/loom/commit/a87262efb2c0f5ed1773533d69d7d2091eba1462 8307295: Add warning to not create new ACC flags Reviewed-by: dholmes, fparain ! src/hotspot/share/utilities/accessFlags.hpp Changeset: 197d0cc6 Author: Kevin Driver Committer: Bradford Wetmore Date: 2023-05-04 19:25:01 +0000 URL: https://git.openjdk.org/loom/commit/197d0cc6031cb470f1bd7678796593ff1bf440ca 8294983: SSLEngine throws ClassCastException during handshake Co-authored-by: Daniel Jeli?ski Reviewed-by: wetmore, xuelei ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java Changeset: 111858f3 Author: Daniel D. Daugherty Date: 2023-05-04 21:32:35 +0000 URL: https://git.openjdk.org/loom/commit/111858f3ff86a15666537df515375fa04ffef048 8307489: ProblemList jdk/incubator/vector/LoadJsvmlTest.java on windows-x64 8307490: ProblemList sun/security/pkcs11/Cipher/TestKATForGCM.java on linux-x64 and macosx-x64 8307491: ProblemList sanity/client/SwingSet/src/EditorPaneDemoTest.java on linux-x64 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: 46df171d Author: Eric Liu Date: 2023-05-05 00:34:12 +0000 URL: https://git.openjdk.org/loom/commit/46df171d537c0d9cb1df2d7915cc745a7f524557 8304948: [vectorapi] C2 crashes when expanding VectorBox Reviewed-by: thartmann, qamai ! src/hotspot/share/opto/vector.cpp ! src/hotspot/share/opto/vector.hpp + test/hotspot/jtreg/compiler/vectorapi/VectorBoxExpandTest.java Changeset: a44e8908 Author: Leonid Mesnik Date: 2023-05-05 00:43:59 +0000 URL: https://git.openjdk.org/loom/commit/a44e8908a1007365f7c016df65ce7722556c180a 8307308: Add serviceability_ttf_virtual group to exclude jvmti tests developed for virtual threads Reviewed-by: sspitsyn ! test/hotspot/jtreg/TEST.groups Changeset: 1b143ba7 Author: William Kemper Committer: Stefan Karlsson Date: 2023-05-05 05:43:05 +0000 URL: https://git.openjdk.org/loom/commit/1b143ba78712e7ac98ca9873c50989b3fba07394 8307378: Allow collectors to provide specific values for GC notifications' actions Reviewed-by: kdnilsen, stefank ! src/hotspot/share/gc/epsilon/epsilonHeap.hpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.hpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psScavenge.cpp ! src/hotspot/share/gc/serial/serialHeap.cpp ! src/hotspot/share/gc/shared/genCollectedHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahUtils.cpp ! src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp ! src/hotspot/share/gc/shenandoah/shenandoahVMOperations.cpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zServiceability.hpp ! src/hotspot/share/services/memoryManager.cpp ! src/hotspot/share/services/memoryManager.hpp ! src/hotspot/share/services/memoryService.cpp ! src/hotspot/share/services/memoryService.hpp ! test/hotspot/jtreg/gc/shenandoah/mxbeans/TestPauseNotifications.java Changeset: e19cf26d Author: Kim Barrett Date: 2023-05-05 06:20:32 +0000 URL: https://git.openjdk.org/loom/commit/e19cf26d656bc2de947aa42c418bdbbf549f8865 8307196: Dangling pointer warning for MetadataAllocationRequest Reviewed-by: dholmes, eosterlund ! src/hotspot/share/memory/metaspaceCriticalAllocation.cpp Changeset: 302bc2fd Author: Thomas Schatzl Date: 2023-05-05 06:36:08 +0000 URL: https://git.openjdk.org/loom/commit/302bc2fd7fdfc02314e22ecc34ba2c78ef5ca9a1 8307421: Fix comment in g1CollectionSetChooser.hpp after JDK-8306836 Reviewed-by: shade ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp Changeset: f94f9577 Author: Andrew Dinn Date: 2023-05-05 07:50:21 +0000 URL: https://git.openjdk.org/loom/commit/f94f957734355fe112e861d1f2f0b49df20f6b66 8307331: Correctly update line maps when class redefine rewrites bytecodes Reviewed-by: sspitsyn ! src/hotspot/share/runtime/relocator.cpp Changeset: 948f3b3c Author: Johan Sj?len Date: 2023-05-05 08:54:05 +0000 URL: https://git.openjdk.org/loom/commit/948f3b3c24709eca3aa6c3f0db6adb9226d6f9ac 8301493: Replace NULL with nullptr in cpu/aarch64 Reviewed-by: tschatzl, gziemski, dholmes ! src/hotspot/cpu/aarch64/assembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/codeBuffer_aarch64.cpp ! src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp ! src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/disassembler_aarch64.hpp ! src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp ! src/hotspot/cpu/aarch64/frame_aarch64.cpp ! src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/gc/g1/g1BarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/aarch64/icBuffer_aarch64.cpp ! src/hotspot/cpu/aarch64/icache_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp ! src/hotspot/cpu/aarch64/javaFrameAnchor_aarch64.hpp ! src/hotspot/cpu/aarch64/jniFastGetField_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/matcher_aarch64.hpp ! src/hotspot/cpu/aarch64/methodHandles_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp ! src/hotspot/cpu/aarch64/registerMap_aarch64.cpp ! src/hotspot/cpu/aarch64/registerMap_aarch64.hpp ! src/hotspot/cpu/aarch64/relocInfo_aarch64.cpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/stubRoutines_aarch64.cpp ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/aarch64/vm_version_aarch64.cpp ! src/hotspot/cpu/aarch64/vtableStubs_aarch64.cpp Changeset: 3b430b9f Author: Adam Sotona Date: 2023-05-05 08:54:53 +0000 URL: https://git.openjdk.org/loom/commit/3b430b9f732bc94674bf598c28162e2f5e62bae6 8250596: Update remaining manpage references from "OS X" to "macOS" Reviewed-by: mullan, cjplummer, dholmes, sspitsyn ! src/java.base/share/man/keytool.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: 1a1ce66d Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-05 13:12:19 +0000 URL: https://git.openjdk.org/loom/commit/1a1ce66dc9976b8f44de613e81e557a8ae698135 8305080: Suppress the 'removal' warning for finalize() from test/hotspot/jtreg/compiler/jvmci/common/testcases that used in compiler/jvmci/compilerToVM/ tests Reviewed-by: dnsimon, coleenp ! test/hotspot/jtreg/compiler/jvmci/common/testcases/AbstractClassExtender.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/AnotherSingleImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleAbstractImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementer1.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementer2.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementersInterface.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleSuperImplementers.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/SingleImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/SingleImplementerInterface.java Changeset: 746f8d13 Author: Weibing Xiao Committer: Sean Coffey Date: 2023-05-05 13:19:20 +0000 URL: https://git.openjdk.org/loom/commit/746f8d133323c1caca019b507a6ccd9d5c98f2f9 8305714: Add an extra test for JDK-8292755 Reviewed-by: coffeys + test/langtools/jdk/jshell/UndefinedClassTest.java Changeset: f143bf7c Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-05 13:22:01 +0000 URL: https://git.openjdk.org/loom/commit/f143bf7c4554a689f17c373ea5d99b68dd518b2f 8305084: Remove the removal warnings for finalize() from test/hotspot/jtreg/serviceability/dcmd/gc/FinalizerInfoTest.java and RunFinalizationTest.java Reviewed-by: dholmes, cjplummer ! test/hotspot/jtreg/serviceability/dcmd/gc/FinalizationRunner.java ! test/hotspot/jtreg/serviceability/dcmd/gc/FinalizerInfoTest.java Changeset: 3f6a3545 Author: Matthew Donovan Committer: Jamil Nimeh Date: 2023-05-05 14:17:00 +0000 URL: https://git.openjdk.org/loom/commit/3f6a3545a255cbef3c3436ff26481f1cec4ccfc9 8305169: java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java -- test server didn't start in timely manner Reviewed-by: ssahoo, jnimeh ! test/jdk/java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java ! test/jdk/java/security/testlibrary/SimpleOCSPServer.java Changeset: 6fe959c6 Author: Matias Saavedra Silva Date: 2023-05-05 14:24:40 +0000 URL: https://git.openjdk.org/loom/commit/6fe959c62d6475b8f4c9ada2a8eb7b36d22d5e5e 8307306: Change some ConstantPool::name_ref_at calls to uncached_name_ref_at Co-authored-by: Ioi Lam Reviewed-by: coleenp, fparain ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/verifier.cpp ! src/hotspot/share/classfile/verifier.hpp ! src/hotspot/share/interpreter/rewriter.cpp ! src/hotspot/share/oops/constantPool.cpp Changeset: 12d6ec66 Author: Roman Kennke Date: 2023-05-05 14:35:33 +0000 URL: https://git.openjdk.org/loom/commit/12d6ec66a6cc668c929b3ebefd52a0dcac34771a 8307236: Rendezvous GC threads under STS for monitor deflation Reviewed-by: eosterlund, shade ! src/hotspot/share/runtime/monitorDeflationThread.hpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vmOperation.hpp Changeset: 3968ab5d Author: Roman Kennke Date: 2023-05-05 15:56:10 +0000 URL: https://git.openjdk.org/loom/commit/3968ab5db5443ce93c9a19ebbc5464f7d91782fc 8307395: Add missing STS to Shenandoah Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp Changeset: 47422be2 Author: Maurizio Cimadamore Date: 2023-05-05 15:59:13 +0000 URL: https://git.openjdk.org/loom/commit/47422be2d1d74e5e1b4b6c8e1a75e134e4f6aaf5 8307375: Alignment check on layouts used as sequence element is not correct Reviewed-by: jvernee ! 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/jdk/internal/foreign/AbstractMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/Utils.java ! src/java.base/share/classes/jdk/internal/foreign/layout/AbstractLayout.java ! test/jdk/java/foreign/TestLayouts.java Changeset: b5a48277 Author: Damon Nguyen Date: 2023-05-05 16:28:03 +0000 URL: https://git.openjdk.org/loom/commit/b5a48277ab5b42c4b13db7ddb5418a17ada512ec 8306871: Open source more AWT Drag & Drop tests Reviewed-by: prr + test/jdk/java/awt/event/HierarchyEvent/ObjectSourceTest.java + test/jdk/java/awt/event/HierarchyEvent/SpecTest.java + test/jdk/java/awt/event/InputEvent/MouseModsTest.java + test/jdk/java/awt/event/InvocationEvent/CatchingThrowableTest.java + test/jdk/java/awt/event/KeyEvent/AltGraphModifier.java + test/jdk/java/awt/event/KeyEvent/KeyTyped/CancelKeyTyped.java Changeset: d8b230c3 Author: Harshitha Onkar Date: 2023-05-05 17:33:25 +0000 URL: https://git.openjdk.org/loom/commit/d8b230c384c47cc2bdc28d0849859d58a6a52eae 8307301: Update HarfBuzz to 7.2.0 Reviewed-by: prr ! src/java.desktop/share/legal/harfbuzz.md ! src/java.desktop/share/native/libharfbuzz/OT/Color/COLR/COLR.hh ! src/java.desktop/share/native/libharfbuzz/OT/Color/CPAL/CPAL.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkLigPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/Ligature.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSet.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat2.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/SubsetGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/VarCompositeGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/path-builder.hh ! src/java.desktop/share/native/libharfbuzz/UPDATING.txt ! src/java.desktop/share/native/libharfbuzz/hb-aat-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-algs.hh ! src/java.desktop/share/native/libharfbuzz/hb-bimap.hh ! src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh ! src/java.desktop/share/native/libharfbuzz/hb-blob.h ! src/java.desktop/share/native/libharfbuzz/hb-buffer.cc ! src/java.desktop/share/native/libharfbuzz/hb-cache.hh ! src/java.desktop/share/native/libharfbuzz/hb-common.cc ! src/java.desktop/share/native/libharfbuzz/hb-config.hh ! src/java.desktop/share/native/libharfbuzz/hb-debug.hh ! src/java.desktop/share/native/libharfbuzz/hb-deprecated.h ! src/java.desktop/share/native/libharfbuzz/hb-face.cc ! src/java.desktop/share/native/libharfbuzz/hb-face.hh ! src/java.desktop/share/native/libharfbuzz/hb-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-font.h ! src/java.desktop/share/native/libharfbuzz/hb-ft.cc ! src/java.desktop/share/native/libharfbuzz/hb-map.cc ! src/java.desktop/share/native/libharfbuzz/hb-map.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-head-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-hmtx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-maxp-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-name.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-stat-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh + src/java.desktop/share/native/libharfbuzz/hb-ot-var-cvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-outline.cc ! src/java.desktop/share/native/libharfbuzz/hb-outline.hh ! src/java.desktop/share/native/libharfbuzz/hb-paint.h ! src/java.desktop/share/native/libharfbuzz/hb-paint.hh ! src/java.desktop/share/native/libharfbuzz/hb-pool.hh ! src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh ! src/java.desktop/share/native/libharfbuzz/hb-sanitize.hh ! src/java.desktop/share/native/libharfbuzz/hb-shape.cc ! src/java.desktop/share/native/libharfbuzz/hb-shape.h ! src/java.desktop/share/native/libharfbuzz/hb-shaper-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-static.cc ! src/java.desktop/share/native/libharfbuzz/hb-style.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-input.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset.h ! src/java.desktop/share/native/libharfbuzz/hb-unicode.h ! src/java.desktop/share/native/libharfbuzz/hb-version.h ! src/java.desktop/share/native/libharfbuzz/hb.hh Changeset: 65a54883 Author: Calvin Cheung Date: 2023-05-05 17:39:40 +0000 URL: https://git.openjdk.org/loom/commit/65a54883b36693ad5b963e0fad9387e6aba38369 8306712: CDS DeterministicDump.java test fails with -XX:+UseStringDeduplication Reviewed-by: iklam, matsaave ! src/hotspot/share/runtime/arguments.cpp ! test/hotspot/jtreg/runtime/cds/DeterministicDump.java Changeset: 6c71859a Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2023-05-05 18:03:58 +0000 URL: https://git.openjdk.org/loom/commit/6c71859ac240c788364169422e726f8f5443bf75 6176679: Application freezes when copying an animated gif image to the system clipboard Reviewed-by: aivanov, dmarkov ! src/java.desktop/share/classes/sun/awt/image/ImageRepresentation.java + test/jdk/java/awt/Clipboard/CopyAnimatedGIFTest.java Changeset: 27764e60 Author: Matias Saavedra Silva Date: 2023-05-05 18:06:19 +0000 URL: https://git.openjdk.org/loom/commit/27764e60357b018b4f403d63cb54f95604b0cb8c 8306583: Add JVM crash check in CDSTestUtils.executeAndLog Reviewed-by: iklam, ccheung + test/hotspot/jtreg/runtime/cds/TestCDSVMCrash.java ! test/lib/jdk/test/lib/cds/CDSTestUtils.java Changeset: 4386d42d Author: Harshitha Onkar Date: 2023-05-05 18:12:48 +0000 URL: https://git.openjdk.org/loom/commit/4386d42d31af9042121581cd3fd4d5a7cf8961e6 8307381: Open Source JFrame, JIF related Swing Tests Reviewed-by: dnguyen, kizune + test/jdk/javax/swing/JFrame/bug4101444.java + test/jdk/javax/swing/JFrame/bug4208018.java + test/jdk/javax/swing/JInternalFrame/bug4308938.java + test/jdk/javax/swing/JInternalFrame/bug4320889.java + test/jdk/javax/swing/JTextField/bug4300552.java + test/jdk/javax/swing/JToggleButton/bug4277049.java Changeset: e2b1013f Author: Leonid Mesnik Date: 2023-05-05 18:57:33 +0000 URL: https://git.openjdk.org/loom/commit/e2b1013f11fc605501c3bf77976facb9b870d28e 8306326: [BACKOUT] 8277573: VmObjectAlloc is not generated by intrinsics methods which allocate objects Reviewed-by: sspitsyn, thartmann, kvn ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/prims/jvmtiEventController.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiExport.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 73ac7105 Author: Oli Gillespie Committer: Alan Bateman Date: 2023-05-05 19:36:35 +0000 URL: https://git.openjdk.org/loom/commit/73ac710533a45bf5ba17f308aa49556b877b8bf9 8307425: Socket input stream read burns CPU cycles with back-to-back poll(0) calls Reviewed-by: alanb ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/NioSocketImpl.java ! src/java.base/share/classes/sun/nio/ch/SelChImpl.java Changeset: b5922c3b Author: Weijun Wang Date: 2023-05-05 20:03:11 +0000 URL: https://git.openjdk.org/loom/commit/b5922c3b869e7dab97ffca6d0bc7927369630f03 8305846: Support compilation in Proc test utility Reviewed-by: valeriep = test/lib-test/jdk/test/lib/process/proc/A.java + test/lib-test/jdk/test/lib/process/proc/B.java + test/lib-test/jdk/test/lib/process/proc/Launcher.java ! test/lib/jdk/test/lib/process/Proc.java Changeset: 7d58978f Author: Alexander Zvegintsev Date: 2023-05-05 20:16:26 +0000 URL: https://git.openjdk.org/loom/commit/7d58978f62bf333f256115d6592706d70144ad15 8280031: Deprecate GTK2 for removal Reviewed-by: prr ! src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java Changeset: 4e4828ea Author: Ioi Lam Date: 2023-05-06 01:20:03 +0000 URL: https://git.openjdk.org/loom/commit/4e4828eaffcd8b88741e1fc935b944c2e49fad64 8307553: Remove dead code MetaspaceClosure::push_method_entry Reviewed-by: coleenp, ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp Changeset: 1f57ce0a Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-06 01:23:40 +0000 URL: https://git.openjdk.org/loom/commit/1f57ce0a068a1346f3aa79f861981bd03c6f6d45 8307446: RISC-V: Improve performance of floating point to integer conversion Reviewed-by: fyang, vkempik, gli ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp Changeset: 3d3eaed9 Author: Alexander Zvegintsev Date: 2023-05-06 02:16:32 +0000 URL: https://git.openjdk.org/loom/commit/3d3eaed9133dbe728ca8e00a626d33f7e35ba9ff 8306941: Open source several datatransfer and dnd AWT tests Reviewed-by: prr + test/jdk/java/awt/datatransfer/MimeFormatsTest.java + test/jdk/java/awt/datatransfer/RemoveFlavorListenerTest.java + test/jdk/java/awt/dnd/AutoscrollStopTest.java + test/jdk/java/awt/dnd/ButtonReleaseTest.java Changeset: 0dca573c Author: changpeng1997 Committer: Xiaohong Gong Date: 2023-05-06 07:20:20 +0000 URL: https://git.openjdk.org/loom/commit/0dca573ca5d357157565072e22e24d6a9bee717a 8301739: AArch64: Add optimized rules for vector compare with immediate for SVE Reviewed-by: aph, eliu ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/aarch64_vector.ad ! src/hotspot/cpu/aarch64/aarch64_vector_ad.m4 ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/matcher.hpp ! test/hotspot/gtest/aarch64/aarch64-asmtest.py ! test/hotspot/gtest/aarch64/asmtest.out.h ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java + test/hotspot/jtreg/compiler/vectorapi/VectorCompareWithImmTest.java Changeset: 495f2688 Author: Gui Cao Committer: Fei Yang Date: 2023-05-08 01:15:12 +0000 URL: https://git.openjdk.org/loom/commit/495f2688d64ca0393906487a0b9ac6ed4c679ffa 8306966: RISC-V: Support vector cast node for Vector API Co-authored-by: Dingli Zhang Reviewed-by: fyang, fjiang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/riscv_v.ad Changeset: ad0e5a99 Author: Emanuel Peter Date: 2023-05-08 06:09:10 +0000 URL: https://git.openjdk.org/loom/commit/ad0e5a99ca1ad9dd04105f502985735a3536c3f4 8304720: SuperWord::schedule should rebuild C2-graph from SuperWord dependency-graph Reviewed-by: kvn, fgao ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java ! test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java + test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java Changeset: 959e62ca Author: Stefan Karlsson Date: 2023-05-08 07:48:45 +0000 URL: https://git.openjdk.org/loom/commit/959e62ca3ebce4025424a096dacfb3ca3b70d946 8307521: Introduce check_oop infrastructure to check oops in the oop class Reviewed-by: eosterlund, aboldtch, coleenp ! src/hotspot/share/oops/oopsHierarchy.cpp ! src/hotspot/share/oops/oopsHierarchy.hpp Changeset: 8bbd264c Author: Amit Kumar Committer: Lutz Schmidt Date: 2023-05-08 07:51:29 +0000 URL: https://git.openjdk.org/loom/commit/8bbd264c6e4b4045a218f11ae6b5b4f395bc2aa9 8307423: [s390x] Represent Registers as values Reviewed-by: mdoerr, lucy ! src/hotspot/cpu/s390/assembler_s390.hpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/interpreterRT_s390.cpp ! src/hotspot/cpu/s390/methodHandles_s390.cpp ! src/hotspot/cpu/s390/register_s390.cpp ! src/hotspot/cpu/s390/register_s390.hpp ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/vmreg_s390.inline.hpp Changeset: 68f385c1 Author: Stefan Karlsson Date: 2023-05-08 07:52:25 +0000 URL: https://git.openjdk.org/loom/commit/68f385c1ca5f5bef7edfb66d9ec8ebee44cf4860 8307428: jstat tests doesn't tolerate dash in the O column Reviewed-by: kevinw, cjplummer ! test/jdk/sun/tools/jstatd/JstatGCUtilParser.java Changeset: 7a1cb64b Author: Stefan Karlsson Date: 2023-05-08 07:54:08 +0000 URL: https://git.openjdk.org/loom/commit/7a1cb64bc1b85b3ef1b0ba2d84dbc5b8b05c60ff 8293547: Add relaxed add_and_fetch for macos aarch64 atomics Reviewed-by: dholmes, eosterlund ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp Changeset: 33245d6b Author: Stefan Karlsson Date: 2023-05-08 07:58:06 +0000 URL: https://git.openjdk.org/loom/commit/33245d6b38d7488c22619f93eff3bf0157f3d7a9 8307517: Add VMErrorCallback infrastructure to extend hs_err dumping Reviewed-by: eosterlund, aboldtch, dholmes, stuefe ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/utilities/vmError.cpp ! src/hotspot/share/utilities/vmError.hpp Changeset: f6ea8979 Author: Hannes Walln?fer Date: 2023-05-08 08:03:49 +0000 URL: https://git.openjdk.org/loom/commit/f6ea89795b1c5c5adffb1964154762830afaed42 8306285: Missing file in search test Reviewed-by: jjg + test/langtools/jdk/javadoc/doclet/testSearchScript/channels/FileChannel.java ! test/langtools/jdk/javadoc/doclet/testSearchScript/javadoc-search.js Changeset: 89b7d075 Author: Albert Mingkun Yang Date: 2023-05-08 08:31:04 +0000 URL: https://git.openjdk.org/loom/commit/89b7d075977f55ab47498535ef9385c7f9323237 8307100: Remove ReferentBasedDiscovery reference discovery policy Reviewed-by: kbarrett, dholmes, tschatzl ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/referenceProcessor.cpp ! src/hotspot/share/gc/shared/referenceProcessor.hpp ! src/hotspot/share/runtime/arguments.cpp ! test/hotspot/gtest/runtime/test_globals.cpp Changeset: 5c7ede94 Author: Arno Zeller Committer: Christoph Langer Date: 2023-05-08 08:36:52 +0000 URL: https://git.openjdk.org/loom/commit/5c7ede94ae59b46c12d40a38bf5b7e15319cc7e2 8307347: serviceability/sa/ClhsdbDumpclass.java could leave files owned by root on macOS Reviewed-by: stuefe, cjplummer ! test/hotspot/jtreg/serviceability/sa/ClhsdbDumpclass.java Changeset: bb3e44d8 Author: Matthias Baesken Date: 2023-05-08 12:24:41 +0000 URL: https://git.openjdk.org/loom/commit/bb3e44d8b604b4e3facc4f49f625cc0b7ff2abd7 8307603: [AIX] Broken build after JDK-8307301 Reviewed-by: mdoerr ! src/java.desktop/share/native/libharfbuzz/hb-subset.cc Changeset: 64c09628 Author: Jie Fu Date: 2023-05-08 13:56:45 +0000 URL: https://git.openjdk.org/loom/commit/64c09628664fd19c281723f15bf677c52e360acd 8307569: Build with gcc8 is broken after JDK-8307301 Reviewed-by: erikj ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 26755a96 Author: Dingli Zhang Committer: Erik Joelsson Date: 2023-05-08 14:00:05 +0000 URL: https://git.openjdk.org/loom/commit/26755a968665545a151adce79a5227c79724bb6b 8306408: Fix the format of several tables in building.md Reviewed-by: erikj ! doc/building.html ! doc/building.md Changeset: e91f0d3d Author: Zhengyu Gu Date: 2023-05-08 14:10:14 +0000 URL: https://git.openjdk.org/loom/commit/e91f0d3dba36f7c9456c8acc118836320c5494e1 8307571: Remove unused SomeConstants in WatcherThread class Reviewed-by: dholmes ! src/hotspot/share/runtime/nonJavaThread.hpp Changeset: d2e0e534 Author: Matthias Baesken Date: 2023-05-08 14:16:08 +0000 URL: https://git.openjdk.org/loom/commit/d2e0e534d7e391dd633fb9ff671900f8060b6d49 8307604: gcc12 based Alpine build broken build after JDK-8307301 Reviewed-by: lucy, mdoerr, erikj ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 9f34e4f8 Author: Tyler Steele Date: 2023-05-08 14:29:51 +0000 URL: https://git.openjdk.org/loom/commit/9f34e4f8d9144751b63243713e4d9247c21d64cd 8304434: [AIX] Update minimum xlclang version Reviewed-by: erikj, mbaesken ! make/autoconf/toolchain.m4 Changeset: 4b02956d Author: Darragh Clarke Committer: Daniel Jeli?ski Date: 2023-05-08 14:33:44 +0000 URL: https://git.openjdk.org/loom/commit/4b02956d42c29ce32894f15411d3abe12b07dccd 8054022: HttpURLConnection timeouts with Expect: 100-Continue and no chunking Reviewed-by: djelinski, dfuchs ! src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java + test/jdk/java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java Changeset: 5a259d87 Author: Fredrik Bredberg Committer: Coleen Phillimore Date: 2023-05-08 14:44:54 +0000 URL: https://git.openjdk.org/loom/commit/5a259d875ee6ebd93d3c0932d50784021bc97ea2 8303153: Native interpreter frame missing mirror Reviewed-by: coleenp, fyang ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp Changeset: ad90fb6d Author: Conor Cleary Date: 2023-05-08 14:49:43 +0000 URL: https://git.openjdk.org/loom/commit/ad90fb6da38da066dfc7a5439196887bbcda766f 8293786: HttpClient will not send more than 64 kb of data from the 2nd request in http2 Reviewed-by: dfuchs, djelinski ! src/java.net.http/share/classes/jdk/internal/net/http/Stream.java + test/jdk/java/net/httpclient/http2/PostPutTest.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/BodyInputStream.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/BodyOutputStream.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestExchangeImpl.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java Changeset: 93ee19f5 Author: Raffaello Giulietti Date: 2023-05-08 14:51:35 +0000 URL: https://git.openjdk.org/loom/commit/93ee19f58aa8c436c2960d171ba4646a374aa2e3 8305486: Add split() variants that keep the delimiters to String and j.u.r.Pattern Reviewed-by: jpai, rriggs ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/util/regex/Pattern.java + test/jdk/java/util/regex/SplitWithDelimitersTest.java Changeset: 4116b109 Author: Volker Simonis Date: 2023-05-08 14:56:05 +0000 URL: https://git.openjdk.org/loom/commit/4116b109f004c9552db7448f2942a11d5dfe3cdc 8306461: ObjectInputStream::readObject() should handle negative array sizes without throwing NegativeArraySizeExceptions Co-authored-by: Yakov Shafranovich Reviewed-by: shade, rriggs ! src/java.base/share/classes/java/io/ObjectInputStream.java ! src/java.base/share/classes/jdk/internal/access/JavaObjectInputStreamAccess.java + test/jdk/java/io/ObjectInputStream/NegativeArraySizeTest.java Changeset: 7f6358a8 Author: Roman Kennke Date: 2023-05-08 17:51:39 +0000 URL: https://git.openjdk.org/loom/commit/7f6358a8b53a35a87c9413c68f8fe6c5fdec0caf 8291555: Implement alternative fast-locking scheme Co-authored-by: Fei Yang Co-authored-by: Thomas Stuefe Reviewed-by: dcubed, stuefe, shade, dholmes, dlong ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/c2_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/macroAssembler_arm.cpp ! src/hotspot/cpu/arm/macroAssembler_arm.hpp ! src/hotspot/cpu/arm/sharedRuntime_arm.cpp ! src/hotspot/cpu/riscv/c1_LIRAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_CodeStubs_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/c2_CodeStubs_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/interp_masm_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/cpu/zero/vm_version_zero.cpp ! src/hotspot/cpu/zero/zeroInterpreter_zero.cpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/interpreter/interpreterRuntime.cpp ! src/hotspot/share/interpreter/interpreterRuntime.hpp ! src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/oops/markWord.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/opto/c2_CodeStubs.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp + src/hotspot/share/runtime/lockStack.cpp + src/hotspot/share/runtime/lockStack.hpp + src/hotspot/share/runtime/lockStack.inline.hpp ! src/hotspot/share/runtime/objectMonitor.cpp ! src/hotspot/share/runtime/objectMonitor.hpp ! src/hotspot/share/runtime/objectMonitor.inline.hpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/threads.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaThread.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/LockingMode.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ObjectMonitor.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/Threads.java Changeset: 14df5c13 Author: Damon Nguyen Date: 2023-05-08 17:56:27 +0000 URL: https://git.openjdk.org/loom/commit/14df5c130e5bf5139e3e2ef6d7b9d64883d94d18 8307165: java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java timed out Reviewed-by: prr ! test/jdk/java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java Changeset: 5e1fe430 Author: Tom Rodriguez Date: 2023-05-08 18:40:18 +0000 URL: https://git.openjdk.org/loom/commit/5e1fe43080173f8e877bf6d488b778de35d8c2ac 8299229: [JVMCI] add support for UseZGC Reviewed-by: eosterlund, kvn ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetNMethod_aarch64.cpp ! src/hotspot/cpu/aarch64/globalDefinitions_aarch64.hpp ! src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp ! src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp ! src/hotspot/cpu/riscv/gc/shared/barrierSetNMethod_riscv.cpp ! src/hotspot/cpu/riscv/globalDefinitions_riscv.hpp ! src/hotspot/cpu/s390/globalDefinitions_s390.hpp ! src/hotspot/cpu/x86/gc/shared/barrierSetNMethod_x86.cpp ! src/hotspot/cpu/x86/globalDefinitions_x86.hpp ! src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp ! src/hotspot/cpu/zero/globalDefinitions_zero.hpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/gc/shared/barrierSetNMethod.cpp ! src/hotspot/share/gc/shared/barrierSetNMethod.hpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/jvmci/vmSymbols_jvmci.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotMethodData.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotProfilingInfo.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java ! test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/TestAssembler.java + test/hotspot/jtreg/compiler/jvmci/meta/ProfilingInfoTest.java Changeset: d9052b94 Author: Damon Nguyen Date: 2023-05-08 22:29:48 +0000 URL: https://git.openjdk.org/loom/commit/d9052b946682d1c0f2629455d73fe4e6b95b29db 8307130: Open source few Swing JMenu tests Reviewed-by: prr + test/jdk/javax/swing/JMenu/bug4173633.java + test/jdk/javax/swing/JMenu/bug4186641.java + test/jdk/javax/swing/JMenu/bug4219523.java + test/jdk/javax/swing/JMenu/bug5013739.java Changeset: 07f55c5e Author: Sean Coffey Date: 2023-05-09 06:05:58 +0000 URL: https://git.openjdk.org/loom/commit/07f55c5ea280032b72247049223f676424aa44c0 8305950: Have -XshowSettings option display tzdata version Reviewed-by: rriggs ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! test/jdk/tools/launcher/Settings.java Changeset: cd5d0ff5 Author: Chen Liang Committer: Adam Sotona Date: 2023-05-09 09:14:18 +0000 URL: https://git.openjdk.org/loom/commit/cd5d0ff5b29065222ffafbc4fb04b90f6f8909e2 8304031: Classfile API cannot encode Primitive Class as Condy Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BytecodeHelpers.java + test/jdk/jdk/classfile/PrimitiveClassConstantTest.java Changeset: d2b3eef0 Author: Roland Westrelin Date: 2023-05-09 09:54:22 +0000 URL: https://git.openjdk.org/loom/commit/d2b3eef0f2d48446613955cabe69cb4236042878 8307131: C2: assert(false) failed: malformed control flow Reviewed-by: kvn, chagedorn, thartmann ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopstripmining/TestNondeleteableSafePoint.java Changeset: 7a3bea1f Author: Maurizio Cimadamore Date: 2023-05-09 11:09:39 +0000 URL: https://git.openjdk.org/loom/commit/7a3bea1f6a7eaaf4c1e701f7a06226812aaa6ead 8307629: FunctionDescriptor::toMethodType should allow sequence layouts (mainline) Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/FunctionDescriptor.java ! src/java.base/share/classes/jdk/internal/foreign/FunctionDescriptorImpl.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestIllegalLink.java Changeset: f92d095e Author: Maurizio Cimadamore Date: 2023-05-09 11:11:15 +0000 URL: https://git.openjdk.org/loom/commit/f92d095e164bd79b452586e49e166d1ba392632f 8307411: Test java/foreign/channels/TestAsyncSocketChannels.java failed: IllegalStateException: Already closed Reviewed-by: jvernee ! test/jdk/java/foreign/channels/TestAsyncSocketChannels.java Changeset: 040cb7b5 Author: Josef Eisl Committer: Doug Simon Date: 2023-05-09 12:29:27 +0000 URL: https://git.openjdk.org/loom/commit/040cb7b5a9d0d11c601749951df8ff3089250049 8307588: [JVMCI] HotSpotConstantPool#lookupBootstrapMethodInvocation broken by JDK-8301995 Reviewed-by: dnsimon, never, kvn ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestDynamicConstant.java Changeset: a05560d9 Author: Adam Sotona Date: 2023-05-09 13:13:17 +0000 URL: https://git.openjdk.org/loom/commit/a05560d99352bd5952f3feef37b56dceb74ede3b 8305990: Stripping debug info of ASM 9.5 fails Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/classfile/Instruction.java ! src/java.base/share/classes/jdk/internal/classfile/Opcode.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufWriterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ClassPrinterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/CodeImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectClassBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/SplitConstantPool.java + src/java.base/share/classes/jdk/internal/classfile/impl/StackCounter.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java + src/java.base/share/classes/jdk/internal/classfile/instruction/DiscontinuedInstruction.java ! test/jdk/jdk/classfile/CorpusTest.java + test/jdk/jdk/classfile/DiscontinuedInstructionsTest.java ! test/jdk/jdk/classfile/StackMapsTest.java ! test/jdk/jdk/classfile/helpers/RebuildingTransformation.java Changeset: 672bade5 Author: Axel Boldt-Christmas Date: 2023-05-09 14:04:26 +0000 URL: https://git.openjdk.org/loom/commit/672bade522b4641ffc30b0ac09791e8dcf21e003 8306738: Select num workers for safepoint ParallelCleanupTask Reviewed-by: shade, coleenp, tschatzl ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! src/hotspot/share/classfile/symbolTable.cpp ! src/hotspot/share/classfile/symbolTable.hpp ! src/hotspot/share/code/icBuffer.cpp ! src/hotspot/share/code/icBuffer.hpp ! src/hotspot/share/runtime/safepoint.cpp Changeset: 5842fd5b Author: Matthew Donovan Date: 2023-05-09 14:25:40 +0000 URL: https://git.openjdk.org/loom/commit/5842fd5beb13f3458f61df7e7480a54bd2157253 8306015: Update sun.security.ssl TLS tests to use SSLContextTemplate or SSLEngineTemplate Reviewed-by: xuelei ! test/jdk/javax/net/ssl/templates/SSLContextTemplate.java ! test/jdk/javax/net/ssl/templates/SSLEngineTemplate.java ! test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java ! test/jdk/sun/security/ssl/DHKeyExchange/DHEKeySizing.java ! test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java ! test/jdk/sun/security/ssl/HandshakeOutStream/NullCerts.java ! test/jdk/sun/security/ssl/SSLEngineImpl/CloseEngineException.java ! test/jdk/sun/security/ssl/SSLEngineImpl/CloseStart.java ! test/jdk/sun/security/ssl/SSLEngineImpl/DelegatedTaskWrongException.java ! test/jdk/sun/security/ssl/SSLEngineImpl/EmptyExtensionData.java ! test/jdk/sun/security/ssl/SSLEngineImpl/EngineEnforceUseClientMode.java ! test/jdk/sun/security/ssl/SSLEngineImpl/RehandshakeFinished.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineDeadlock.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineFailedALPN.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineKeyLimit.java ! test/jdk/sun/security/ssl/SSLEngineImpl/TLS13BeginHandshake.java ! test/jdk/sun/security/ssl/SSLSessionImpl/HashCodeMissing.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClient.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClientStateless.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServer.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServerStateless.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumptionUpdateBoundValues.java Changeset: fdbfc8a7 Author: Viktor Klang Committer: Roger Riggs Date: 2023-05-09 15:37:23 +0000 URL: https://git.openjdk.org/loom/commit/fdbfc8a73b4507d31ec4f9252298ad708a0b6bf9 8133773: clarify specification of Spliterator.tryAdvance Reviewed-by: psandoz, tvaleev, rriggs ! src/java.base/share/classes/java/util/Spliterator.java Changeset: 44fa12e7 Author: Xue-Lei Andrew Fan Date: 2023-05-09 15:49:28 +0000 URL: https://git.openjdk.org/loom/commit/44fa12e7511a0b08999c1f1fb7da33bc6578b183 8303830: update for deprecated sprintf for jdk.accessibility Reviewed-by: kizune ! src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp ! src/jdk.accessibility/windows/native/jaccessinspector/jaccessinspector.cpp ! src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeEventHandler.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeJavaVMInstance.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/WinAccessBridge.cpp ! src/jdk.accessibility/windows/native/toolscommon/AccessInfo.cpp Changeset: 3aff5eac Author: Leonid Mesnik Date: 2023-05-09 16:36:21 +0000 URL: https://git.openjdk.org/loom/commit/3aff5eacbd90cc5fc791c9c96b8d114caee9ddb5 8307486: ProcessTools.java should wait until vthread is completed before checking exceptions Reviewed-by: dholmes, alanb ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 82bcee76 Author: Justin Lu Date: 2023-05-09 17:15:06 +0000 URL: https://git.openjdk.org/loom/commit/82bcee76ea6f5a0624c3ed1d7e4a262d59bfbe37 8159337: Introduce a method in Locale class to return the language tags as per RFC 5646 convention Reviewed-by: naoto, rriggs ! src/java.base/share/classes/java/util/Locale.java ! src/java.base/share/classes/sun/util/locale/LanguageTag.java + test/jdk/java/util/Locale/CaseFoldLanguageTagTest.java Changeset: dde557e3 Author: Thiago Henrique H?pner Committer: Adam Sotona Date: 2023-05-09 17:33:27 +0000 URL: https://git.openjdk.org/loom/commit/dde557e312d4b8eaa9e01166329daa0fac488691 8304148: Remapping a class with Invokedynamic constant loses static bootstrap arguments Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/components/ClassRemapper.java ! test/jdk/jdk/classfile/AdvancedTransformationsTest.java Changeset: 7f05f6f7 Author: Leonid Mesnik Date: 2023-05-09 18:06:40 +0000 URL: https://git.openjdk.org/loom/commit/7f05f6f7c77c10dd2aed291af20664c9130e35f9 8307307: Improve ProcessTools.java to don't try to run Virtual wrapper for incompatible processes Reviewed-by: alanb ! test/jdk/ProblemList-Virtual.txt ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 98294242 Author: Alisen Chung Date: 2023-05-09 19:14:12 +0000 URL: https://git.openjdk.org/loom/commit/98294242a94c611e2a713c2d520e59dd873ae4a0 8307128: Open source some drag and drop tests 4 Reviewed-by: prr + test/jdk/java/awt/dnd/MouseExitGestureTriggerTest.java + test/jdk/java/awt/dnd/MozillaDnDTest.java + test/jdk/java/awt/dnd/MultiDataFlavorDropTest.java + test/jdk/java/awt/dnd/NativeDragJavaDropTest.java + test/jdk/java/awt/dnd/NestedHeavyweightDropTargetTest.java Changeset: 723582c5 Author: Alisen Chung Date: 2023-05-09 19:30:50 +0000 URL: https://git.openjdk.org/loom/commit/723582c524c62ee73f7984a53b046f8832b23a7f 8306881: Update FreeType to 2.13.0 Reviewed-by: prr, dnguyen ! src/java.desktop/share/legal/freetype.md ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/integer-types.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/mac-support.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/public-macros.h ! src/java.desktop/share/native/libfreetype/include/freetype/freetype.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftadvanc.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbitmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftcid.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h ! src/java.desktop/share/native/libfreetype/include/freetype/fterrdef.h ! src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftfntfmt.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftgasp.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftincrem.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlcdfil.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlist.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlogging.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmac.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmoderr.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsizes.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsnames.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftstroke.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsynth.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsystem.h ! src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h ! src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/cffotypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/cfftypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/compiler-macros.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdebug.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h + src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmmtypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftrfork.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/pshints.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svbdf.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcid.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svfntfmt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgxval.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svkern.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmetric.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svotval.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpfr.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpostnm.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpscmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpsinfo.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svsfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttcmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svtteng.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttglyf.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svwinfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/svginterface.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/wofftypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/otsvg.h ! src/java.desktop/share/native/libfreetype/include/freetype/t1tables.h ! src/java.desktop/share/native/libfreetype/include/freetype/ttnameid.h ! src/java.desktop/share/native/libfreetype/include/freetype/tttables.h ! src/java.desktop/share/native/libfreetype/include/freetype/tttags.h ! src/java.desktop/share/native/libfreetype/include/ft2build.h ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.c ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.h ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin ! src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c ! src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h ! src/java.desktop/share/native/libfreetype/src/autofit/afcover.h ! src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c ! src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h ! src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h ! src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c ! src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h ! src/java.desktop/share/native/libfreetype/src/autofit/afhints.c ! src/java.desktop/share/native/libfreetype/src/autofit/afhints.h ! src/java.desktop/share/native/libfreetype/src/autofit/afindic.c ! src/java.desktop/share/native/libfreetype/src/autofit/afindic.h ! src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c ! src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h ! src/java.desktop/share/native/libfreetype/src/autofit/afloader.c ! src/java.desktop/share/native/libfreetype/src/autofit/afloader.h ! src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c ! src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h ! src/java.desktop/share/native/libfreetype/src/autofit/afranges.c ! src/java.desktop/share/native/libfreetype/src/autofit/afranges.h ! src/java.desktop/share/native/libfreetype/src/autofit/afscript.h ! src/java.desktop/share/native/libfreetype/src/autofit/afshaper.c ! src/java.desktop/share/native/libfreetype/src/autofit/afshaper.h ! src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h ! src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h ! src/java.desktop/share/native/libfreetype/src/autofit/afws-decl.h ! src/java.desktop/share/native/libfreetype/src/autofit/afws-iter.h ! src/java.desktop/share/native/libfreetype/src/base/ftadvanc.c ! src/java.desktop/share/native/libfreetype/src/base/ftbase.h ! src/java.desktop/share/native/libfreetype/src/base/ftbbox.c ! src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c ! src/java.desktop/share/native/libfreetype/src/base/ftcalc.c ! src/java.desktop/share/native/libfreetype/src/base/ftcid.c ! src/java.desktop/share/native/libfreetype/src/base/ftcolor.c ! src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c ! src/java.desktop/share/native/libfreetype/src/base/ftdebug.c ! src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c ! src/java.desktop/share/native/libfreetype/src/base/ftfstype.c ! src/java.desktop/share/native/libfreetype/src/base/ftgasp.c ! src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c ! src/java.desktop/share/native/libfreetype/src/base/ftglyph.c ! src/java.desktop/share/native/libfreetype/src/base/ftinit.c ! src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c ! src/java.desktop/share/native/libfreetype/src/base/ftmac.c ! src/java.desktop/share/native/libfreetype/src/base/ftmm.c ! src/java.desktop/share/native/libfreetype/src/base/ftobjs.c ! src/java.desktop/share/native/libfreetype/src/base/ftoutln.c ! src/java.desktop/share/native/libfreetype/src/base/ftpatent.c ! src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c ! src/java.desktop/share/native/libfreetype/src/base/ftrfork.c ! src/java.desktop/share/native/libfreetype/src/base/ftsnames.c ! src/java.desktop/share/native/libfreetype/src/base/ftstream.c ! src/java.desktop/share/native/libfreetype/src/base/ftstroke.c ! src/java.desktop/share/native/libfreetype/src/base/ftsynth.c ! src/java.desktop/share/native/libfreetype/src/base/ftsystem.c ! src/java.desktop/share/native/libfreetype/src/base/fttrigon.c ! src/java.desktop/share/native/libfreetype/src/base/fttype1.c ! src/java.desktop/share/native/libfreetype/src/base/ftutil.c ! src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c ! src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h ! src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c ! src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h ! src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h ! src/java.desktop/share/native/libfreetype/src/cff/cffgload.c ! src/java.desktop/share/native/libfreetype/src/cff/cffgload.h ! src/java.desktop/share/native/libfreetype/src/cff/cffload.c ! src/java.desktop/share/native/libfreetype/src/cff/cffload.h ! src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c ! src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.c ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.h ! src/java.desktop/share/native/libfreetype/src/cff/cfftoken.h ! src/java.desktop/share/native/libfreetype/src/cid/ciderrs.h ! src/java.desktop/share/native/libfreetype/src/cid/cidgload.c ! src/java.desktop/share/native/libfreetype/src/cid/cidgload.h ! src/java.desktop/share/native/libfreetype/src/cid/cidload.c ! src/java.desktop/share/native/libfreetype/src/cid/cidload.h ! src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c ! src/java.desktop/share/native/libfreetype/src/cid/cidobjs.h ! src/java.desktop/share/native/libfreetype/src/cid/cidparse.c ! src/java.desktop/share/native/libfreetype/src/cid/cidparse.h ! src/java.desktop/share/native/libfreetype/src/cid/cidriver.c ! src/java.desktop/share/native/libfreetype/src/cid/cidriver.h ! src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h ! src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c ! src/java.desktop/share/native/libfreetype/src/psaux/afmparse.h ! src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.c ! src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h ! src/java.desktop/share/native/libfreetype/src/psaux/psauxerr.h ! src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.c ! src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h ! src/java.desktop/share/native/libfreetype/src/psaux/psconv.c ! src/java.desktop/share/native/libfreetype/src/psaux/psconv.h ! src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h ! src/java.desktop/share/native/libfreetype/src/psaux/psft.c ! src/java.desktop/share/native/libfreetype/src/psaux/psglue.h ! src/java.desktop/share/native/libfreetype/src/psaux/pshints.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h ! src/java.desktop/share/native/libfreetype/src/psaux/psstack.h ! src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.c ! src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.h ! src/java.desktop/share/native/libfreetype/src/psaux/t1decode.c ! src/java.desktop/share/native/libfreetype/src/psaux/t1decode.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h ! src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c ! src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h ! src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h ! src/java.desktop/share/native/libfreetype/src/psnames/pstables.h ! src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h ! src/java.desktop/share/native/libfreetype/src/raster/ftraster.c ! src/java.desktop/share/native/libfreetype/src/raster/ftraster.h ! src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c ! src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h ! src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h ! src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c ! src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff2.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff2.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h ! src/java.desktop/share/native/libfreetype/src/sfnt/woff2tags.c ! src/java.desktop/share/native/libfreetype/src/sfnt/woff2tags.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h ! src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h ! src/java.desktop/share/native/libfreetype/src/type1/t1afm.c ! src/java.desktop/share/native/libfreetype/src/type1/t1afm.h ! src/java.desktop/share/native/libfreetype/src/type1/t1driver.c ! src/java.desktop/share/native/libfreetype/src/type1/t1driver.h ! src/java.desktop/share/native/libfreetype/src/type1/t1errors.h ! src/java.desktop/share/native/libfreetype/src/type1/t1gload.c ! src/java.desktop/share/native/libfreetype/src/type1/t1gload.h ! src/java.desktop/share/native/libfreetype/src/type1/t1load.c ! src/java.desktop/share/native/libfreetype/src/type1/t1load.h ! src/java.desktop/share/native/libfreetype/src/type1/t1objs.c ! src/java.desktop/share/native/libfreetype/src/type1/t1objs.h ! src/java.desktop/share/native/libfreetype/src/type1/t1parse.c ! src/java.desktop/share/native/libfreetype/src/type1/t1parse.h ! src/java.desktop/share/native/libfreetype/src/type1/t1tokens.h Changeset: 356667f1 Author: Roger Riggs Date: 2023-05-09 20:51:33 +0000 URL: https://git.openjdk.org/loom/commit/356667f1559396b09e0b830d92978f2ea7a9300b 8307466: java.time.Instant calculation bug in until and between methods Co-authored-by: Raffaello Giulietti Reviewed-by: scolebourne, naoto ! src/java.base/share/classes/java/time/Instant.java ! test/jdk/java/time/tck/java/time/TCKInstant.java Changeset: a1c3adb8 Author: Leonid Mesnik Date: 2023-05-09 21:03:25 +0000 URL: https://git.openjdk.org/loom/commit/a1c3adb88dee8179c41ac9b41f768ff3db6d2ca8 8307370: Add tier1 testing with thread factory in CI Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt Changeset: f5a6b7f7 Author: Alex Menkov Date: 2023-05-09 21:14:17 +0000 URL: https://git.openjdk.org/loom/commit/f5a6b7f7c03c00c96d0055f9be31057675205e13 8306027: Clarify JVMTI heap functions spec about virtual thread stack. Reviewed-by: alanb, sspitsyn ! src/hotspot/share/prims/jvmti.xml Changeset: 2be1f10f Author: Serguei Spitsyn Date: 2023-05-10 01:48:03 +0000 URL: https://git.openjdk.org/loom/commit/2be1f10fec37057a4532fbbc3467b41240c4dba9 8307399: get rid of compatibility ThreadStart/ThreadEnd events for virtual threads Reviewed-by: alanb, pchilanomate, cjplummer ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/runtime/globals.hpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VirtualThreadStartTest/VirtualThreadStartTest.java ! test/hotspot/jtreg/serviceability/jvmti/vthread/VirtualThreadStartTest/libVirtualThreadStartTest.cpp Changeset: d3e6d04e Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-10 03:10:31 +0000 URL: https://git.openjdk.org/loom/commit/d3e6d04e3eddfd26433f9cb95cfa9bff05b14bd6 8307651: RISC-V: stringL_indexof_char instruction has wrong format string Reviewed-by: fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 4b4c80bb Author: Tobias Hotz Committer: Tobias Hartmann Date: 2023-05-10 05:48:02 +0000 URL: https://git.openjdk.org/loom/commit/4b4c80bb3171c0ab3377f1cbf62a62289ef55817 8307351: (CmpI/L(AndI/L reg1 reg2)) on x86 can be optimized Reviewed-by: sviswanathan, qamai, thartmann ! src/hotspot/cpu/x86/x86_64.ad + test/micro/org/openjdk/bench/vm/compiler/x86/AndCmpTestInstruction.java Changeset: d993432d Author: Fredrik Bredberg Committer: Stefan Karlsson Date: 2023-05-10 07:55:11 +0000 URL: https://git.openjdk.org/loom/commit/d993432d448d5f25c49640a8c22a6a95b5055fe4 8306930: Incorrect assert in BitMap::count_one_bits Reviewed-by: stefank, tschatzl, kbarrett ! src/hotspot/share/utilities/bitMap.cpp Changeset: 540c706b Author: Oli Gillespie Committer: Aleksey Shipilev Date: 2023-05-10 08:54:18 +0000 URL: https://git.openjdk.org/loom/commit/540c706bbcbb809ae1304aac4f2a16a5e83cb458 8307348: Parallelize heap walk for ObjectCount(AfterGC) JFR event collection Reviewed-by: shade, ayang, tschatzl ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/shared/gcTrace.cpp ! src/hotspot/share/gc/shared/gcTrace.hpp ! src/hotspot/share/gc/shared/gcVMOperations.cpp ! src/hotspot/share/memory/heapInspection.cpp ! src/hotspot/share/memory/heapInspection.hpp Changeset: da2c9302 Author: Aleksei Efimov Date: 2023-05-10 09:39:00 +0000 URL: https://git.openjdk.org/loom/commit/da2c9302628886bbdb4cf588f8275c4a44ff5ac9 8302845: Replace finalizer usage in JNDI DNS provider with Cleaner Reviewed-by: alanb, dfuchs, djelinski ! src/java.base/share/classes/module-info.java ! src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsClient.java ! src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsContext.java Changeset: 4aa65cbe Author: Jim Laskey Date: 2023-05-10 11:34:01 +0000 URL: https://git.openjdk.org/loom/commit/4aa65cbeefe44f29fbe6ea013809dcee579df9ff 8285932: Implementation of JEP 430 String Templates (Preview) Reviewed-by: mcimadamore, rriggs, darcy ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/StringConcatHelper.java + src/java.base/share/classes/java/lang/StringTemplate.java ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java + src/java.base/share/classes/java/lang/runtime/Carriers.java + src/java.base/share/classes/java/lang/runtime/ReferenceKey.java + src/java.base/share/classes/java/lang/runtime/ReferencedKeyMap.java + src/java.base/share/classes/java/lang/runtime/StringTemplateImpl.java + src/java.base/share/classes/java/lang/runtime/StringTemplateImplFactory.java + src/java.base/share/classes/java/lang/runtime/TemplateRuntime.java + src/java.base/share/classes/java/lang/runtime/TemplateSupport.java + src/java.base/share/classes/java/util/Digits.java + src/java.base/share/classes/java/util/FormatItem.java + src/java.base/share/classes/java/util/FormatProcessor.java ! src/java.base/share/classes/java/util/Formatter.java + src/java.base/share/classes/java/util/FormatterBuilder.java ! src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java + src/java.base/share/classes/jdk/internal/access/JavaTemplateAccess.java ! src/java.base/share/classes/jdk/internal/access/SharedSecrets.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java + src/java.base/share/classes/jdk/internal/util/FormatConcatItem.java ! src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java + src/jdk.compiler/share/classes/com/sun/source/tree/StringTemplateTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/CompileStates.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java + src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransLiterals.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Lexer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Tokens.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java + test/jdk/java/lang/String/concat/MakeConcatWithTemplate.java + test/jdk/java/lang/runtime/CarriersTest.java + test/jdk/java/lang/runtime/ReferencedKeyTest.java + test/jdk/java/lang/template/Basic.java + test/jdk/java/lang/template/FormatterBuilder.java + test/jdk/java/lang/template/StringTemplateTest.java ! test/langtools/jdk/jshell/CompletenessTest.java ! test/langtools/tools/javac/api/TestJavacTaskScanner.java + test/langtools/tools/javac/diags/examples/StringTemplate.java + test/langtools/tools/javac/diags/examples/StringTemplateNoProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateNotProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateRawProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateUnclosedString.java + test/langtools/tools/javac/diags/examples/StringTemplateUnclosedTextBlock.java ! test/langtools/tools/javac/parser/JavacParserTest.java + test/langtools/tools/javac/template/Basic.java + test/langtools/tools/javac/template/TreeScannerTest.java ! test/langtools/tools/javac/tree/TreeKindTest.java + test/micro/org/openjdk/bench/java/lang/StringTemplateFMT.java Changeset: 0da48f19 Author: Johannes Bechberger Committer: Daniel Jeli?ski Date: 2023-05-10 12:13:22 +0000 URL: https://git.openjdk.org/loom/commit/0da48f19cbebe0730d689cb966b886f6f73fb3f1 8307732: build-test-lib is broken Reviewed-by: erikj, djelinski ! make/test/BuildTestLib.gmk ! test/lib/jdk/test/lib/net/HttpHeaderParser.java Changeset: 47b8d920 Author: Alan Bateman Date: 2023-05-10 16:06:39 +0000 URL: https://git.openjdk.org/loom/commit/47b8d920593dabec7a52cb7aadb99c652bcc11a7 Merge ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList.txt ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList.txt Changeset: d8f4050a Author: Alan Bateman Date: 2023-05-10 16:33:54 +0000 URL: https://git.openjdk.org/loom/commit/d8f4050ac11c90abbb30a2d08f363ce2d1d54989 Cleanup ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! src/java.base/share/classes/jdk/internal/misc/ThreadFlock.java ! src/java.base/share/classes/jdk/internal/vm/SharedThreadContainer.java ! src/java.base/share/classes/jdk/internal/vm/ThreadContainer.java ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java ! test/jdk/jdk/internal/misc/ThreadFlock/ThreadFlockTest.java Changeset: b54682be Author: Alan Bateman Date: 2023-05-10 16:34:09 +0000 URL: https://git.openjdk.org/loom/commit/b54682beaaff02ab5d1d83bfdbb415b726e23f7f Merge Changeset: ab34cb98 Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-10 12:20:00 +0000 URL: https://git.openjdk.org/loom/commit/ab34cb98c8410dee9900f75fe487a094c51821a2 8305082: Remove finalize() from test/hotspot/jtreg/runtime/linkResolver/InterfaceObjectTest.java Reviewed-by: coleenp, dholmes ! test/hotspot/jtreg/runtime/linkResolver/InterfaceObj.jasm ! test/hotspot/jtreg/runtime/linkResolver/InterfaceObjectTest.java Changeset: 4251b562 Author: Coleen Phillimore Date: 2023-05-10 12:32:06 +0000 URL: https://git.openjdk.org/loom/commit/4251b56214a6af6c307a473c7ba13482ad3109e2 8306843: JVMTI tag map extremely slow after JDK-8292741 Reviewed-by: sspitsyn, iklam ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp ! src/hotspot/share/prims/jvmtiTagMapTable.cpp ! src/hotspot/share/prims/jvmtiTagMapTable.hpp ! src/hotspot/share/utilities/resizeableResourceHash.hpp ! src/hotspot/share/utilities/resourceHash.hpp + test/hotspot/jtreg/serviceability/jvmti/SetTag/TagMapTest.java + test/hotspot/jtreg/serviceability/jvmti/SetTag/libTagMapTest.cpp Changeset: cc396895 Author: Johan Sj?len Date: 2023-05-10 12:35:21 +0000 URL: https://git.openjdk.org/loom/commit/cc396895e5a1dac49f4e341ce91c04b8c092d0af 8300245: Replace NULL with nullptr in share/jfr/ Reviewed-by: mgronlun, coleenp ! src/hotspot/share/jfr/dcmd/jfrDcmds.cpp ! src/hotspot/share/jfr/dcmd/jfrDcmds.hpp ! src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp ! src/hotspot/share/jfr/instrumentation/jfrJvmtiAgent.cpp ! src/hotspot/share/jfr/jni/jfrJavaCall.cpp ! src/hotspot/share/jfr/jni/jfrJavaSupport.cpp ! src/hotspot/share/jfr/jni/jfrJniMethod.cpp ! src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp ! src/hotspot/share/jfr/jni/jfrUpcalls.cpp ! src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeQueue.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp ! src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp ! src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleDescription.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleWriter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp ! src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSample.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/sampleList.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/samplePriorityQueue.cpp ! src/hotspot/share/jfr/leakprofiler/utilities/rootType.cpp ! src/hotspot/share/jfr/leakprofiler/utilities/unifiedOopRef.inline.hpp ! src/hotspot/share/jfr/periodic/jfrFinalizerStatisticsEvent.cpp ! src/hotspot/share/jfr/periodic/jfrModuleEvent.cpp ! src/hotspot/share/jfr/periodic/jfrNetworkUtilization.cpp ! src/hotspot/share/jfr/periodic/jfrOSInterface.cpp ! src/hotspot/share/jfr/periodic/jfrPeriodic.cpp ! src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.cpp ! src/hotspot/share/jfr/periodic/sampling/jfrCallTrace.cpp ! src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadState.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadState.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSetUtils.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSetUtils.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdBits.inline.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdKlassQueue.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdLoadBarrier.inline.hpp ! src/hotspot/share/jfr/recorder/jfrRecorder.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunkRotation.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp ! src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp ! src/hotspot/share/jfr/recorder/repository/jfrRepository.cpp ! src/hotspot/share/jfr/recorder/service/jfrEventThrottler.cpp ! src/hotspot/share/jfr/recorder/service/jfrMemorySizer.cpp ! src/hotspot/share/jfr/recorder/service/jfrOptionSet.cpp ! src/hotspot/share/jfr/recorder/service/jfrPostBox.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderThread.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderThreadLoop.cpp ! src/hotspot/share/jfr/recorder/stacktrace/jfrStackTrace.cpp ! src/hotspot/share/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp ! src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp ! src/hotspot/share/jfr/recorder/storage/jfrEpochStorage.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrFullStorage.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrMemorySpaceRetrieval.hpp ! src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp ! src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.hpp ! src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrVirtualMemory.cpp ! src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp ! src/hotspot/share/jfr/support/jfrAdaptiveSampler.cpp ! src/hotspot/share/jfr/support/jfrFlush.cpp ! src/hotspot/share/jfr/support/jfrIntrinsics.cpp ! src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp ! src/hotspot/share/jfr/support/jfrKlassUnloading.cpp ! src/hotspot/share/jfr/support/jfrMethodLookup.cpp ! src/hotspot/share/jfr/support/jfrObjectAllocationSample.cpp ! src/hotspot/share/jfr/support/jfrStackTraceMark.cpp ! src/hotspot/share/jfr/support/jfrSymbolTable.cpp ! src/hotspot/share/jfr/support/jfrSymbolTable.hpp ! src/hotspot/share/jfr/support/jfrThreadLocal.cpp ! src/hotspot/share/jfr/support/jfrThreadLocal.hpp ! src/hotspot/share/jfr/utilities/jfrAllocation.cpp ! src/hotspot/share/jfr/utilities/jfrBigEndian.hpp ! src/hotspot/share/jfr/utilities/jfrBlob.cpp ! src/hotspot/share/jfr/utilities/jfrConcurrentLinkedListHost.hpp ! src/hotspot/share/jfr/utilities/jfrConcurrentLinkedListHost.inline.hpp ! src/hotspot/share/jfr/utilities/jfrConcurrentQueue.inline.hpp ! src/hotspot/share/jfr/utilities/jfrDoublyLinkedList.hpp ! src/hotspot/share/jfr/utilities/jfrEpochQueue.inline.hpp ! src/hotspot/share/jfr/utilities/jfrHashtable.hpp ! src/hotspot/share/jfr/utilities/jfrIterator.hpp ! src/hotspot/share/jfr/utilities/jfrJavaLog.cpp ! src/hotspot/share/jfr/utilities/jfrLinkedList.inline.hpp ! src/hotspot/share/jfr/utilities/jfrNode.hpp ! src/hotspot/share/jfr/utilities/jfrPredicate.hpp ! src/hotspot/share/jfr/utilities/jfrRandom.inline.hpp ! src/hotspot/share/jfr/utilities/jfrRefCountPointer.hpp ! src/hotspot/share/jfr/utilities/jfrRelation.hpp ! src/hotspot/share/jfr/utilities/jfrResourceManager.hpp ! src/hotspot/share/jfr/utilities/jfrSpinlockHelper.hpp ! src/hotspot/share/jfr/utilities/jfrThreadIterator.cpp ! src/hotspot/share/jfr/utilities/jfrVersionSystem.inline.hpp ! src/hotspot/share/jfr/writers/jfrEncoders.hpp ! src/hotspot/share/jfr/writers/jfrEncoding.hpp ! src/hotspot/share/jfr/writers/jfrJavaEventWriter.cpp ! src/hotspot/share/jfr/writers/jfrMemoryWriterHost.inline.hpp ! src/hotspot/share/jfr/writers/jfrPosition.inline.hpp ! src/hotspot/share/jfr/writers/jfrStorageAdapter.hpp ! src/hotspot/share/jfr/writers/jfrStorageHost.inline.hpp ! src/hotspot/share/jfr/writers/jfrTypeWriterHost.hpp ! src/hotspot/share/jfr/writers/jfrWriterHost.inline.hpp Changeset: 1bca05ea Author: Daniel D. Daugherty Date: 2023-05-10 14:40:56 +0000 URL: https://git.openjdk.org/loom/commit/1bca05eace5c4622a1fd596f4ed196495a8801e4 8307799: Newly added java/awt/dnd/MozillaDnDTest.java has invalid jtreg `@requires` clause Reviewed-by: rriggs, azvegint ! test/jdk/java/awt/dnd/MozillaDnDTest.java Changeset: 0198afca Author: Archie Cobbs Committer: Brian Burkhalter Date: 2023-05-10 16:24:00 +0000 URL: https://git.openjdk.org/loom/commit/0198afca3ac1a7c421b0669ae2180eee3e4f1482 8305748: Clarify reentrant behavior of close() in FileInputStream, FileOutputStream, and RandomAccessFile Reviewed-by: alanb, bpb ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java Changeset: 8a95020a Author: Viktor Klang Committer: Paul Sandoz Date: 2023-05-10 16:29:34 +0000 URL: https://git.openjdk.org/loom/commit/8a95020ab6c61f25954a56e1965529bb2f6f58af 8151531: Add notes to BaseStream.spliterator/iterator docs regarding them being escape hatches Reviewed-by: psandoz ! src/java.base/share/classes/java/util/stream/BaseStream.java Changeset: 9af1787e Author: Kevin Walls Date: 2023-05-10 16:44:49 +0000 URL: https://git.openjdk.org/loom/commit/9af1787ebe842bcfbf4a03a9deefe19bbd1ee87d 8307244: Remove redundant class RMIIIOPServerImpl Reviewed-by: sspitsyn, dfuchs, alanb ! src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnector.java - src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIIIOPServerImpl.java Changeset: 1964954d Author: Jiangli Zhou Date: 2023-05-10 17:26:02 +0000 URL: https://git.openjdk.org/loom/commit/1964954da9ac1d020e0b5ba35893f475d86ec909 8307194: Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries Reviewed-by: erikj, sgehwolf ! make/GraalBuilderImage.gmk ! make/Main.gmk ! make/StaticLibsImage.gmk ! make/autoconf/spec.gmk.in ! make/common/NativeCompilation.gmk ! make/hotspot/lib/CompileJvm.gmk ! make/modules/java.base/lib/CoreLibraries.gmk ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 26883648 Author: Chris Plummer Date: 2023-05-10 19:09:24 +0000 URL: https://git.openjdk.org/loom/commit/268836482d0688bd1952bf634ceee4463dfca66f 8306758: com/sun/jdi/ConnectedVMs.java fails with "Non-zero debuggee exitValue: 143" Reviewed-by: amenkov, sspitsyn ! test/jdk/com/sun/jdi/ConnectedVMs.java ! test/jdk/com/sun/jdi/InstTarg.java ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: df90df29 Author: Daniel D. Daugherty Date: 2023-05-10 19:38:24 +0000 URL: https://git.openjdk.org/loom/commit/df90df298e4183f5328b88ff0af91ba96fb2510d 8307857: validate-source fails after JDK-8306758 Reviewed-by: rriggs, cjplummer ! test/jdk/com/sun/jdi/InstTarg.java Changeset: edc4adb7 Author: Daniel D. Daugherty Date: 2023-05-10 21:08:28 +0000 URL: https://git.openjdk.org/loom/commit/edc4adb77e755b8076c0ab85acab313384397428 8307860: [BACKOUT] JDK-8307194 Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries Reviewed-by: erikj ! make/GraalBuilderImage.gmk ! make/Main.gmk ! make/StaticLibsImage.gmk ! make/autoconf/spec.gmk.in ! make/common/NativeCompilation.gmk ! make/hotspot/lib/CompileJvm.gmk ! make/modules/java.base/lib/CoreLibraries.gmk ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: cc9f7ad9 Author: Ashutosh Mehra Committer: Ioi Lam Date: 2023-05-10 21:51:36 +0000 URL: https://git.openjdk.org/loom/commit/cc9f7ad9ce33dc44d335fb7fb5483795c62ba936 8307765: DynamicArchiveHeader contents are missing in CDS mapfile Reviewed-by: iklam, ccheung ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/dynamicArchive.hpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/cds/filemap.hpp Changeset: d7f95dcf Author: Alan Bateman Date: 2023-05-11 08:09:26 +0000 URL: https://git.openjdk.org/loom/commit/d7f95dcff6f610b4ed21edcc90848d8ebe217178 Merge Changeset: ac69c6d4 Author: Alan Bateman Date: 2023-05-11 08:42:07 +0000 URL: https://git.openjdk.org/loom/commit/ac69c6d4ecee4aaff36eaee6e7abc84682258c15 Restore ThreadContainers ! src/java.base/share/classes/java/util/concurrent/ThreadPerTaskExecutor.java ! src/java.base/share/classes/jdk/internal/misc/ThreadFlock.java ! src/java.base/share/classes/jdk/internal/vm/SharedThreadContainer.java ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java ! test/jdk/java/lang/Thread/virtual/TrackAllThreads.java From duke at openjdk.org Thu May 11 10:44:55 2023 From: duke at openjdk.org (duke) Date: Thu, 11 May 2023 10:44:55 GMT Subject: git: openjdk/loom: master: 117 new changesets Message-ID: <9a0a40c3-013f-4c45-951c-3c0356e85468@openjdk.org> Changeset: 14874779 Author: Harshitha Onkar Date: 2023-05-03 19:39:12 +0000 URL: https://git.openjdk.org/loom/commit/14874779eeb9a279479c5aaddb40c056780d6152 8305815: Update Libpng to 1.6.39 Reviewed-by: prr ! src/java.desktop/share/legal/libpng.md ! src/java.desktop/share/native/libsplashscreen/libpng/CHANGES ! src/java.desktop/share/native/libsplashscreen/libpng/LICENSE ! src/java.desktop/share/native/libsplashscreen/libpng/README ! src/java.desktop/share/native/libsplashscreen/libpng/png.c ! src/java.desktop/share/native/libsplashscreen/libpng/png.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c Changeset: dcb2f3f5 Author: Martin Desruisseaux Committer: Phil Race Date: 2023-05-03 20:45:57 +0000 URL: https://git.openjdk.org/loom/commit/dcb2f3f5029ebdb2bb088ad10bed2134aa71cf1a 8306320: BufferedImage spec needs clarification w.r.t its implementation of the WritableRenderedImage interface Reviewed-by: prr ! src/java.desktop/share/classes/java/awt/image/BufferedImage.java Changeset: db8b3cd0 Author: Kevin Driver Committer: Bradford Wetmore Date: 2023-05-03 20:47:23 +0000 URL: https://git.openjdk.org/loom/commit/db8b3cd0842c05396d74abe950a2103654519b61 8305963: Typo in java.security.Security.getProperty Co-authored-by: Sean Coffey Reviewed-by: coffeys, wetmore ! src/java.base/share/classes/java/security/Security.java Changeset: 63cd0a36 Author: jeremy Committer: Phil Race Date: 2023-05-03 20:48:07 +0000 URL: https://git.openjdk.org/loom/commit/63cd0a36dabb3b3446996d0409803238f81fc197 4200096: OffScreenImageSource.removeConsumer NullPointerException Reviewed-by: prr, serb ! src/java.desktop/share/classes/sun/awt/image/OffScreenImageSource.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/AddNullConsumerTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/ImageSizeTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/LegitimateNullPointerTest.java + test/jdk/sun/awt/image/OffScreenImageSource/bug4200096/bug4200096.java Changeset: 03030d47 Author: Jiangli Zhou Date: 2023-05-03 21:09:22 +0000 URL: https://git.openjdk.org/loom/commit/03030d47ebee5c20919fe0162ec86d3d400cd955 8307134: Add GTS root CAs Co-authored-by: Andy Warner Co-authored-by: Rajan Halade Reviewed-by: mullan, rhalade + src/java.base/share/data/cacerts/gtsrootcar1 + src/java.base/share/data/cacerts/gtsrootcar2 + src/java.base/share/data/cacerts/gtsrootecccar3 + src/java.base/share/data/cacerts/gtsrootecccar4 + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/GoogleCA.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: 64ac9a05 Author: Leonid Mesnik Date: 2023-05-04 01:10:54 +0000 URL: https://git.openjdk.org/loom/commit/64ac9a05e85020d24e33ba55cffa1bd9b269218a 8306946: jdk/test/lib/process/ProcessToolsStartProcessTest.java fails with "wrong number of lines in OutputAnalyzer output" Reviewed-by: dholmes ! test/lib-test/jdk/test/lib/process/ProcessToolsStartProcessTest.java ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 3599448a Author: Kim Barrett Date: 2023-05-04 02:08:07 +0000 URL: https://git.openjdk.org/loom/commit/3599448ad833553dd502a4f941dad7295b557d55 8307147: [x86] Dangling pointer warning for Assembler::_attributes Reviewed-by: dholmes, aph ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/share/utilities/compilerWarnings.hpp ! src/hotspot/share/utilities/compilerWarnings_gcc.hpp Changeset: caee1bea Author: Leonid Mesnik Date: 2023-05-04 03:51:24 +0000 URL: https://git.openjdk.org/loom/commit/caee1beaaff7c11d5cc07fe31d04d8bf656b7a36 8307305: Update debugger tests to support JTREG_TEST_THREAD_FACTORY mode Reviewed-by: cjplummer = test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/share/MainWrapper.java = test/jdk/ProblemList-Virtual.txt ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: 465bdd9e Author: Tejesh R Date: 2023-05-04 04:52:00 +0000 URL: https://git.openjdk.org/loom/commit/465bdd9e416cacc6cc7dd91a29cc84adf2eaf1ed 8307091: A few client tests intermittently throw ConcurrentModificationException Reviewed-by: prr, dnguyen ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java Changeset: 82a8e91e Author: Abhishek Kumar Date: 2023-05-04 06:08:31 +0000 URL: https://git.openjdk.org/loom/commit/82a8e91ef7c3b397f9cce3854722cfe4bace6f2e 8306489: Open source AWT List related tests Reviewed-by: prr, serb + test/jdk/java/awt/List/ISCAfterRemoveAllTest.java + test/jdk/java/awt/List/InstanceOfSelectedArray.java + test/jdk/java/awt/List/ListEnterExitTest.java + test/jdk/java/awt/List/ListNullTest.java + test/jdk/java/awt/List/MaxWidthTest.java + test/jdk/java/awt/List/PageUPSelectsItemsTest.java + test/jdk/java/awt/List/TriggerActionEventTest.java Changeset: e206d57b Author: Kevin Walls Date: 2023-05-04 06:31:15 +0000 URL: https://git.openjdk.org/loom/commit/e206d57bfc09032e17d09714fc54ab2f5e961792 8307362: Remove test com/sun/jdi/JdbLastErrorTest.java Reviewed-by: dcubed ! test/jdk/ProblemList.txt - test/jdk/com/sun/jdi/JdbLastErrorTest.java Changeset: 3f1927a7 Author: Oli Gillespie Committer: Aleksey Shipilev Date: 2023-05-04 09:19:19 +0000 URL: https://git.openjdk.org/loom/commit/3f1927a7f3a2914402a25335c47a5a8bdd5511a6 8307346: Add missing gc+phases logging for ObjectCount(AfterGC) JFR event collection code Reviewed-by: tschatzl, shade, ayang ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp Changeset: cecf817f Author: Maurizio Cimadamore Date: 2023-05-04 09:44:31 +0000 URL: https://git.openjdk.org/loom/commit/cecf817f5ed8e6ca290f8da0f07f694f35ec4c7e 8307181: MemoryLayout.structLayout uses undocumented strict alignment constraints Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/MemoryLayout.java Changeset: 408cec51 Author: Stefan Johansson Date: 2023-05-04 11:00:44 +0000 URL: https://git.openjdk.org/loom/commit/408cec516bb5fd82fb6dcddeee934ac0c5ecffaf 8306929: Avoid CleanClassLoaderDataMetaspaces safepoints when previous versions are shared Reviewed-by: coleenp, sspitsyn ! src/hotspot/share/classfile/classLoaderDataGraph.cpp ! src/hotspot/share/classfile/classLoaderDataGraph.inline.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefinePreviousVersions.java + test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineSharedClassJFR.java Changeset: 29233e0a Author: Stefan Johansson Date: 2023-05-04 12:48:56 +0000 URL: https://git.openjdk.org/loom/commit/29233e0a001adde71a3fa5d56292ccfba8409ea5 8307448: Test RedefineSharedClassJFR fail due to wrong assumption Reviewed-by: eosterlund, coleenp ! test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineSharedClassJFR.java Changeset: dc4096ce Author: Chen Liang Committer: Adam Sotona Date: 2023-05-04 13:24:08 +0000 URL: https://git.openjdk.org/loom/commit/dc4096ce136c867e0806070a2d7c8b4efef5294c 8304937: BufferedFieldBuilder.Model missing writeTo(DirectClassBuilder) Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedFieldBuilder.java + test/jdk/jdk/classfile/ClassBuildingTest.java Changeset: 2adb3b40 Author: Alexander Zvegintsev Date: 2023-05-04 15:39:08 +0000 URL: https://git.openjdk.org/loom/commit/2adb3b409e8cc87685a4379be3f7beeb53706e2e 8306943: Open source several dnd AWT tests Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DnDAWTLockTest.java + test/jdk/java/awt/dnd/DragGestureInvokeLaterTest.java + test/jdk/java/awt/dnd/DragOverDropTargetPerformanceTest.java + test/jdk/java/awt/dnd/DragSourceDragEventModifiersTest.java + test/jdk/java/awt/dnd/DragSourceGCrashTest.java Changeset: 5ca0b08a Author: Phil Race Date: 2023-05-04 16:44:24 +0000 URL: https://git.openjdk.org/loom/commit/5ca0b08a7505d5c210d906e76c2a4cfc3eed64aa 8307133: Open source some JTable jtreg tests Reviewed-by: serb + test/jdk/javax/swing/JTable/4170447/bug4170447.java + test/jdk/javax/swing/JTable/4170447/swing.small.gif + test/jdk/javax/swing/JTable/bug4098201.java + test/jdk/javax/swing/JTable/bug4130356.java + test/jdk/javax/swing/JTable/bug4159300.java + test/jdk/javax/swing/JTable/bug4243159.java + test/jdk/javax/swing/JTable/bug4243313.java + test/jdk/javax/swing/JTable/bug4247487.java + test/jdk/javax/swing/JTable/bug4248070.java Changeset: 0c6529d2 Author: Markus Gr?nlund Date: 2023-05-04 17:26:31 +0000 URL: https://git.openjdk.org/loom/commit/0c6529d2d38a668f74936cca7803ca9de1a05d49 8307156: native_thread not protected by TLH Reviewed-by: coleenp, dcubed ! src/hotspot/share/jfr/jni/jfrJavaSupport.cpp Changeset: a87262ef Author: Coleen Phillimore Date: 2023-05-04 17:42:14 +0000 URL: https://git.openjdk.org/loom/commit/a87262efb2c0f5ed1773533d69d7d2091eba1462 8307295: Add warning to not create new ACC flags Reviewed-by: dholmes, fparain ! src/hotspot/share/utilities/accessFlags.hpp Changeset: 197d0cc6 Author: Kevin Driver Committer: Bradford Wetmore Date: 2023-05-04 19:25:01 +0000 URL: https://git.openjdk.org/loom/commit/197d0cc6031cb470f1bd7678796593ff1bf440ca 8294983: SSLEngine throws ClassCastException during handshake Co-authored-by: Daniel Jeli?ski Reviewed-by: wetmore, xuelei ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java Changeset: 111858f3 Author: Daniel D. Daugherty Date: 2023-05-04 21:32:35 +0000 URL: https://git.openjdk.org/loom/commit/111858f3ff86a15666537df515375fa04ffef048 8307489: ProblemList jdk/incubator/vector/LoadJsvmlTest.java on windows-x64 8307490: ProblemList sun/security/pkcs11/Cipher/TestKATForGCM.java on linux-x64 and macosx-x64 8307491: ProblemList sanity/client/SwingSet/src/EditorPaneDemoTest.java on linux-x64 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: 46df171d Author: Eric Liu Date: 2023-05-05 00:34:12 +0000 URL: https://git.openjdk.org/loom/commit/46df171d537c0d9cb1df2d7915cc745a7f524557 8304948: [vectorapi] C2 crashes when expanding VectorBox Reviewed-by: thartmann, qamai ! src/hotspot/share/opto/vector.cpp ! src/hotspot/share/opto/vector.hpp + test/hotspot/jtreg/compiler/vectorapi/VectorBoxExpandTest.java Changeset: a44e8908 Author: Leonid Mesnik Date: 2023-05-05 00:43:59 +0000 URL: https://git.openjdk.org/loom/commit/a44e8908a1007365f7c016df65ce7722556c180a 8307308: Add serviceability_ttf_virtual group to exclude jvmti tests developed for virtual threads Reviewed-by: sspitsyn ! test/hotspot/jtreg/TEST.groups Changeset: 1b143ba7 Author: William Kemper Committer: Stefan Karlsson Date: 2023-05-05 05:43:05 +0000 URL: https://git.openjdk.org/loom/commit/1b143ba78712e7ac98ca9873c50989b3fba07394 8307378: Allow collectors to provide specific values for GC notifications' actions Reviewed-by: kdnilsen, stefank ! src/hotspot/share/gc/epsilon/epsilonHeap.hpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.hpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psScavenge.cpp ! src/hotspot/share/gc/serial/serialHeap.cpp ! src/hotspot/share/gc/shared/genCollectedHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahUtils.cpp ! src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp ! src/hotspot/share/gc/shenandoah/shenandoahVMOperations.cpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zServiceability.hpp ! src/hotspot/share/services/memoryManager.cpp ! src/hotspot/share/services/memoryManager.hpp ! src/hotspot/share/services/memoryService.cpp ! src/hotspot/share/services/memoryService.hpp ! test/hotspot/jtreg/gc/shenandoah/mxbeans/TestPauseNotifications.java Changeset: e19cf26d Author: Kim Barrett Date: 2023-05-05 06:20:32 +0000 URL: https://git.openjdk.org/loom/commit/e19cf26d656bc2de947aa42c418bdbbf549f8865 8307196: Dangling pointer warning for MetadataAllocationRequest Reviewed-by: dholmes, eosterlund ! src/hotspot/share/memory/metaspaceCriticalAllocation.cpp Changeset: 302bc2fd Author: Thomas Schatzl Date: 2023-05-05 06:36:08 +0000 URL: https://git.openjdk.org/loom/commit/302bc2fd7fdfc02314e22ecc34ba2c78ef5ca9a1 8307421: Fix comment in g1CollectionSetChooser.hpp after JDK-8306836 Reviewed-by: shade ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp Changeset: f94f9577 Author: Andrew Dinn Date: 2023-05-05 07:50:21 +0000 URL: https://git.openjdk.org/loom/commit/f94f957734355fe112e861d1f2f0b49df20f6b66 8307331: Correctly update line maps when class redefine rewrites bytecodes Reviewed-by: sspitsyn ! src/hotspot/share/runtime/relocator.cpp Changeset: 948f3b3c Author: Johan Sj?len Date: 2023-05-05 08:54:05 +0000 URL: https://git.openjdk.org/loom/commit/948f3b3c24709eca3aa6c3f0db6adb9226d6f9ac 8301493: Replace NULL with nullptr in cpu/aarch64 Reviewed-by: tschatzl, gziemski, dholmes ! src/hotspot/cpu/aarch64/assembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/codeBuffer_aarch64.cpp ! src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp ! src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/disassembler_aarch64.hpp ! src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp ! src/hotspot/cpu/aarch64/frame_aarch64.cpp ! src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/gc/g1/g1BarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/aarch64/icBuffer_aarch64.cpp ! src/hotspot/cpu/aarch64/icache_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp ! src/hotspot/cpu/aarch64/javaFrameAnchor_aarch64.hpp ! src/hotspot/cpu/aarch64/jniFastGetField_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/matcher_aarch64.hpp ! src/hotspot/cpu/aarch64/methodHandles_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp ! src/hotspot/cpu/aarch64/registerMap_aarch64.cpp ! src/hotspot/cpu/aarch64/registerMap_aarch64.hpp ! src/hotspot/cpu/aarch64/relocInfo_aarch64.cpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/stubRoutines_aarch64.cpp ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/aarch64/vm_version_aarch64.cpp ! src/hotspot/cpu/aarch64/vtableStubs_aarch64.cpp Changeset: 3b430b9f Author: Adam Sotona Date: 2023-05-05 08:54:53 +0000 URL: https://git.openjdk.org/loom/commit/3b430b9f732bc94674bf598c28162e2f5e62bae6 8250596: Update remaining manpage references from "OS X" to "macOS" Reviewed-by: mullan, cjplummer, dholmes, sspitsyn ! src/java.base/share/man/keytool.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: 1a1ce66d Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-05 13:12:19 +0000 URL: https://git.openjdk.org/loom/commit/1a1ce66dc9976b8f44de613e81e557a8ae698135 8305080: Suppress the 'removal' warning for finalize() from test/hotspot/jtreg/compiler/jvmci/common/testcases that used in compiler/jvmci/compilerToVM/ tests Reviewed-by: dnsimon, coleenp ! test/hotspot/jtreg/compiler/jvmci/common/testcases/AbstractClassExtender.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/AnotherSingleImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleAbstractImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementer1.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementer2.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleImplementersInterface.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/MultipleSuperImplementers.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/SingleImplementer.java ! test/hotspot/jtreg/compiler/jvmci/common/testcases/SingleImplementerInterface.java Changeset: 746f8d13 Author: Weibing Xiao Committer: Sean Coffey Date: 2023-05-05 13:19:20 +0000 URL: https://git.openjdk.org/loom/commit/746f8d133323c1caca019b507a6ccd9d5c98f2f9 8305714: Add an extra test for JDK-8292755 Reviewed-by: coffeys + test/langtools/jdk/jshell/UndefinedClassTest.java Changeset: f143bf7c Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-05 13:22:01 +0000 URL: https://git.openjdk.org/loom/commit/f143bf7c4554a689f17c373ea5d99b68dd518b2f 8305084: Remove the removal warnings for finalize() from test/hotspot/jtreg/serviceability/dcmd/gc/FinalizerInfoTest.java and RunFinalizationTest.java Reviewed-by: dholmes, cjplummer ! test/hotspot/jtreg/serviceability/dcmd/gc/FinalizationRunner.java ! test/hotspot/jtreg/serviceability/dcmd/gc/FinalizerInfoTest.java Changeset: 3f6a3545 Author: Matthew Donovan Committer: Jamil Nimeh Date: 2023-05-05 14:17:00 +0000 URL: https://git.openjdk.org/loom/commit/3f6a3545a255cbef3c3436ff26481f1cec4ccfc9 8305169: java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java -- test server didn't start in timely manner Reviewed-by: ssahoo, jnimeh ! test/jdk/java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java ! test/jdk/java/security/testlibrary/SimpleOCSPServer.java Changeset: 6fe959c6 Author: Matias Saavedra Silva Date: 2023-05-05 14:24:40 +0000 URL: https://git.openjdk.org/loom/commit/6fe959c62d6475b8f4c9ada2a8eb7b36d22d5e5e 8307306: Change some ConstantPool::name_ref_at calls to uncached_name_ref_at Co-authored-by: Ioi Lam Reviewed-by: coleenp, fparain ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/verifier.cpp ! src/hotspot/share/classfile/verifier.hpp ! src/hotspot/share/interpreter/rewriter.cpp ! src/hotspot/share/oops/constantPool.cpp Changeset: 12d6ec66 Author: Roman Kennke Date: 2023-05-05 14:35:33 +0000 URL: https://git.openjdk.org/loom/commit/12d6ec66a6cc668c929b3ebefd52a0dcac34771a 8307236: Rendezvous GC threads under STS for monitor deflation Reviewed-by: eosterlund, shade ! src/hotspot/share/runtime/monitorDeflationThread.hpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vmOperation.hpp Changeset: 3968ab5d Author: Roman Kennke Date: 2023-05-05 15:56:10 +0000 URL: https://git.openjdk.org/loom/commit/3968ab5db5443ce93c9a19ebbc5464f7d91782fc 8307395: Add missing STS to Shenandoah Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp Changeset: 47422be2 Author: Maurizio Cimadamore Date: 2023-05-05 15:59:13 +0000 URL: https://git.openjdk.org/loom/commit/47422be2d1d74e5e1b4b6c8e1a75e134e4f6aaf5 8307375: Alignment check on layouts used as sequence element is not correct Reviewed-by: jvernee ! 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/jdk/internal/foreign/AbstractMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/Utils.java ! src/java.base/share/classes/jdk/internal/foreign/layout/AbstractLayout.java ! test/jdk/java/foreign/TestLayouts.java Changeset: b5a48277 Author: Damon Nguyen Date: 2023-05-05 16:28:03 +0000 URL: https://git.openjdk.org/loom/commit/b5a48277ab5b42c4b13db7ddb5418a17ada512ec 8306871: Open source more AWT Drag & Drop tests Reviewed-by: prr + test/jdk/java/awt/event/HierarchyEvent/ObjectSourceTest.java + test/jdk/java/awt/event/HierarchyEvent/SpecTest.java + test/jdk/java/awt/event/InputEvent/MouseModsTest.java + test/jdk/java/awt/event/InvocationEvent/CatchingThrowableTest.java + test/jdk/java/awt/event/KeyEvent/AltGraphModifier.java + test/jdk/java/awt/event/KeyEvent/KeyTyped/CancelKeyTyped.java Changeset: d8b230c3 Author: Harshitha Onkar Date: 2023-05-05 17:33:25 +0000 URL: https://git.openjdk.org/loom/commit/d8b230c384c47cc2bdc28d0849859d58a6a52eae 8307301: Update HarfBuzz to 7.2.0 Reviewed-by: prr ! src/java.desktop/share/legal/harfbuzz.md ! src/java.desktop/share/native/libharfbuzz/OT/Color/COLR/COLR.hh ! src/java.desktop/share/native/libharfbuzz/OT/Color/CPAL/CPAL.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkLigPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/Ligature.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSet.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat2.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/SubsetGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/VarCompositeGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/path-builder.hh ! src/java.desktop/share/native/libharfbuzz/UPDATING.txt ! src/java.desktop/share/native/libharfbuzz/hb-aat-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-algs.hh ! src/java.desktop/share/native/libharfbuzz/hb-bimap.hh ! src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh ! src/java.desktop/share/native/libharfbuzz/hb-blob.h ! src/java.desktop/share/native/libharfbuzz/hb-buffer.cc ! src/java.desktop/share/native/libharfbuzz/hb-cache.hh ! src/java.desktop/share/native/libharfbuzz/hb-common.cc ! src/java.desktop/share/native/libharfbuzz/hb-config.hh ! src/java.desktop/share/native/libharfbuzz/hb-debug.hh ! src/java.desktop/share/native/libharfbuzz/hb-deprecated.h ! src/java.desktop/share/native/libharfbuzz/hb-face.cc ! src/java.desktop/share/native/libharfbuzz/hb-face.hh ! src/java.desktop/share/native/libharfbuzz/hb-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-font.h ! src/java.desktop/share/native/libharfbuzz/hb-ft.cc ! src/java.desktop/share/native/libharfbuzz/hb-map.cc ! src/java.desktop/share/native/libharfbuzz/hb-map.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-head-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-hmtx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-maxp-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-name.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-stat-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh + src/java.desktop/share/native/libharfbuzz/hb-ot-var-cvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-outline.cc ! src/java.desktop/share/native/libharfbuzz/hb-outline.hh ! src/java.desktop/share/native/libharfbuzz/hb-paint.h ! src/java.desktop/share/native/libharfbuzz/hb-paint.hh ! src/java.desktop/share/native/libharfbuzz/hb-pool.hh ! src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh ! src/java.desktop/share/native/libharfbuzz/hb-sanitize.hh ! src/java.desktop/share/native/libharfbuzz/hb-shape.cc ! src/java.desktop/share/native/libharfbuzz/hb-shape.h ! src/java.desktop/share/native/libharfbuzz/hb-shaper-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-static.cc ! src/java.desktop/share/native/libharfbuzz/hb-style.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-input.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset.h ! src/java.desktop/share/native/libharfbuzz/hb-unicode.h ! src/java.desktop/share/native/libharfbuzz/hb-version.h ! src/java.desktop/share/native/libharfbuzz/hb.hh Changeset: 65a54883 Author: Calvin Cheung Date: 2023-05-05 17:39:40 +0000 URL: https://git.openjdk.org/loom/commit/65a54883b36693ad5b963e0fad9387e6aba38369 8306712: CDS DeterministicDump.java test fails with -XX:+UseStringDeduplication Reviewed-by: iklam, matsaave ! src/hotspot/share/runtime/arguments.cpp ! test/hotspot/jtreg/runtime/cds/DeterministicDump.java Changeset: 6c71859a Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2023-05-05 18:03:58 +0000 URL: https://git.openjdk.org/loom/commit/6c71859ac240c788364169422e726f8f5443bf75 6176679: Application freezes when copying an animated gif image to the system clipboard Reviewed-by: aivanov, dmarkov ! src/java.desktop/share/classes/sun/awt/image/ImageRepresentation.java + test/jdk/java/awt/Clipboard/CopyAnimatedGIFTest.java Changeset: 27764e60 Author: Matias Saavedra Silva Date: 2023-05-05 18:06:19 +0000 URL: https://git.openjdk.org/loom/commit/27764e60357b018b4f403d63cb54f95604b0cb8c 8306583: Add JVM crash check in CDSTestUtils.executeAndLog Reviewed-by: iklam, ccheung + test/hotspot/jtreg/runtime/cds/TestCDSVMCrash.java ! test/lib/jdk/test/lib/cds/CDSTestUtils.java Changeset: 4386d42d Author: Harshitha Onkar Date: 2023-05-05 18:12:48 +0000 URL: https://git.openjdk.org/loom/commit/4386d42d31af9042121581cd3fd4d5a7cf8961e6 8307381: Open Source JFrame, JIF related Swing Tests Reviewed-by: dnguyen, kizune + test/jdk/javax/swing/JFrame/bug4101444.java + test/jdk/javax/swing/JFrame/bug4208018.java + test/jdk/javax/swing/JInternalFrame/bug4308938.java + test/jdk/javax/swing/JInternalFrame/bug4320889.java + test/jdk/javax/swing/JTextField/bug4300552.java + test/jdk/javax/swing/JToggleButton/bug4277049.java Changeset: e2b1013f Author: Leonid Mesnik Date: 2023-05-05 18:57:33 +0000 URL: https://git.openjdk.org/loom/commit/e2b1013f11fc605501c3bf77976facb9b870d28e 8306326: [BACKOUT] 8277573: VmObjectAlloc is not generated by intrinsics methods which allocate objects Reviewed-by: sspitsyn, thartmann, kvn ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/prims/jvmtiEventController.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiExport.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 73ac7105 Author: Oli Gillespie Committer: Alan Bateman Date: 2023-05-05 19:36:35 +0000 URL: https://git.openjdk.org/loom/commit/73ac710533a45bf5ba17f308aa49556b877b8bf9 8307425: Socket input stream read burns CPU cycles with back-to-back poll(0) calls Reviewed-by: alanb ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/NioSocketImpl.java ! src/java.base/share/classes/sun/nio/ch/SelChImpl.java Changeset: b5922c3b Author: Weijun Wang Date: 2023-05-05 20:03:11 +0000 URL: https://git.openjdk.org/loom/commit/b5922c3b869e7dab97ffca6d0bc7927369630f03 8305846: Support compilation in Proc test utility Reviewed-by: valeriep = test/lib-test/jdk/test/lib/process/proc/A.java + test/lib-test/jdk/test/lib/process/proc/B.java + test/lib-test/jdk/test/lib/process/proc/Launcher.java ! test/lib/jdk/test/lib/process/Proc.java Changeset: 7d58978f Author: Alexander Zvegintsev Date: 2023-05-05 20:16:26 +0000 URL: https://git.openjdk.org/loom/commit/7d58978f62bf333f256115d6592706d70144ad15 8280031: Deprecate GTK2 for removal Reviewed-by: prr ! src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java Changeset: 4e4828ea Author: Ioi Lam Date: 2023-05-06 01:20:03 +0000 URL: https://git.openjdk.org/loom/commit/4e4828eaffcd8b88741e1fc935b944c2e49fad64 8307553: Remove dead code MetaspaceClosure::push_method_entry Reviewed-by: coleenp, ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp Changeset: 1f57ce0a Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-06 01:23:40 +0000 URL: https://git.openjdk.org/loom/commit/1f57ce0a068a1346f3aa79f861981bd03c6f6d45 8307446: RISC-V: Improve performance of floating point to integer conversion Reviewed-by: fyang, vkempik, gli ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp Changeset: 3d3eaed9 Author: Alexander Zvegintsev Date: 2023-05-06 02:16:32 +0000 URL: https://git.openjdk.org/loom/commit/3d3eaed9133dbe728ca8e00a626d33f7e35ba9ff 8306941: Open source several datatransfer and dnd AWT tests Reviewed-by: prr + test/jdk/java/awt/datatransfer/MimeFormatsTest.java + test/jdk/java/awt/datatransfer/RemoveFlavorListenerTest.java + test/jdk/java/awt/dnd/AutoscrollStopTest.java + test/jdk/java/awt/dnd/ButtonReleaseTest.java Changeset: 0dca573c Author: changpeng1997 Committer: Xiaohong Gong Date: 2023-05-06 07:20:20 +0000 URL: https://git.openjdk.org/loom/commit/0dca573ca5d357157565072e22e24d6a9bee717a 8301739: AArch64: Add optimized rules for vector compare with immediate for SVE Reviewed-by: aph, eliu ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/aarch64_vector.ad ! src/hotspot/cpu/aarch64/aarch64_vector_ad.m4 ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/matcher.hpp ! test/hotspot/gtest/aarch64/aarch64-asmtest.py ! test/hotspot/gtest/aarch64/asmtest.out.h ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java + test/hotspot/jtreg/compiler/vectorapi/VectorCompareWithImmTest.java Changeset: 495f2688 Author: Gui Cao Committer: Fei Yang Date: 2023-05-08 01:15:12 +0000 URL: https://git.openjdk.org/loom/commit/495f2688d64ca0393906487a0b9ac6ed4c679ffa 8306966: RISC-V: Support vector cast node for Vector API Co-authored-by: Dingli Zhang Reviewed-by: fyang, fjiang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/riscv_v.ad Changeset: ad0e5a99 Author: Emanuel Peter Date: 2023-05-08 06:09:10 +0000 URL: https://git.openjdk.org/loom/commit/ad0e5a99ca1ad9dd04105f502985735a3536c3f4 8304720: SuperWord::schedule should rebuild C2-graph from SuperWord dependency-graph Reviewed-by: kvn, fgao ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java ! test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java + test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java Changeset: 959e62ca Author: Stefan Karlsson Date: 2023-05-08 07:48:45 +0000 URL: https://git.openjdk.org/loom/commit/959e62ca3ebce4025424a096dacfb3ca3b70d946 8307521: Introduce check_oop infrastructure to check oops in the oop class Reviewed-by: eosterlund, aboldtch, coleenp ! src/hotspot/share/oops/oopsHierarchy.cpp ! src/hotspot/share/oops/oopsHierarchy.hpp Changeset: 8bbd264c Author: Amit Kumar Committer: Lutz Schmidt Date: 2023-05-08 07:51:29 +0000 URL: https://git.openjdk.org/loom/commit/8bbd264c6e4b4045a218f11ae6b5b4f395bc2aa9 8307423: [s390x] Represent Registers as values Reviewed-by: mdoerr, lucy ! src/hotspot/cpu/s390/assembler_s390.hpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/interpreterRT_s390.cpp ! src/hotspot/cpu/s390/methodHandles_s390.cpp ! src/hotspot/cpu/s390/register_s390.cpp ! src/hotspot/cpu/s390/register_s390.hpp ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/vmreg_s390.inline.hpp Changeset: 68f385c1 Author: Stefan Karlsson Date: 2023-05-08 07:52:25 +0000 URL: https://git.openjdk.org/loom/commit/68f385c1ca5f5bef7edfb66d9ec8ebee44cf4860 8307428: jstat tests doesn't tolerate dash in the O column Reviewed-by: kevinw, cjplummer ! test/jdk/sun/tools/jstatd/JstatGCUtilParser.java Changeset: 7a1cb64b Author: Stefan Karlsson Date: 2023-05-08 07:54:08 +0000 URL: https://git.openjdk.org/loom/commit/7a1cb64bc1b85b3ef1b0ba2d84dbc5b8b05c60ff 8293547: Add relaxed add_and_fetch for macos aarch64 atomics Reviewed-by: dholmes, eosterlund ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp Changeset: 33245d6b Author: Stefan Karlsson Date: 2023-05-08 07:58:06 +0000 URL: https://git.openjdk.org/loom/commit/33245d6b38d7488c22619f93eff3bf0157f3d7a9 8307517: Add VMErrorCallback infrastructure to extend hs_err dumping Reviewed-by: eosterlund, aboldtch, dholmes, stuefe ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/utilities/vmError.cpp ! src/hotspot/share/utilities/vmError.hpp Changeset: f6ea8979 Author: Hannes Walln?fer Date: 2023-05-08 08:03:49 +0000 URL: https://git.openjdk.org/loom/commit/f6ea89795b1c5c5adffb1964154762830afaed42 8306285: Missing file in search test Reviewed-by: jjg + test/langtools/jdk/javadoc/doclet/testSearchScript/channels/FileChannel.java ! test/langtools/jdk/javadoc/doclet/testSearchScript/javadoc-search.js Changeset: 89b7d075 Author: Albert Mingkun Yang Date: 2023-05-08 08:31:04 +0000 URL: https://git.openjdk.org/loom/commit/89b7d075977f55ab47498535ef9385c7f9323237 8307100: Remove ReferentBasedDiscovery reference discovery policy Reviewed-by: kbarrett, dholmes, tschatzl ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/referenceProcessor.cpp ! src/hotspot/share/gc/shared/referenceProcessor.hpp ! src/hotspot/share/runtime/arguments.cpp ! test/hotspot/gtest/runtime/test_globals.cpp Changeset: 5c7ede94 Author: Arno Zeller Committer: Christoph Langer Date: 2023-05-08 08:36:52 +0000 URL: https://git.openjdk.org/loom/commit/5c7ede94ae59b46c12d40a38bf5b7e15319cc7e2 8307347: serviceability/sa/ClhsdbDumpclass.java could leave files owned by root on macOS Reviewed-by: stuefe, cjplummer ! test/hotspot/jtreg/serviceability/sa/ClhsdbDumpclass.java Changeset: bb3e44d8 Author: Matthias Baesken Date: 2023-05-08 12:24:41 +0000 URL: https://git.openjdk.org/loom/commit/bb3e44d8b604b4e3facc4f49f625cc0b7ff2abd7 8307603: [AIX] Broken build after JDK-8307301 Reviewed-by: mdoerr ! src/java.desktop/share/native/libharfbuzz/hb-subset.cc Changeset: 64c09628 Author: Jie Fu Date: 2023-05-08 13:56:45 +0000 URL: https://git.openjdk.org/loom/commit/64c09628664fd19c281723f15bf677c52e360acd 8307569: Build with gcc8 is broken after JDK-8307301 Reviewed-by: erikj ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 26755a96 Author: Dingli Zhang Committer: Erik Joelsson Date: 2023-05-08 14:00:05 +0000 URL: https://git.openjdk.org/loom/commit/26755a968665545a151adce79a5227c79724bb6b 8306408: Fix the format of several tables in building.md Reviewed-by: erikj ! doc/building.html ! doc/building.md Changeset: e91f0d3d Author: Zhengyu Gu Date: 2023-05-08 14:10:14 +0000 URL: https://git.openjdk.org/loom/commit/e91f0d3dba36f7c9456c8acc118836320c5494e1 8307571: Remove unused SomeConstants in WatcherThread class Reviewed-by: dholmes ! src/hotspot/share/runtime/nonJavaThread.hpp Changeset: d2e0e534 Author: Matthias Baesken Date: 2023-05-08 14:16:08 +0000 URL: https://git.openjdk.org/loom/commit/d2e0e534d7e391dd633fb9ff671900f8060b6d49 8307604: gcc12 based Alpine build broken build after JDK-8307301 Reviewed-by: lucy, mdoerr, erikj ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 9f34e4f8 Author: Tyler Steele Date: 2023-05-08 14:29:51 +0000 URL: https://git.openjdk.org/loom/commit/9f34e4f8d9144751b63243713e4d9247c21d64cd 8304434: [AIX] Update minimum xlclang version Reviewed-by: erikj, mbaesken ! make/autoconf/toolchain.m4 Changeset: 4b02956d Author: Darragh Clarke Committer: Daniel Jeli?ski Date: 2023-05-08 14:33:44 +0000 URL: https://git.openjdk.org/loom/commit/4b02956d42c29ce32894f15411d3abe12b07dccd 8054022: HttpURLConnection timeouts with Expect: 100-Continue and no chunking Reviewed-by: djelinski, dfuchs ! src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java + test/jdk/java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java Changeset: 5a259d87 Author: Fredrik Bredberg Committer: Coleen Phillimore Date: 2023-05-08 14:44:54 +0000 URL: https://git.openjdk.org/loom/commit/5a259d875ee6ebd93d3c0932d50784021bc97ea2 8303153: Native interpreter frame missing mirror Reviewed-by: coleenp, fyang ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp Changeset: ad90fb6d Author: Conor Cleary Date: 2023-05-08 14:49:43 +0000 URL: https://git.openjdk.org/loom/commit/ad90fb6da38da066dfc7a5439196887bbcda766f 8293786: HttpClient will not send more than 64 kb of data from the 2nd request in http2 Reviewed-by: dfuchs, djelinski ! src/java.net.http/share/classes/jdk/internal/net/http/Stream.java + test/jdk/java/net/httpclient/http2/PostPutTest.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/BodyInputStream.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/BodyOutputStream.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestExchangeImpl.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java Changeset: 93ee19f5 Author: Raffaello Giulietti Date: 2023-05-08 14:51:35 +0000 URL: https://git.openjdk.org/loom/commit/93ee19f58aa8c436c2960d171ba4646a374aa2e3 8305486: Add split() variants that keep the delimiters to String and j.u.r.Pattern Reviewed-by: jpai, rriggs ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/util/regex/Pattern.java + test/jdk/java/util/regex/SplitWithDelimitersTest.java Changeset: 4116b109 Author: Volker Simonis Date: 2023-05-08 14:56:05 +0000 URL: https://git.openjdk.org/loom/commit/4116b109f004c9552db7448f2942a11d5dfe3cdc 8306461: ObjectInputStream::readObject() should handle negative array sizes without throwing NegativeArraySizeExceptions Co-authored-by: Yakov Shafranovich Reviewed-by: shade, rriggs ! src/java.base/share/classes/java/io/ObjectInputStream.java ! src/java.base/share/classes/jdk/internal/access/JavaObjectInputStreamAccess.java + test/jdk/java/io/ObjectInputStream/NegativeArraySizeTest.java Changeset: 7f6358a8 Author: Roman Kennke Date: 2023-05-08 17:51:39 +0000 URL: https://git.openjdk.org/loom/commit/7f6358a8b53a35a87c9413c68f8fe6c5fdec0caf 8291555: Implement alternative fast-locking scheme Co-authored-by: Fei Yang Co-authored-by: Thomas Stuefe Reviewed-by: dcubed, stuefe, shade, dholmes, dlong ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/c2_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/macroAssembler_arm.cpp ! src/hotspot/cpu/arm/macroAssembler_arm.hpp ! src/hotspot/cpu/arm/sharedRuntime_arm.cpp ! src/hotspot/cpu/riscv/c1_LIRAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_CodeStubs_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/c2_CodeStubs_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/interp_masm_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/cpu/zero/vm_version_zero.cpp ! src/hotspot/cpu/zero/zeroInterpreter_zero.cpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/interpreter/interpreterRuntime.cpp ! src/hotspot/share/interpreter/interpreterRuntime.hpp ! src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/oops/markWord.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/opto/c2_CodeStubs.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp + src/hotspot/share/runtime/lockStack.cpp + src/hotspot/share/runtime/lockStack.hpp + src/hotspot/share/runtime/lockStack.inline.hpp ! src/hotspot/share/runtime/objectMonitor.cpp ! src/hotspot/share/runtime/objectMonitor.hpp ! src/hotspot/share/runtime/objectMonitor.inline.hpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threads.cpp ! src/hotspot/share/runtime/threads.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaThread.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/LockingMode.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ObjectMonitor.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/Threads.java Changeset: 14df5c13 Author: Damon Nguyen Date: 2023-05-08 17:56:27 +0000 URL: https://git.openjdk.org/loom/commit/14df5c130e5bf5139e3e2ef6d7b9d64883d94d18 8307165: java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java timed out Reviewed-by: prr ! test/jdk/java/awt/dnd/NoFormatsDropTest/NoFormatsDropTest.java Changeset: 5e1fe430 Author: Tom Rodriguez Date: 2023-05-08 18:40:18 +0000 URL: https://git.openjdk.org/loom/commit/5e1fe43080173f8e877bf6d488b778de35d8c2ac 8299229: [JVMCI] add support for UseZGC Reviewed-by: eosterlund, kvn ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetNMethod_aarch64.cpp ! src/hotspot/cpu/aarch64/globalDefinitions_aarch64.hpp ! src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp ! src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp ! src/hotspot/cpu/riscv/gc/shared/barrierSetNMethod_riscv.cpp ! src/hotspot/cpu/riscv/globalDefinitions_riscv.hpp ! src/hotspot/cpu/s390/globalDefinitions_s390.hpp ! src/hotspot/cpu/x86/gc/shared/barrierSetNMethod_x86.cpp ! src/hotspot/cpu/x86/globalDefinitions_x86.hpp ! src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp ! src/hotspot/cpu/zero/globalDefinitions_zero.hpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/gc/shared/barrierSetNMethod.cpp ! src/hotspot/share/gc/shared/barrierSetNMethod.hpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/jvmci/vmSymbols_jvmci.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/runtime/arguments.cpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotMethodData.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotProfilingInfo.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java ! test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/TestAssembler.java + test/hotspot/jtreg/compiler/jvmci/meta/ProfilingInfoTest.java Changeset: d9052b94 Author: Damon Nguyen Date: 2023-05-08 22:29:48 +0000 URL: https://git.openjdk.org/loom/commit/d9052b946682d1c0f2629455d73fe4e6b95b29db 8307130: Open source few Swing JMenu tests Reviewed-by: prr + test/jdk/javax/swing/JMenu/bug4173633.java + test/jdk/javax/swing/JMenu/bug4186641.java + test/jdk/javax/swing/JMenu/bug4219523.java + test/jdk/javax/swing/JMenu/bug5013739.java Changeset: 07f55c5e Author: Sean Coffey Date: 2023-05-09 06:05:58 +0000 URL: https://git.openjdk.org/loom/commit/07f55c5ea280032b72247049223f676424aa44c0 8305950: Have -XshowSettings option display tzdata version Reviewed-by: rriggs ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! test/jdk/tools/launcher/Settings.java Changeset: cd5d0ff5 Author: Chen Liang Committer: Adam Sotona Date: 2023-05-09 09:14:18 +0000 URL: https://git.openjdk.org/loom/commit/cd5d0ff5b29065222ffafbc4fb04b90f6f8909e2 8304031: Classfile API cannot encode Primitive Class as Condy Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BytecodeHelpers.java + test/jdk/jdk/classfile/PrimitiveClassConstantTest.java Changeset: d2b3eef0 Author: Roland Westrelin Date: 2023-05-09 09:54:22 +0000 URL: https://git.openjdk.org/loom/commit/d2b3eef0f2d48446613955cabe69cb4236042878 8307131: C2: assert(false) failed: malformed control flow Reviewed-by: kvn, chagedorn, thartmann ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopstripmining/TestNondeleteableSafePoint.java Changeset: 7a3bea1f Author: Maurizio Cimadamore Date: 2023-05-09 11:09:39 +0000 URL: https://git.openjdk.org/loom/commit/7a3bea1f6a7eaaf4c1e701f7a06226812aaa6ead 8307629: FunctionDescriptor::toMethodType should allow sequence layouts (mainline) Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/FunctionDescriptor.java ! src/java.base/share/classes/jdk/internal/foreign/FunctionDescriptorImpl.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestIllegalLink.java Changeset: f92d095e Author: Maurizio Cimadamore Date: 2023-05-09 11:11:15 +0000 URL: https://git.openjdk.org/loom/commit/f92d095e164bd79b452586e49e166d1ba392632f 8307411: Test java/foreign/channels/TestAsyncSocketChannels.java failed: IllegalStateException: Already closed Reviewed-by: jvernee ! test/jdk/java/foreign/channels/TestAsyncSocketChannels.java Changeset: 040cb7b5 Author: Josef Eisl Committer: Doug Simon Date: 2023-05-09 12:29:27 +0000 URL: https://git.openjdk.org/loom/commit/040cb7b5a9d0d11c601749951df8ff3089250049 8307588: [JVMCI] HotSpotConstantPool#lookupBootstrapMethodInvocation broken by JDK-8301995 Reviewed-by: dnsimon, never, kvn ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestDynamicConstant.java Changeset: a05560d9 Author: Adam Sotona Date: 2023-05-09 13:13:17 +0000 URL: https://git.openjdk.org/loom/commit/a05560d99352bd5952f3feef37b56dceb74ede3b 8305990: Stripping debug info of ASM 9.5 fails Reviewed-by: mcimadamore ! src/java.base/share/classes/jdk/internal/classfile/Instruction.java ! src/java.base/share/classes/jdk/internal/classfile/Opcode.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufWriterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ClassPrinterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/CodeImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectClassBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/SplitConstantPool.java + src/java.base/share/classes/jdk/internal/classfile/impl/StackCounter.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java + src/java.base/share/classes/jdk/internal/classfile/instruction/DiscontinuedInstruction.java ! test/jdk/jdk/classfile/CorpusTest.java + test/jdk/jdk/classfile/DiscontinuedInstructionsTest.java ! test/jdk/jdk/classfile/StackMapsTest.java ! test/jdk/jdk/classfile/helpers/RebuildingTransformation.java Changeset: 672bade5 Author: Axel Boldt-Christmas Date: 2023-05-09 14:04:26 +0000 URL: https://git.openjdk.org/loom/commit/672bade522b4641ffc30b0ac09791e8dcf21e003 8306738: Select num workers for safepoint ParallelCleanupTask Reviewed-by: shade, coleenp, tschatzl ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! src/hotspot/share/classfile/symbolTable.cpp ! src/hotspot/share/classfile/symbolTable.hpp ! src/hotspot/share/code/icBuffer.cpp ! src/hotspot/share/code/icBuffer.hpp ! src/hotspot/share/runtime/safepoint.cpp Changeset: 5842fd5b Author: Matthew Donovan Date: 2023-05-09 14:25:40 +0000 URL: https://git.openjdk.org/loom/commit/5842fd5beb13f3458f61df7e7480a54bd2157253 8306015: Update sun.security.ssl TLS tests to use SSLContextTemplate or SSLEngineTemplate Reviewed-by: xuelei ! test/jdk/javax/net/ssl/templates/SSLContextTemplate.java ! test/jdk/javax/net/ssl/templates/SSLEngineTemplate.java ! test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java ! test/jdk/sun/security/ssl/DHKeyExchange/DHEKeySizing.java ! test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java ! test/jdk/sun/security/ssl/HandshakeOutStream/NullCerts.java ! test/jdk/sun/security/ssl/SSLEngineImpl/CloseEngineException.java ! test/jdk/sun/security/ssl/SSLEngineImpl/CloseStart.java ! test/jdk/sun/security/ssl/SSLEngineImpl/DelegatedTaskWrongException.java ! test/jdk/sun/security/ssl/SSLEngineImpl/EmptyExtensionData.java ! test/jdk/sun/security/ssl/SSLEngineImpl/EngineEnforceUseClientMode.java ! test/jdk/sun/security/ssl/SSLEngineImpl/RehandshakeFinished.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineDeadlock.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineFailedALPN.java ! test/jdk/sun/security/ssl/SSLEngineImpl/SSLEngineKeyLimit.java ! test/jdk/sun/security/ssl/SSLEngineImpl/TLS13BeginHandshake.java ! test/jdk/sun/security/ssl/SSLSessionImpl/HashCodeMissing.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClient.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClientStateless.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServer.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServerStateless.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumptionUpdateBoundValues.java Changeset: fdbfc8a7 Author: Viktor Klang Committer: Roger Riggs Date: 2023-05-09 15:37:23 +0000 URL: https://git.openjdk.org/loom/commit/fdbfc8a73b4507d31ec4f9252298ad708a0b6bf9 8133773: clarify specification of Spliterator.tryAdvance Reviewed-by: psandoz, tvaleev, rriggs ! src/java.base/share/classes/java/util/Spliterator.java Changeset: 44fa12e7 Author: Xue-Lei Andrew Fan Date: 2023-05-09 15:49:28 +0000 URL: https://git.openjdk.org/loom/commit/44fa12e7511a0b08999c1f1fb7da33bc6578b183 8303830: update for deprecated sprintf for jdk.accessibility Reviewed-by: kizune ! src/jdk.accessibility/windows/native/common/AccessBridgeDebug.cpp ! src/jdk.accessibility/windows/native/jaccessinspector/jaccessinspector.cpp ! src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeEventHandler.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeJavaVMInstance.cpp ! src/jdk.accessibility/windows/native/libwindowsaccessbridge/WinAccessBridge.cpp ! src/jdk.accessibility/windows/native/toolscommon/AccessInfo.cpp Changeset: 3aff5eac Author: Leonid Mesnik Date: 2023-05-09 16:36:21 +0000 URL: https://git.openjdk.org/loom/commit/3aff5eacbd90cc5fc791c9c96b8d114caee9ddb5 8307486: ProcessTools.java should wait until vthread is completed before checking exceptions Reviewed-by: dholmes, alanb ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 82bcee76 Author: Justin Lu Date: 2023-05-09 17:15:06 +0000 URL: https://git.openjdk.org/loom/commit/82bcee76ea6f5a0624c3ed1d7e4a262d59bfbe37 8159337: Introduce a method in Locale class to return the language tags as per RFC 5646 convention Reviewed-by: naoto, rriggs ! src/java.base/share/classes/java/util/Locale.java ! src/java.base/share/classes/sun/util/locale/LanguageTag.java + test/jdk/java/util/Locale/CaseFoldLanguageTagTest.java Changeset: dde557e3 Author: Thiago Henrique H?pner Committer: Adam Sotona Date: 2023-05-09 17:33:27 +0000 URL: https://git.openjdk.org/loom/commit/dde557e312d4b8eaa9e01166329daa0fac488691 8304148: Remapping a class with Invokedynamic constant loses static bootstrap arguments Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/components/ClassRemapper.java ! test/jdk/jdk/classfile/AdvancedTransformationsTest.java Changeset: 7f05f6f7 Author: Leonid Mesnik Date: 2023-05-09 18:06:40 +0000 URL: https://git.openjdk.org/loom/commit/7f05f6f7c77c10dd2aed291af20664c9130e35f9 8307307: Improve ProcessTools.java to don't try to run Virtual wrapper for incompatible processes Reviewed-by: alanb ! test/jdk/ProblemList-Virtual.txt ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 98294242 Author: Alisen Chung Date: 2023-05-09 19:14:12 +0000 URL: https://git.openjdk.org/loom/commit/98294242a94c611e2a713c2d520e59dd873ae4a0 8307128: Open source some drag and drop tests 4 Reviewed-by: prr + test/jdk/java/awt/dnd/MouseExitGestureTriggerTest.java + test/jdk/java/awt/dnd/MozillaDnDTest.java + test/jdk/java/awt/dnd/MultiDataFlavorDropTest.java + test/jdk/java/awt/dnd/NativeDragJavaDropTest.java + test/jdk/java/awt/dnd/NestedHeavyweightDropTargetTest.java Changeset: 723582c5 Author: Alisen Chung Date: 2023-05-09 19:30:50 +0000 URL: https://git.openjdk.org/loom/commit/723582c524c62ee73f7984a53b046f8832b23a7f 8306881: Update FreeType to 2.13.0 Reviewed-by: prr, dnguyen ! src/java.desktop/share/legal/freetype.md ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/integer-types.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/mac-support.h ! src/java.desktop/share/native/libfreetype/include/freetype/config/public-macros.h ! src/java.desktop/share/native/libfreetype/include/freetype/freetype.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftadvanc.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftbitmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftcid.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h ! src/java.desktop/share/native/libfreetype/include/freetype/fterrdef.h ! src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftfntfmt.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftgasp.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftincrem.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlcdfil.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlist.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftlogging.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmac.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmoderr.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsizes.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsnames.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftstroke.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsynth.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftsystem.h ! src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h ! src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/cffotypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/cfftypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/compiler-macros.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdebug.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h + src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmmtypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftrfork.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/pshints.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svbdf.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcid.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svfntfmt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgxval.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svkern.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmetric.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svotval.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpfr.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpostnm.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpscmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpsinfo.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svsfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttcmap.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svtteng.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttglyf.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svwinfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/svginterface.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/wofftypes.h ! src/java.desktop/share/native/libfreetype/include/freetype/otsvg.h ! src/java.desktop/share/native/libfreetype/include/freetype/t1tables.h ! src/java.desktop/share/native/libfreetype/include/freetype/ttnameid.h ! src/java.desktop/share/native/libfreetype/include/freetype/tttables.h ! src/java.desktop/share/native/libfreetype/include/freetype/tttags.h ! src/java.desktop/share/native/libfreetype/include/ft2build.h ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.c ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.h ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin ! src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c ! src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h ! src/java.desktop/share/native/libfreetype/src/autofit/afcover.h ! src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c ! src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h ! src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h ! src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c ! src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h ! src/java.desktop/share/native/libfreetype/src/autofit/afhints.c ! src/java.desktop/share/native/libfreetype/src/autofit/afhints.h ! src/java.desktop/share/native/libfreetype/src/autofit/afindic.c ! src/java.desktop/share/native/libfreetype/src/autofit/afindic.h ! src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c ! src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h ! src/java.desktop/share/native/libfreetype/src/autofit/afloader.c ! src/java.desktop/share/native/libfreetype/src/autofit/afloader.h ! src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c ! src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h ! src/java.desktop/share/native/libfreetype/src/autofit/afranges.c ! src/java.desktop/share/native/libfreetype/src/autofit/afranges.h ! src/java.desktop/share/native/libfreetype/src/autofit/afscript.h ! src/java.desktop/share/native/libfreetype/src/autofit/afshaper.c ! src/java.desktop/share/native/libfreetype/src/autofit/afshaper.h ! src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h ! src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h ! src/java.desktop/share/native/libfreetype/src/autofit/afws-decl.h ! src/java.desktop/share/native/libfreetype/src/autofit/afws-iter.h ! src/java.desktop/share/native/libfreetype/src/base/ftadvanc.c ! src/java.desktop/share/native/libfreetype/src/base/ftbase.h ! src/java.desktop/share/native/libfreetype/src/base/ftbbox.c ! src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c ! src/java.desktop/share/native/libfreetype/src/base/ftcalc.c ! src/java.desktop/share/native/libfreetype/src/base/ftcid.c ! src/java.desktop/share/native/libfreetype/src/base/ftcolor.c ! src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c ! src/java.desktop/share/native/libfreetype/src/base/ftdebug.c ! src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c ! src/java.desktop/share/native/libfreetype/src/base/ftfstype.c ! src/java.desktop/share/native/libfreetype/src/base/ftgasp.c ! src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c ! src/java.desktop/share/native/libfreetype/src/base/ftglyph.c ! src/java.desktop/share/native/libfreetype/src/base/ftinit.c ! src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c ! src/java.desktop/share/native/libfreetype/src/base/ftmac.c ! src/java.desktop/share/native/libfreetype/src/base/ftmm.c ! src/java.desktop/share/native/libfreetype/src/base/ftobjs.c ! src/java.desktop/share/native/libfreetype/src/base/ftoutln.c ! src/java.desktop/share/native/libfreetype/src/base/ftpatent.c ! src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c ! src/java.desktop/share/native/libfreetype/src/base/ftrfork.c ! src/java.desktop/share/native/libfreetype/src/base/ftsnames.c ! src/java.desktop/share/native/libfreetype/src/base/ftstream.c ! src/java.desktop/share/native/libfreetype/src/base/ftstroke.c ! src/java.desktop/share/native/libfreetype/src/base/ftsynth.c ! src/java.desktop/share/native/libfreetype/src/base/ftsystem.c ! src/java.desktop/share/native/libfreetype/src/base/fttrigon.c ! src/java.desktop/share/native/libfreetype/src/base/fttype1.c ! src/java.desktop/share/native/libfreetype/src/base/ftutil.c ! src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c ! src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h ! src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c ! src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h ! src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h ! src/java.desktop/share/native/libfreetype/src/cff/cffgload.c ! src/java.desktop/share/native/libfreetype/src/cff/cffgload.h ! src/java.desktop/share/native/libfreetype/src/cff/cffload.c ! src/java.desktop/share/native/libfreetype/src/cff/cffload.h ! src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c ! src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.c ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.h ! src/java.desktop/share/native/libfreetype/src/cff/cfftoken.h ! src/java.desktop/share/native/libfreetype/src/cid/ciderrs.h ! src/java.desktop/share/native/libfreetype/src/cid/cidgload.c ! src/java.desktop/share/native/libfreetype/src/cid/cidgload.h ! src/java.desktop/share/native/libfreetype/src/cid/cidload.c ! src/java.desktop/share/native/libfreetype/src/cid/cidload.h ! src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c ! src/java.desktop/share/native/libfreetype/src/cid/cidobjs.h ! src/java.desktop/share/native/libfreetype/src/cid/cidparse.c ! src/java.desktop/share/native/libfreetype/src/cid/cidparse.h ! src/java.desktop/share/native/libfreetype/src/cid/cidriver.c ! src/java.desktop/share/native/libfreetype/src/cid/cidriver.h ! src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h ! src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c ! src/java.desktop/share/native/libfreetype/src/psaux/afmparse.h ! src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.c ! src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h ! src/java.desktop/share/native/libfreetype/src/psaux/psauxerr.h ! src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.c ! src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h ! src/java.desktop/share/native/libfreetype/src/psaux/psconv.c ! src/java.desktop/share/native/libfreetype/src/psaux/psconv.h ! src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h ! src/java.desktop/share/native/libfreetype/src/psaux/psft.c ! src/java.desktop/share/native/libfreetype/src/psaux/psglue.h ! src/java.desktop/share/native/libfreetype/src/psaux/pshints.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h ! src/java.desktop/share/native/libfreetype/src/psaux/psstack.h ! src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.c ! src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.h ! src/java.desktop/share/native/libfreetype/src/psaux/t1decode.c ! src/java.desktop/share/native/libfreetype/src/psaux/t1decode.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h ! src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c ! src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h ! src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c ! src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h ! src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h ! src/java.desktop/share/native/libfreetype/src/psnames/pstables.h ! src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h ! src/java.desktop/share/native/libfreetype/src/raster/ftraster.c ! src/java.desktop/share/native/libfreetype/src/raster/ftraster.h ! src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c ! src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h ! src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h ! src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c ! src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.h ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff2.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff2.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h ! src/java.desktop/share/native/libfreetype/src/sfnt/woff2tags.c ! src/java.desktop/share/native/libfreetype/src/sfnt/woff2tags.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h ! src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h ! src/java.desktop/share/native/libfreetype/src/type1/t1afm.c ! src/java.desktop/share/native/libfreetype/src/type1/t1afm.h ! src/java.desktop/share/native/libfreetype/src/type1/t1driver.c ! src/java.desktop/share/native/libfreetype/src/type1/t1driver.h ! src/java.desktop/share/native/libfreetype/src/type1/t1errors.h ! src/java.desktop/share/native/libfreetype/src/type1/t1gload.c ! src/java.desktop/share/native/libfreetype/src/type1/t1gload.h ! src/java.desktop/share/native/libfreetype/src/type1/t1load.c ! src/java.desktop/share/native/libfreetype/src/type1/t1load.h ! src/java.desktop/share/native/libfreetype/src/type1/t1objs.c ! src/java.desktop/share/native/libfreetype/src/type1/t1objs.h ! src/java.desktop/share/native/libfreetype/src/type1/t1parse.c ! src/java.desktop/share/native/libfreetype/src/type1/t1parse.h ! src/java.desktop/share/native/libfreetype/src/type1/t1tokens.h Changeset: 356667f1 Author: Roger Riggs Date: 2023-05-09 20:51:33 +0000 URL: https://git.openjdk.org/loom/commit/356667f1559396b09e0b830d92978f2ea7a9300b 8307466: java.time.Instant calculation bug in until and between methods Co-authored-by: Raffaello Giulietti Reviewed-by: scolebourne, naoto ! src/java.base/share/classes/java/time/Instant.java ! test/jdk/java/time/tck/java/time/TCKInstant.java Changeset: a1c3adb8 Author: Leonid Mesnik Date: 2023-05-09 21:03:25 +0000 URL: https://git.openjdk.org/loom/commit/a1c3adb88dee8179c41ac9b41f768ff3db6d2ca8 8307370: Add tier1 testing with thread factory in CI Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt Changeset: f5a6b7f7 Author: Alex Menkov Date: 2023-05-09 21:14:17 +0000 URL: https://git.openjdk.org/loom/commit/f5a6b7f7c03c00c96d0055f9be31057675205e13 8306027: Clarify JVMTI heap functions spec about virtual thread stack. Reviewed-by: alanb, sspitsyn ! src/hotspot/share/prims/jvmti.xml Changeset: 2be1f10f Author: Serguei Spitsyn Date: 2023-05-10 01:48:03 +0000 URL: https://git.openjdk.org/loom/commit/2be1f10fec37057a4532fbbc3467b41240c4dba9 8307399: get rid of compatibility ThreadStart/ThreadEnd events for virtual threads Reviewed-by: alanb, pchilanomate, cjplummer ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/runtime/globals.hpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VirtualThreadStartTest/VirtualThreadStartTest.java ! test/hotspot/jtreg/serviceability/jvmti/vthread/VirtualThreadStartTest/libVirtualThreadStartTest.cpp Changeset: d3e6d04e Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-10 03:10:31 +0000 URL: https://git.openjdk.org/loom/commit/d3e6d04e3eddfd26433f9cb95cfa9bff05b14bd6 8307651: RISC-V: stringL_indexof_char instruction has wrong format string Reviewed-by: fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 4b4c80bb Author: Tobias Hotz Committer: Tobias Hartmann Date: 2023-05-10 05:48:02 +0000 URL: https://git.openjdk.org/loom/commit/4b4c80bb3171c0ab3377f1cbf62a62289ef55817 8307351: (CmpI/L(AndI/L reg1 reg2)) on x86 can be optimized Reviewed-by: sviswanathan, qamai, thartmann ! src/hotspot/cpu/x86/x86_64.ad + test/micro/org/openjdk/bench/vm/compiler/x86/AndCmpTestInstruction.java Changeset: d993432d Author: Fredrik Bredberg Committer: Stefan Karlsson Date: 2023-05-10 07:55:11 +0000 URL: https://git.openjdk.org/loom/commit/d993432d448d5f25c49640a8c22a6a95b5055fe4 8306930: Incorrect assert in BitMap::count_one_bits Reviewed-by: stefank, tschatzl, kbarrett ! src/hotspot/share/utilities/bitMap.cpp Changeset: 540c706b Author: Oli Gillespie Committer: Aleksey Shipilev Date: 2023-05-10 08:54:18 +0000 URL: https://git.openjdk.org/loom/commit/540c706bbcbb809ae1304aac4f2a16a5e83cb458 8307348: Parallelize heap walk for ObjectCount(AfterGC) JFR event collection Reviewed-by: shade, ayang, tschatzl ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/shared/gcTrace.cpp ! src/hotspot/share/gc/shared/gcTrace.hpp ! src/hotspot/share/gc/shared/gcVMOperations.cpp ! src/hotspot/share/memory/heapInspection.cpp ! src/hotspot/share/memory/heapInspection.hpp Changeset: da2c9302 Author: Aleksei Efimov Date: 2023-05-10 09:39:00 +0000 URL: https://git.openjdk.org/loom/commit/da2c9302628886bbdb4cf588f8275c4a44ff5ac9 8302845: Replace finalizer usage in JNDI DNS provider with Cleaner Reviewed-by: alanb, dfuchs, djelinski ! src/java.base/share/classes/module-info.java ! src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsClient.java ! src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsContext.java Changeset: 4aa65cbe Author: Jim Laskey Date: 2023-05-10 11:34:01 +0000 URL: https://git.openjdk.org/loom/commit/4aa65cbeefe44f29fbe6ea013809dcee579df9ff 8285932: Implementation of JEP 430 String Templates (Preview) Reviewed-by: mcimadamore, rriggs, darcy ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/StringConcatHelper.java + src/java.base/share/classes/java/lang/StringTemplate.java ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java + src/java.base/share/classes/java/lang/runtime/Carriers.java + src/java.base/share/classes/java/lang/runtime/ReferenceKey.java + src/java.base/share/classes/java/lang/runtime/ReferencedKeyMap.java + src/java.base/share/classes/java/lang/runtime/StringTemplateImpl.java + src/java.base/share/classes/java/lang/runtime/StringTemplateImplFactory.java + src/java.base/share/classes/java/lang/runtime/TemplateRuntime.java + src/java.base/share/classes/java/lang/runtime/TemplateSupport.java + src/java.base/share/classes/java/util/Digits.java + src/java.base/share/classes/java/util/FormatItem.java + src/java.base/share/classes/java/util/FormatProcessor.java ! src/java.base/share/classes/java/util/Formatter.java + src/java.base/share/classes/java/util/FormatterBuilder.java ! src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java + src/java.base/share/classes/jdk/internal/access/JavaTemplateAccess.java ! src/java.base/share/classes/jdk/internal/access/SharedSecrets.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java + src/java.base/share/classes/jdk/internal/util/FormatConcatItem.java ! src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java + src/jdk.compiler/share/classes/com/sun/source/tree/StringTemplateTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/CompileStates.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java + src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransLiterals.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Lexer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Tokens.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java + test/jdk/java/lang/String/concat/MakeConcatWithTemplate.java + test/jdk/java/lang/runtime/CarriersTest.java + test/jdk/java/lang/runtime/ReferencedKeyTest.java + test/jdk/java/lang/template/Basic.java + test/jdk/java/lang/template/FormatterBuilder.java + test/jdk/java/lang/template/StringTemplateTest.java ! test/langtools/jdk/jshell/CompletenessTest.java ! test/langtools/tools/javac/api/TestJavacTaskScanner.java + test/langtools/tools/javac/diags/examples/StringTemplate.java + test/langtools/tools/javac/diags/examples/StringTemplateNoProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateNotProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateRawProcessor.java + test/langtools/tools/javac/diags/examples/StringTemplateUnclosedString.java + test/langtools/tools/javac/diags/examples/StringTemplateUnclosedTextBlock.java ! test/langtools/tools/javac/parser/JavacParserTest.java + test/langtools/tools/javac/template/Basic.java + test/langtools/tools/javac/template/TreeScannerTest.java ! test/langtools/tools/javac/tree/TreeKindTest.java + test/micro/org/openjdk/bench/java/lang/StringTemplateFMT.java Changeset: 0da48f19 Author: Johannes Bechberger Committer: Daniel Jeli?ski Date: 2023-05-10 12:13:22 +0000 URL: https://git.openjdk.org/loom/commit/0da48f19cbebe0730d689cb966b886f6f73fb3f1 8307732: build-test-lib is broken Reviewed-by: erikj, djelinski ! make/test/BuildTestLib.gmk ! test/lib/jdk/test/lib/net/HttpHeaderParser.java Changeset: ab34cb98 Author: Afshin Zafari Committer: Coleen Phillimore Date: 2023-05-10 12:20:00 +0000 URL: https://git.openjdk.org/loom/commit/ab34cb98c8410dee9900f75fe487a094c51821a2 8305082: Remove finalize() from test/hotspot/jtreg/runtime/linkResolver/InterfaceObjectTest.java Reviewed-by: coleenp, dholmes ! test/hotspot/jtreg/runtime/linkResolver/InterfaceObj.jasm ! test/hotspot/jtreg/runtime/linkResolver/InterfaceObjectTest.java Changeset: 4251b562 Author: Coleen Phillimore Date: 2023-05-10 12:32:06 +0000 URL: https://git.openjdk.org/loom/commit/4251b56214a6af6c307a473c7ba13482ad3109e2 8306843: JVMTI tag map extremely slow after JDK-8292741 Reviewed-by: sspitsyn, iklam ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp ! src/hotspot/share/prims/jvmtiTagMapTable.cpp ! src/hotspot/share/prims/jvmtiTagMapTable.hpp ! src/hotspot/share/utilities/resizeableResourceHash.hpp ! src/hotspot/share/utilities/resourceHash.hpp + test/hotspot/jtreg/serviceability/jvmti/SetTag/TagMapTest.java + test/hotspot/jtreg/serviceability/jvmti/SetTag/libTagMapTest.cpp Changeset: cc396895 Author: Johan Sj?len Date: 2023-05-10 12:35:21 +0000 URL: https://git.openjdk.org/loom/commit/cc396895e5a1dac49f4e341ce91c04b8c092d0af 8300245: Replace NULL with nullptr in share/jfr/ Reviewed-by: mgronlun, coleenp ! src/hotspot/share/jfr/dcmd/jfrDcmds.cpp ! src/hotspot/share/jfr/dcmd/jfrDcmds.hpp ! src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp ! src/hotspot/share/jfr/instrumentation/jfrJvmtiAgent.cpp ! src/hotspot/share/jfr/jni/jfrJavaCall.cpp ! src/hotspot/share/jfr/jni/jfrJavaSupport.cpp ! src/hotspot/share/jfr/jni/jfrJniMethod.cpp ! src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp ! src/hotspot/share/jfr/jni/jfrUpcalls.cpp ! src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeQueue.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp ! src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp ! src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleDescription.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleWriter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp ! src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSample.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/sampleList.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/samplePriorityQueue.cpp ! src/hotspot/share/jfr/leakprofiler/utilities/rootType.cpp ! src/hotspot/share/jfr/leakprofiler/utilities/unifiedOopRef.inline.hpp ! src/hotspot/share/jfr/periodic/jfrFinalizerStatisticsEvent.cpp ! src/hotspot/share/jfr/periodic/jfrModuleEvent.cpp ! src/hotspot/share/jfr/periodic/jfrNetworkUtilization.cpp ! src/hotspot/share/jfr/periodic/jfrOSInterface.cpp ! src/hotspot/share/jfr/periodic/jfrPeriodic.cpp ! src/hotspot/share/jfr/periodic/jfrThreadCPULoadEvent.cpp ! src/hotspot/share/jfr/periodic/sampling/jfrCallTrace.cpp ! src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadState.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadState.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSetUtils.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSetUtils.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdBits.inline.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdKlassQueue.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdLoadBarrier.inline.hpp ! src/hotspot/share/jfr/recorder/jfrRecorder.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunkRotation.cpp ! src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp ! src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp ! src/hotspot/share/jfr/recorder/repository/jfrRepository.cpp ! src/hotspot/share/jfr/recorder/service/jfrEventThrottler.cpp ! src/hotspot/share/jfr/recorder/service/jfrMemorySizer.cpp ! src/hotspot/share/jfr/recorder/service/jfrOptionSet.cpp ! src/hotspot/share/jfr/recorder/service/jfrPostBox.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderThread.cpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderThreadLoop.cpp ! src/hotspot/share/jfr/recorder/stacktrace/jfrStackTrace.cpp ! src/hotspot/share/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp ! src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp ! src/hotspot/share/jfr/recorder/storage/jfrEpochStorage.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrFullStorage.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrMemorySpaceRetrieval.hpp ! src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp ! src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.hpp ! src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrVirtualMemory.cpp ! src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp ! src/hotspot/share/jfr/support/jfrAdaptiveSampler.cpp ! src/hotspot/share/jfr/support/jfrFlush.cpp ! src/hotspot/share/jfr/support/jfrIntrinsics.cpp ! src/hotspot/share/jfr/support/jfrJdkJfrEvent.cpp ! src/hotspot/share/jfr/support/jfrKlassUnloading.cpp ! src/hotspot/share/jfr/support/jfrMethodLookup.cpp ! src/hotspot/share/jfr/support/jfrObjectAllocationSample.cpp ! src/hotspot/share/jfr/support/jfrStackTraceMark.cpp ! src/hotspot/share/jfr/support/jfrSymbolTable.cpp ! src/hotspot/share/jfr/support/jfrSymbolTable.hpp ! src/hotspot/share/jfr/support/jfrThreadLocal.cpp ! src/hotspot/share/jfr/support/jfrThreadLocal.hpp ! src/hotspot/share/jfr/utilities/jfrAllocation.cpp ! src/hotspot/share/jfr/utilities/jfrBigEndian.hpp ! src/hotspot/share/jfr/utilities/jfrBlob.cpp ! src/hotspot/share/jfr/utilities/jfrConcurrentLinkedListHost.hpp ! src/hotspot/share/jfr/utilities/jfrConcurrentLinkedListHost.inline.hpp ! src/hotspot/share/jfr/utilities/jfrConcurrentQueue.inline.hpp ! src/hotspot/share/jfr/utilities/jfrDoublyLinkedList.hpp ! src/hotspot/share/jfr/utilities/jfrEpochQueue.inline.hpp ! src/hotspot/share/jfr/utilities/jfrHashtable.hpp ! src/hotspot/share/jfr/utilities/jfrIterator.hpp ! src/hotspot/share/jfr/utilities/jfrJavaLog.cpp ! src/hotspot/share/jfr/utilities/jfrLinkedList.inline.hpp ! src/hotspot/share/jfr/utilities/jfrNode.hpp ! src/hotspot/share/jfr/utilities/jfrPredicate.hpp ! src/hotspot/share/jfr/utilities/jfrRandom.inline.hpp ! src/hotspot/share/jfr/utilities/jfrRefCountPointer.hpp ! src/hotspot/share/jfr/utilities/jfrRelation.hpp ! src/hotspot/share/jfr/utilities/jfrResourceManager.hpp ! src/hotspot/share/jfr/utilities/jfrSpinlockHelper.hpp ! src/hotspot/share/jfr/utilities/jfrThreadIterator.cpp ! src/hotspot/share/jfr/utilities/jfrVersionSystem.inline.hpp ! src/hotspot/share/jfr/writers/jfrEncoders.hpp ! src/hotspot/share/jfr/writers/jfrEncoding.hpp ! src/hotspot/share/jfr/writers/jfrJavaEventWriter.cpp ! src/hotspot/share/jfr/writers/jfrMemoryWriterHost.inline.hpp ! src/hotspot/share/jfr/writers/jfrPosition.inline.hpp ! src/hotspot/share/jfr/writers/jfrStorageAdapter.hpp ! src/hotspot/share/jfr/writers/jfrStorageHost.inline.hpp ! src/hotspot/share/jfr/writers/jfrTypeWriterHost.hpp ! src/hotspot/share/jfr/writers/jfrWriterHost.inline.hpp Changeset: 1bca05ea Author: Daniel D. Daugherty Date: 2023-05-10 14:40:56 +0000 URL: https://git.openjdk.org/loom/commit/1bca05eace5c4622a1fd596f4ed196495a8801e4 8307799: Newly added java/awt/dnd/MozillaDnDTest.java has invalid jtreg `@requires` clause Reviewed-by: rriggs, azvegint ! test/jdk/java/awt/dnd/MozillaDnDTest.java Changeset: 0198afca Author: Archie Cobbs Committer: Brian Burkhalter Date: 2023-05-10 16:24:00 +0000 URL: https://git.openjdk.org/loom/commit/0198afca3ac1a7c421b0669ae2180eee3e4f1482 8305748: Clarify reentrant behavior of close() in FileInputStream, FileOutputStream, and RandomAccessFile Reviewed-by: alanb, bpb ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java Changeset: 8a95020a Author: Viktor Klang Committer: Paul Sandoz Date: 2023-05-10 16:29:34 +0000 URL: https://git.openjdk.org/loom/commit/8a95020ab6c61f25954a56e1965529bb2f6f58af 8151531: Add notes to BaseStream.spliterator/iterator docs regarding them being escape hatches Reviewed-by: psandoz ! src/java.base/share/classes/java/util/stream/BaseStream.java Changeset: 9af1787e Author: Kevin Walls Date: 2023-05-10 16:44:49 +0000 URL: https://git.openjdk.org/loom/commit/9af1787ebe842bcfbf4a03a9deefe19bbd1ee87d 8307244: Remove redundant class RMIIIOPServerImpl Reviewed-by: sspitsyn, dfuchs, alanb ! src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnector.java - src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIIIOPServerImpl.java Changeset: 1964954d Author: Jiangli Zhou Date: 2023-05-10 17:26:02 +0000 URL: https://git.openjdk.org/loom/commit/1964954da9ac1d020e0b5ba35893f475d86ec909 8307194: Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries Reviewed-by: erikj, sgehwolf ! make/GraalBuilderImage.gmk ! make/Main.gmk ! make/StaticLibsImage.gmk ! make/autoconf/spec.gmk.in ! make/common/NativeCompilation.gmk ! make/hotspot/lib/CompileJvm.gmk ! make/modules/java.base/lib/CoreLibraries.gmk ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: 26883648 Author: Chris Plummer Date: 2023-05-10 19:09:24 +0000 URL: https://git.openjdk.org/loom/commit/268836482d0688bd1952bf634ceee4463dfca66f 8306758: com/sun/jdi/ConnectedVMs.java fails with "Non-zero debuggee exitValue: 143" Reviewed-by: amenkov, sspitsyn ! test/jdk/com/sun/jdi/ConnectedVMs.java ! test/jdk/com/sun/jdi/InstTarg.java ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: df90df29 Author: Daniel D. Daugherty Date: 2023-05-10 19:38:24 +0000 URL: https://git.openjdk.org/loom/commit/df90df298e4183f5328b88ff0af91ba96fb2510d 8307857: validate-source fails after JDK-8306758 Reviewed-by: rriggs, cjplummer ! test/jdk/com/sun/jdi/InstTarg.java Changeset: edc4adb7 Author: Daniel D. Daugherty Date: 2023-05-10 21:08:28 +0000 URL: https://git.openjdk.org/loom/commit/edc4adb77e755b8076c0ab85acab313384397428 8307860: [BACKOUT] JDK-8307194 Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries Reviewed-by: erikj ! make/GraalBuilderImage.gmk ! make/Main.gmk ! make/StaticLibsImage.gmk ! make/autoconf/spec.gmk.in ! make/common/NativeCompilation.gmk ! make/hotspot/lib/CompileJvm.gmk ! make/modules/java.base/lib/CoreLibraries.gmk ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: cc9f7ad9 Author: Ashutosh Mehra Committer: Ioi Lam Date: 2023-05-10 21:51:36 +0000 URL: https://git.openjdk.org/loom/commit/cc9f7ad9ce33dc44d335fb7fb5483795c62ba936 8307765: DynamicArchiveHeader contents are missing in CDS mapfile Reviewed-by: iklam, ccheung ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/dynamicArchive.hpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/cds/filemap.hpp From mark.reinhold at oracle.com Thu May 11 13:11:57 2023 From: mark.reinhold at oracle.com (Mark Reinhold) Date: Thu, 11 May 2023 13:11:57 +0000 Subject: New candidate JEP: 453: Structured Concurrency (Preview) Message-ID: <20230511131155.442BB5D50C6@eggemoggin.niobe.net> https://openjdk.org/jeps/453 Summary: Simplify concurrent programming by introducing an API for structured concurrency. Structured concurrency treats groups of related tasks running in different threads as a single unit of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability. This is a preview API. - Mark From ron.pressler at oracle.com Thu May 11 13:18:48 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Thu, 11 May 2023 13:18:48 +0000 Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <6440C55D-C331-42C7-AD4A-6D3FC15F2E5F@oracle.com> <1933780198.52268051.1683671907182.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > On 11 May 2023, at 03:06, Alex Otenko wrote: > > :) define "hard". Because the hard bit is "just" creating a subclass of something or other. > > On Thu, 11 May 2023, 00:36 Ron Pressler, wrote: Could you be more specific? In what situations did you need to create your own subclass and what difficulties did you encounter when doing that? ? Ron From forax at univ-mlv.fr Thu May 11 13:24:17 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Thu, 11 May 2023 15:24:17 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> > From: "Ron Pressler" > To: "Remi Forax" > Cc: "Alan Bateman" , "loom-dev" > > Sent: Thursday, May 11, 2023 1:36:07 AM > Subject: Re: Structured Concurrency yet again >> On 10 May 2023, at 17:46, [ mailto:forax at univ-mlv.fr | >> forax at univ-mlv.fr ] wrote: >> Yes, but Go channels also do O(N) wakeups in the worst case (sometimes you can >> pump several results in one wakeup) and nobody complain. > Channels aren?t Go?s structured concurrency construct, errgroups are, and they > block once (at least their API suggests that). Errgroup is a special construct that is the equivalent of STS.ShutdownOnFailure (you can also implement ShutdownOnSucess because there is a method cancel() (the equivalent of shutdown())). Errgroup does not have to cover all scenarios because in Go you can always fallback on using channels. Errgroup is a nice structured concurrency API for some special cases while channels is the more general API. In term of typing, Errgroup is not better than STS.ShutdownOnFailure because both erase the type of the error/exception. Note that errgroup what developed before go had generics. I believe STS should not focus only on the special cases STS.ShutdownOnFailure and STS.ShutdownOnSucess, but also provides a thread safe way to implement most of the general cases. What i am proposing cover all scenarios that could be implemented by a channel with multiple writers but only one reader. For those cases, I believe that the a join(Function) is a better API than the channel API because it is a structured concurrency API and it's also better than letting users to write a poor man implementation of channels as a subclass of STS. >> What i'm proposing is just a glorified blocking queue + a spliterator but it >> allows to implement any logic more easily. > Channels are something we?re interested in, but as an orthogonal feature to ? > putting it very simply ? solve the ?blocking queue closing? problem (and > perhaps some others, such as distributed implementation, easy functional > transformations). yes, what i'm saying is not that we need channels, as you said it's an orthogonal feature, what i'm saying is that there is a category of problem that could be solved by a channel with multiple writers and only one reader, for those problem, we can also provide a structured concurrency API. >> You're aware that I have demonstrated the Java 19 version of STS to numerous >> conference attendees. However, the requirement to create custom subclasses is >> often a point of confusion for them. Many existing APIs attempt to separate the >> concurrency aspect, which is managed by the implementation, from the business >> logic that users should focus on. >> I believe the current incarnation of STS is falling short. > Can you please try to clearly identify the problem you?re trying to solve? E.g. > doing X well with STS is hard Doing anything which is not shutdown on failure/shutdown on success is hard with STS because STS does not help users to write a correct thread safe implementation of a subclass of STS that overrides handleComplete(). > ? Ron R?mi -------------- next part -------------- An HTML attachment was scrubbed... URL: From josiahnoel at gmail.com Thu May 11 13:32:35 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Thu, 11 May 2023 09:32:35 -0400 Subject: Structured Concurrency yet again In-Reply-To: <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On Thu, May 11, 2023 at 9:24?AM wrote: > > Doing anything which is not shutdown on failure/shutdown on success is > hard with STS because STS does not help users to write a correct thread > safe implementation of a subclass of STS that overrides handleComplete(). > See, I also don't think I'm picking up what you're putting down. Can you help me understand for what reason you'd need to do something else? Saying "anything" is too abstract for me. -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Thu May 11 13:44:22 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Thu, 11 May 2023 15:44:22 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <822466347.53692073.1683812662474.JavaMail.zimbra@univ-eiffel.fr> > From: "Josiah Noel" > To: "Remi Forax" > Cc: "Ron Pressler" , "Alan Bateman" > , "loom-dev" > Sent: Thursday, May 11, 2023 3:32:35 PM > Subject: Re: Structured Concurrency yet again > On Thu, May 11, 2023 at 9:24 AM < [ mailto:forax at univ-mlv.fr | forax at univ-mlv.fr > ] > wrote: >> Doing anything which is not shutdown on failure/shutdown on success is hard with >> STS because STS does not help users to write a correct thread safe >> implementation of a subclass of STS that overrides handleComplete(). > See, I also don't think I'm picking up what you're putting down. Can you help me > understand for what reason you'd need to do something else? Saying "anything" > is too abstract for me. Hi Josiah, I provide an example in a previous email of this thread [ https://mail.openjdk.org/pipermail/loom-dev/2023-May/005524.html | https://mail.openjdk.org/pipermail/loom-dev/2023-May/005524.html ] R?mi -------------- next part -------------- An HTML attachment was scrubbed... URL: From ron.pressler at oracle.com Thu May 11 13:55:13 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Thu, 11 May 2023 13:55:13 +0000 Subject: Structured Concurrency yet again In-Reply-To: <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <8d03bf93-2a30-d07e-27a9-d6b11c1a0344@oracle.com> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <2E4D82E3-5BA4-43CA-90B1-FD2BCA1328D1@oracle.com> > On 11 May 2023, at 09:24, forax at univ-mlv.fr wrote: > > > Errgroup is a special construct that is the equivalent of STS.ShutdownOnFailure (you can also implement ShutdownOnSucess because there is a method cancel() (the equivalent of shutdown())). > Errgroup does not have to cover all scenarios because in Go you can always fallback on using channels. Errgroup is a nice structured concurrency API for some special cases while channels is the more general API. I?m not sure I see how channels generalise SC, but we?d like to have channels too, and in the meantime we have all of the existing classing in j.u.c at our disposal. The real low-level mechanism underneath STS is the ThreadFlock ? as that?s what integrates with observability ? and we?d like to expose that, too, eventually. > > In term of typing, Errgroup is not better than STS.ShutdownOnFailure because both erase the type of the error/exception. Note that errgroup what developed before go had generics. What do you mean by *the* type? In many (most?) fan-out situations, tasks even have different *return* types. > > I believe STS should not focus only on the special cases STS.ShutdownOnFailure and STS.ShutdownOnSucess, but also provides a thread safe way to implement most of the general cases. Again, before proposing something, I need to understand what problem you?re trying to solve. Without articulating the problem it?s very hard to evaluate solutions for it. > What i am proposing cover all scenarios that could be implemented by a channel with multiple writers but only one reader. For those cases, I believe that the a join(Function) is a better API than the channel API because it is a structured concurrency API and it's also better than letting users to write a poor man implementation of channels as a subclass of STS. > what i'm saying is not that we need channels, as you said it's an orthogonal feature, what i'm saying is that there is a category of problem that could be solved by a channel with multiple writers and only one reader, for those problem, we can also provide a structured concurrency API. Isn?t join(Function), why t that something that a subclass of STS couldn?t offer? Isn?t it a matter of identifying a third common use-case (that solves a problem we?ve yet to articulate) beyond SutdownOnFailure/Success and offering a third built-in policy? > > Doing anything which is not shutdown on failure/shutdown on success is hard with STS because STS does not help users to write a correct thread safe implementation of a subclass of STS that overrides handleComplete(). 1. How common is ?anything that isn?t SoF/SoS?? Are you saying, wouldn?t It be nice to also offer convenience policies for some less-but-still-common use cases, or are you saying there?s a fundamental problem with the design of STS and, as a result, it doesn?t address some of the most common cases? If it?s the former, then perhaps we should wait and see which use cases pose a particular problem to users so we could better design a solution to fit the problem; if it?s the latter, then I think you?ll need to put a finger on the problem. 2. Does STS not support the example you?ve shown (and others you alluded to) with a single additional reusable policy? ? Ron From duke at openjdk.org Thu May 11 15:31:10 2023 From: duke at openjdk.org (duke) Date: Thu, 11 May 2023 15:31:10 GMT Subject: git: openjdk/loom: fibers: Add JEP number for SC Message-ID: <0dfab010-e33f-4d0c-8540-dac622ddde20@openjdk.org> Changeset: ac0fc906 Author: Alan Bateman Date: 2023-05-11 16:28:43 +0000 URL: https://git.openjdk.org/loom/commit/ac0fc9064b78680104b665df255d31e432bb9813 Add JEP number for SC ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java From josiahnoel at gmail.com Thu May 11 15:53:11 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Thu, 11 May 2023 11:53:11 -0400 Subject: Structured concurrency with runnables? Message-ID: Would be nice if there was a variant of fork could take a Runnable. Turning my runnable tasks into Callable is relatively easy, but it's an inconvenience nonetheless. -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Thu May 11 16:15:16 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Thu, 11 May 2023 18:15:16 +0200 (CEST) Subject: Structured concurrency with runnables? In-Reply-To: References: Message-ID: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> > From: "Josiah Noel" > To: "loom-dev" > Sent: Thursday, May 11, 2023 5:53:11 PM > Subject: Structured concurrency with runnables? > Would be nice if there was a variant of fork could take a Runnable. Turning my > runnable tasks into Callable is relatively easy, but it's an inconvenience > nonetheless. Callable callable = Executors.callable(runnable, null); regards, R?mi -------------- next part -------------- An HTML attachment was scrubbed... URL: From josiahnoel at gmail.com Thu May 11 16:29:35 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Thu, 11 May 2023 12:29:35 -0400 Subject: Structured concurrency with runnables? In-Reply-To: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> References: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On Thu, May 11, 2023 at 12:15?PM Remi Forax wrote: > Callable callable = Executors.callable(runnable, null); > *Turning my runnable tasks into Callable is relatively easy, but it's an inconvenience nonetheless.* I'm asking if we could have a variant of fork do this. -------------- next part -------------- An HTML attachment was scrubbed... URL: From eric at kolotyluk.net Thu May 11 16:32:01 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Thu, 11 May 2023 09:32:01 -0700 Subject: Structured concurrency with runnables? In-Reply-To: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> References: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Yes, that works, but it would be nice to skip the boilerplate and and just do scope.fork( new Runnable(...)); On 2023-05-11 9:15 a.m., Remi Forax wrote: > > > ------------------------------------------------------------------------ > > *From: *"Josiah Noel" > *To: *"loom-dev" > *Sent: *Thursday, May 11, 2023 5:53:11 PM > *Subject: *Structured concurrency with runnables? > > Would be nice if there was a variant of fork could take a > Runnable. Turning my runnable tasks into Callable is relatively > easy, but it's an inconvenience nonetheless. > > > Callable callable = Executors.callable(runnable, null); > > regards, > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Thu May 11 16:42:47 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Thu, 11 May 2023 18:42:47 +0200 (CEST) Subject: Structured Concurrency yet again In-Reply-To: <2E4D82E3-5BA4-43CA-90B1-FD2BCA1328D1@oracle.com> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> <2E4D82E3-5BA4-43CA-90B1-FD2BCA1328D1@oracle.com> Message-ID: <249035017.53847203.1683823367165.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "Alan Bateman" , "loom-dev" > Sent: Thursday, May 11, 2023 3:55:13 PM > Subject: Re: Structured Concurrency yet again >> On 11 May 2023, at 09:24, forax at univ-mlv.fr wrote: >> >> >> Errgroup is a special construct that is the equivalent of STS.ShutdownOnFailure >> (you can also implement ShutdownOnSucess because there is a method cancel() >> (the equivalent of shutdown())). >> Errgroup does not have to cover all scenarios because in Go you can always >> fallback on using channels. Errgroup is a nice structured concurrency API for >> some special cases while channels is the more general API. > > I?m not sure I see how channels generalise SC, but we?d like to have channels > too, and in the meantime we have all of the existing classing in j.u.c at our > disposal. The real low-level mechanism underneath STS is the ThreadFlock ? as > that?s what integrates with observability ? and we?d like to expose that, too, > eventually. Channels do not generalize SC, they generalize errgroup but channels are not a SC API. > >> >> In term of typing, Errgroup is not better than STS.ShutdownOnFailure because >> both erase the type of the error/exception. Note that errgroup what developed >> before go had generics. > > What do you mean by *the* type? In many (most?) fan-out situations, tasks even > have different *return* types. The type of the "exception" is erased to Throwable (see https://docs.oracle.com/en/java/javase/20/docs/api/jdk.incubator.concurrent/jdk/incubator/concurrent/StructuredTaskScope.ShutdownOnFailure.html#exception()) > >> >> I believe STS should not focus only on the special cases STS.ShutdownOnFailure >> and STS.ShutdownOnSucess, but also provides a thread safe way to implement most >> of the general cases. > > Again, before proposing something, I need to understand what problem you?re > trying to solve. Without articulating the problem it?s very hard to evaluate > solutions for it. > >> What i am proposing cover all scenarios that could be implemented by a channel >> with multiple writers but only one reader. For those cases, I believe that the >> a join(Function) is a better API than the channel API because it is a >> structured concurrency API and it's also better than letting users to write a >> poor man implementation of channels as a subclass of STS. > > >> what i'm saying is not that we need channels, as you said it's an orthogonal >> feature, what i'm saying is that there is a category of problem that could be >> solved by a channel with multiple writers and only one reader, for those >> problem, we can also provide a structured concurrency API. > > Isn?t join(Function), why t that something that a subclass of STS > couldn?t offer? Isn?t it a matter of identifying a third common use-case (that > solves a problem we?ve yet to articulate) beyond SutdownOnFailure/Success and > offering a third built-in policy? yes, the idea of join(Function) (and it's variant with a deadline) is to offer a third policy. The problems it solves are - filtering to exclude/transform the results (filter, flatMap, mapMulti) - reducing all succeeding results to one value either in a functional way or as mutable collection (reduce, collect) - aggregating several errors (by example as suppressed exceptions) instead of keeping only the first error (reduce, collect) - canceling/short-circuiting before all results are computed (anyMatch, noneMatch, findFirst, takeWhile) - a combination of the problems listed above All of them are implementable by subclassing STS (it's what's my implementation does) but it easier if we provide a builtin policy. > > ? Ron R?mi From forax at univ-mlv.fr Thu May 11 16:44:45 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Thu, 11 May 2023 18:44:45 +0200 (CEST) Subject: Structured concurrency with runnables? In-Reply-To: References: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1992437875.53848129.1683823485168.JavaMail.zimbra@univ-eiffel.fr> > From: "Eric Kolotyluk" > To: "loom-dev" > Sent: Thursday, May 11, 2023 6:32:01 PM > Subject: Re: Structured concurrency with runnables? > Yes, that works, but it would be nice to skip the boilerplate and and just do > scope.fork( new Runnable(...)); You have to choose what will be the default return value and choosing null is perhaps not the best default. R?mi > On 2023-05-11 9:15 a.m., Remi Forax wrote: >>> From: "Josiah Noel" [ mailto:josiahnoel at gmail.com | ] >>> To: "loom-dev" [ mailto:loom-dev at openjdk.org | ] >>> Sent: Thursday, May 11, 2023 5:53:11 PM >>> Subject: Structured concurrency with runnables? >>> Would be nice if there was a variant of fork could take a Runnable. Turning my >>> runnable tasks into Callable is relatively easy, but it's an inconvenience >>> nonetheless. >> Callable callable = Executors.callable(runnable, null); >> regards, >> R?mi -------------- next part -------------- An HTML attachment was scrubbed... URL: From josiahnoel at gmail.com Thu May 11 16:48:25 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Thu, 11 May 2023 12:48:25 -0400 Subject: Structured concurrency with runnables? In-Reply-To: <1992437875.53848129.1683823485168.JavaMail.zimbra@univ-eiffel.fr> References: <1557617385.53826484.1683821716240.JavaMail.zimbra@univ-eiffel.fr> <1992437875.53848129.1683823485168.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On Thu, May 11, 2023 at 12:44?PM Remi Forax wrote: > > You have to choose what will be the default return value and choosing null > is perhaps not the best default. > If we wrap the Runnable with the callable method we'd have to do that anyway??? -------------- next part -------------- An HTML attachment was scrubbed... URL: From ron.pressler at oracle.com Thu May 11 21:01:21 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Thu, 11 May 2023 21:01:21 +0000 Subject: Structured Concurrency yet again In-Reply-To: <249035017.53847203.1683823367165.JavaMail.zimbra@univ-eiffel.fr> References: <1497877918.52121355.1683649992380.JavaMail.zimbra@univ-eiffel.fr> <386828158.52911859.1683730879723.JavaMail.zimbra@univ-eiffel.fr> <68f92dff-5d12-b54a-63a0-c6772156111f@oracle.com> <044C852A-FEFE-4C00-9243-CDA1058B9382@oracle.com> <215427567.53145444.1683755184885.JavaMail.zimbra@univ-eiffel.fr> <1066708763.53672735.1683811457325.JavaMail.zimbra@univ-eiffel.fr> <2E4D82E3-5BA4-43CA-90B1-FD2BCA1328D1@oracle.com> <249035017.53847203.1683823367165.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <7DD5FAA4-5550-461F-AFEB-37216ECE730D@oracle.com> > On 11 May 2023, at 12:42, forax at univ-mlv.fr wrote: > > yes, the idea of join(Function) (and it's variant with a deadline) is to offer a third policy. I see. I?m open to adding such a third policy subclass. ? Ron From forax at univ-mlv.fr Fri May 12 10:39:42 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Fri, 12 May 2023 12:39:42 +0200 (CEST) Subject: Structured concurrency: TaskHandle Message-ID: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> I really like the fact that STS.fork() does not return a Future but a TaskHandle because as the JEP [1] said, the idea is to only give accesss to the resulting value (get()) or the exception once join() is called. But I think this approach can be refined following several axis. 1. I believe the method state() should also work like get()/exception(), i.e. if a user call state() before calling join(), an ISE should be thrown. Practically, it means that state() can not return RUNNING so the enum State can be simplified with only 3 states SUCCESS, FAILED and CANCELLED. 2. I believe CANCELLED is a weird state. First, a lot of other asynchronous libraries merge FAILED and CANCELLED. Then, when shutdown() is called, from a user POV, the corresponding state can be either CANCELLED or FAILED(with an exception InterruptedException). So as a user, getting CANCELLED as result of state() is not enough to know if the task was shutdown or not. I propose to remove the state CANCELLED and usee FAILED + a newly created InterruptedException instead. 3. TaskHandle is a mutable "active object", storing it (by example in a queue) is a common error. TaskHandle should give access to an immutable result object, a record like object that represent SUCCESS (T value) | FAILED(Throwable exception) instead of providing the the methods get()/exception(). With that, handleComplete() should take this result object as parameter instead of TaskHandle so users have less chance to store TaskHandle in a collection. An interesting followup question is should the TaskHandle objects should be invalidated when close() is called. While it would be nice to have this behavior, it means that it extends the lifetime of the TaskHandle objects so i've rule out that idea. regards, R?mi [1] https://openjdk.org/jeps/8306641#Why-doesn't-fork-return-a-Future? From Alan.Bateman at oracle.com Fri May 12 12:37:31 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 12 May 2023 13:37:31 +0100 Subject: Structured concurrency: TaskHandle In-Reply-To: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 12/05/2023 11:39, Remi Forax wrote: > I really like the fact that STS.fork() does not return a Future but a TaskHandle because as the JEP [1] said, the idea is to only give accesss to the resulting value (get()) or the exception once join() is called. But I think this approach can be refined following several axis. > > 1. I believe the method state() should also work like get()/exception(), i.e. if a user call state() before calling join(), an ISE should be thrown. > Practically, it means that state() can not return RUNNING so the enum State can be simplified with only 3 states SUCCESS, FAILED and CANCELLED. Having "get state" method throw ISE would be a bit strange, and I think reduce debugging to the toString method. For the most part, you should find that you either don't need the return from fork, or you just treat it as a Supplier and get the result when you know the task has completed successfully. > 2. I believe CANCELLED is a weird state. First, a lot of other asynchronous libraries merge FAILED and CANCELLED. Then, when shutdown() is called, from a user POV, the corresponding state can be either CANCELLED or FAILED(with an exception InterruptedException). So as a user, getting CANCELLED as result of state() is not enough to know if the task was shutdown or not. I propose to remove the state CANCELLED and usee FAILED + a newly created InterruptedException instead. I wouldn't expect a non-deterministic state with TaskHandle when you shutdown. Maybe that comment is about when the API used Future where this was the case? There may be merit in dropping CANCELLED but it does create an inconsistency in that handleComplete is only called to handle tasks that completely successfully or fail. If the state were dropped then would you expect a storm of calls to handleComplete for failed-with-IE tasks? > > 3. TaskHandle is a mutable "active object", storing it (by example in a queue) is a common error. TaskHandle should give access to an immutable result object, a record like object that represent SUCCESS (T value) | FAILED(Throwable exception) instead of providing the the methods get()/exception(). With that, handleComplete() should take this result object as parameter instead of TaskHandle so users have less chance to store TaskHandle in a collection. We've explored several APIs and shapes, including Supplier and variations that included ADT for the Result. When you work through examples with heterogenous and homogenous tasks then what we've got now isn't too bad. > An interesting followup question is should the TaskHandle objects should be invalidated when close() is called. While it would be nice to have this behavior, it means that it extends the lifetime of the TaskHandle objects so i've rule out that idea. close does a shutdown so it will "cancel" any tasks that have not complete.? In any case, I don't think we can anticipate all the possible usages and I could imagine some assigning to a TaskHandle that is outside the scope for some reason or another. -Alan From forax at univ-mlv.fr Fri May 12 15:01:21 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 12 May 2023 17:01:21 +0200 (CEST) Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Remi Forax" , "loom-dev" > Sent: Friday, May 12, 2023 2:37:31 PM > Subject: Re: Structured concurrency: TaskHandle > On 12/05/2023 11:39, Remi Forax wrote: >> I really like the fact that STS.fork() does not return a Future but a TaskHandle >> because as the JEP [1] said, the idea is to only give accesss to the resulting >> value (get()) or the exception once join() is called. But I think this approach >> can be refined following several axis. >> >> 1. I believe the method state() should also work like get()/exception(), i.e. if >> a user call state() before calling join(), an ISE should be thrown. >> Practically, it means that state() can not return RUNNING so the enum State can >> be simplified with only 3 states SUCCESS, FAILED and CANCELLED. > Having "get state" method throw ISE would be a bit strange, and I think > reduce debugging to the toString method. If the ISE message is something along "the computation is still running !", there is not much debugging needed. > > For the most part, you should find that you either don't need the return > from fork, or you just treat it as a Supplier and get the result when > you know the task has completed successfully. I would say it in the other way, you need state() to know if the task has competed successfully then you can call get() or use the handle as Supplier. Technically, you do not need state() before calling join(). But more on than below. > >> 2. I believe CANCELLED is a weird state. First, a lot of other asynchronous >> libraries merge FAILED and CANCELLED. Then, when shutdown() is called, from a >> user POV, the corresponding state can be either CANCELLED or FAILED(with an >> exception InterruptedException). So as a user, getting CANCELLED as result of >> state() is not enough to know if the task was shutdown or not. I propose to >> remove the state CANCELLED and usee FAILED + a newly created >> InterruptedException instead. > > I wouldn't expect a non-deterministic state with TaskHandle when you > shutdown. Maybe that comment is about when the API used Future where > this was the case? The non-determinism comes from the way Thread.interrupt() works. If the thread is interrupted during a blocking call or reach a blocking call an InterruptedException will be thrown. If there is no blocking call or Thread.currentThread().interrupt() is called, only the flag is positioned. I proposed that if the flag is positioned then the state of the task should be FAILED and if exception() is called, an InterruptException should be thrown (one with no stacktrace so it can be shared). > > There may be merit in dropping CANCELLED but it does create an > inconsistency in that handleComplete is only called to handle tasks that > completely successfully or fail. If the state were dropped then would > you expect a storm of calls to handleComplete for failed-with-IE tasks? > Taking a step back, there are two states, there are the task state and the state on the object passed to handleComplete. The former can be RUNNING, SUCCESS, FAILED or CANCELLED, the later is only SUCCESS or FAILED. ?f we have two different objects, each one can have a different enum, TaskState and ResultState an everything is fine. If we have use TaskHandle for both, switching on the state inside handleComplete has two unreachable states but the compiler does not know that. So perhaps the solution is to have two different states. > >> >> 3. TaskHandle is a mutable "active object", storing it (by example in a queue) >> is a common error. TaskHandle should give access to an immutable result object, >> a record like object that represent SUCCESS (T value) | FAILED(Throwable >> exception) instead of providing the the methods get()/exception(). With that, >> handleComplete() should take this result object as parameter instead of >> TaskHandle so users have less chance to store TaskHandle in a collection. > We've explored several APIs and shapes, including Supplier and > variations that included ADT for the Result. ADT in Java are not yet ready for that, the ADT we want need to be able to denote the bottom type. sealed interface Result permits Success, Failed {} record Success(T value) implements Result { } record Failed(Throwable exception) implements Result {?} // Nothing is the bottom type We need the bottom type otherwise the switch will never be exhaustive. We may also need to say that the T of Result is covariant, depending on how the type system around Nothing behave. Instead of using an ADT, a simpler solution that actually works is to declare an immutable class (the same way Optional is declared) and when the pattern methods will be introduced in Java, one will be able to write switch(result) { case Result.success(T t) -> ... case Result.failed(Throwable exception) -> ... } > When you work through > examples with heterogenous and homogenous tasks then what we've got now > isn't too bad. For me, having two different objects, task and result, make sense because their state are different (see above). > > >> An interesting followup question is should the TaskHandle objects should be >> invalidated when close() is called. While it would be nice to have this >> behavior, it means that it extends the lifetime of the TaskHandle objects so >> i've rule out that idea. > close does a shutdown so it will "cancel" any tasks that have not > complete.? In any case, I don't think we can anticipate all the possible > usages and I could imagine some assigning to a TaskHandle that is > outside the scope for some reason or another. yes. Another question does the API of TaskHandle should be only available to the owner thread of the scope ? > > -Alan R?mi From Alan.Bateman at oracle.com Fri May 12 17:14:02 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 12 May 2023 18:14:02 +0100 Subject: Structured concurrency: TaskHandle In-Reply-To: <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> On 12/05/2023 16:01, forax at univ-mlv.fr wrote: > : > I would say it in the other way, you need state() to know if the task has competed successfully then you can call get() or use the handle as Supplier. > Technically, you do not need state() before calling join(). It will take time to get more feedback from real world usages. The examples that we published using ShutdownOnXXX don't need to switch on the state. For ShutdownOnSuccess you can discard the object returned by fork, it's not needed. For ShutdownOnFailure, if join().throwIfFailed() doesn't throw then you are guaranteed that all tasks have completed successfully so you don't need the state either. > The non-determinism comes from the way Thread.interrupt() works. If the thread is interrupted during a blocking call or reach a blocking call an InterruptedException will be thrown. If there is no blocking call or Thread.currentThread().interrupt() is called, only the flag is positioned. > I proposed that if the flag is positioned then the state of the task should be FAILED and if exception() is called, an InterruptException should be thrown (one with no stacktrace so it can be shared). Calling shutdown means you are done and not interested in the tasks that are still running. Yes, they are interrupted (after the state transition to shutdown so any result/exceptions from the remaining task will be discarded). Are you looking to capture how they reacted to interrupt or what do you mean by "the flag is positioned". Maybe you are thinking about some side effect? > : > Taking a step back, there are two states, there are the task state and the state on the object passed to handleComplete. > The former can be RUNNING, SUCCESS, FAILED or CANCELLED, the later is only SUCCESS or FAILED. > ?f we have two different objects, each one can have a different enum, TaskState and ResultState an everything is fine. > If we have use TaskHandle for both, switching on the state inside handleComplete has two unreachable states but the compiler does not know that. > > So perhaps the solution is to have two different states. That might be hard to explain so I think we should wait for more real-world usage and feedback before seeing if there are any adjustments required. > : > Another question does the API of TaskHandle should be only available to the owner thread of the scope ? fork can be called by any subtask in the tree. So while of limited value compared to Future in this context, it would surprising if every method threw WTE. -Alan From ron.pressler at oracle.com Fri May 12 17:39:25 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Fri, 12 May 2023 17:39:25 +0000 Subject: Structured concurrency: TaskHandle In-Reply-To: <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> Message-ID: I think there?s a point here that?s worth an emphasis: When join completes what we know is that every fork has either terminated *or* deemed irrelevant by a call to shutdown that tells the scope: ?I have all the results I need to finish the parent tasks (successfully or not) and I don?t care about further results?. It is only when close returns that we know that all forks have actually terminated. I.e.: 1. After join: I have all I need to compute a result (but some forks might still be running). 2. After close: All forks have terminated. It is useful not to require that all forks have terminated when join completes because join can complete abnormally if interrupted. In that situation, the scope can decide whether to shutdown (cancelling all threads) or not. If InterruptedException is not explicitly handle (i.e. the ?default?) then the scope will shut down because the exception will then trigger an implicit close, which will shutdown the scope; close is not interruptible. ? Ron > On 12 May 2023, at 13:14, Alan Bateman wrote: > > On 12/05/2023 16:01, forax at univ-mlv.fr wrote: >> : >> I would say it in the other way, you need state() to know if the task has competed successfully then you can call get() or use the handle as Supplier. >> Technically, you do not need state() before calling join(). > > It will take time to get more feedback from real world usages. The examples that we published using ShutdownOnXXX don't need to switch on the state. For ShutdownOnSuccess you can discard the object returned by fork, it's not needed. For ShutdownOnFailure, if join().throwIfFailed() doesn't throw then you are guaranteed that all tasks have completed successfully so you don't need the state either. > > >> The non-determinism comes from the way Thread.interrupt() works. If the thread is interrupted during a blocking call or reach a blocking call an InterruptedException will be thrown. If there is no blocking call or Thread.currentThread().interrupt() is called, only the flag is positioned. >> I proposed that if the flag is positioned then the state of the task should be FAILED and if exception() is called, an InterruptException should be thrown (one with no stacktrace so it can be shared). > Calling shutdown means you are done and not interested in the tasks that are still running. Yes, they are interrupted (after the state transition to shutdown so any result/exceptions from the remaining task will be discarded). Are you looking to capture how they reacted to interrupt or what do you mean by "the flag is positioned". Maybe you are thinking about some side effect? > >> : >> Taking a step back, there are two states, there are the task state and the state on the object passed to handleComplete. >> The former can be RUNNING, SUCCESS, FAILED or CANCELLED, the later is only SUCCESS or FAILED. >> ?f we have two different objects, each one can have a different enum, TaskState and ResultState an everything is fine. >> If we have use TaskHandle for both, switching on the state inside handleComplete has two unreachable states but the compiler does not know that. >> >> So perhaps the solution is to have two different states. > That might be hard to explain so I think we should wait for more real-world usage and feedback before seeing if there are any adjustments required. > > >> : >> Another question does the API of TaskHandle should be only available to the owner thread of the scope ? > fork can be called by any subtask in the tree. So while of limited value compared to Future in this context, it would surprising if every method threw WTE. > > -Alan > > > From forax at univ-mlv.fr Fri May 12 18:56:35 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 12 May 2023 20:56:35 +0200 (CEST) Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> Message-ID: <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" , "Alan Bateman" > Cc: "loom-dev" > Sent: Friday, May 12, 2023 7:39:25 PM > Subject: Re: Structured concurrency: TaskHandle > I think there?s a point here that?s worth an emphasis: > > When join completes what we know is that every fork has either terminated *or* > deemed irrelevant by a call to shutdown that tells the scope: ?I have all the > results I need to finish the parent tasks (successfully or not) and I don?t > care about further results?. It is only when close returns that we know that > all forks have actually terminated. > > I.e.: > > 1. After join: I have all I need to compute a result (but some forks might still > be running). > > 2. After close: All forks have terminated. > > It is useful not to require that all forks have terminated when join completes > because join can complete abnormally if interrupted. In that situation, the > scope can decide whether to shutdown (cancelling all threads) or not. If > InterruptedException is not explicitly handle (i.e. the ?default?) then the > scope will shut down because the exception will then trigger an implicit close, > which will shutdown the scope; close is not interruptible. > > ? Ron I was thinking of this peculiar scenario, where the states are read after a call to join() try(var scope = new StructuredTaskScope()) { var future1 = scope.fork(() -> { var result = 0.5; for(var i = 0; i < 10_000_000; i++) { result = Math.sin(result) + result; } return result; }); var future2 = scope.fork(() -> { Thread.sleep(1_000); throw new IOException(); }); Thread.sleep(1); scope.shutdown(); scope.join(); System.out.println("future 1: " + future1.state()); System.out.println("future 2: " + future2.state()); } R?mi > > >> On 12 May 2023, at 13:14, Alan Bateman wrote: >> >> On 12/05/2023 16:01, forax at univ-mlv.fr wrote: >>> : >>> I would say it in the other way, you need state() to know if the task has >>> competed successfully then you can call get() or use the handle as Supplier. >>> Technically, you do not need state() before calling join(). >> >> It will take time to get more feedback from real world usages. The examples that >> we published using ShutdownOnXXX don't need to switch on the state. For >> ShutdownOnSuccess you can discard the object returned by fork, it's not needed. >> For ShutdownOnFailure, if join().throwIfFailed() doesn't throw then you are >> guaranteed that all tasks have completed successfully so you don't need the >> state either. >> >> >>> The non-determinism comes from the way Thread.interrupt() works. If the thread >>> is interrupted during a blocking call or reach a blocking call an >>> InterruptedException will be thrown. If there is no blocking call or >>> Thread.currentThread().interrupt() is called, only the flag is positioned. >>> I proposed that if the flag is positioned then the state of the task should be >>> FAILED and if exception() is called, an InterruptException should be thrown >>> (one with no stacktrace so it can be shared). >> Calling shutdown means you are done and not interested in the tasks that are >> still running. Yes, they are interrupted (after the state transition to >> shutdown so any result/exceptions from the remaining task will be discarded). >> Are you looking to capture how they reacted to interrupt or what do you mean by >> "the flag is positioned". Maybe you are thinking about some side effect? >> >>> : >>> Taking a step back, there are two states, there are the task state and the state >>> on the object passed to handleComplete. >>> The former can be RUNNING, SUCCESS, FAILED or CANCELLED, the later is only >>> SUCCESS or FAILED. >>> ?f we have two different objects, each one can have a different enum, TaskState >>> and ResultState an everything is fine. >>> If we have use TaskHandle for both, switching on the state inside handleComplete >>> has two unreachable states but the compiler does not know that. >>> >>> So perhaps the solution is to have two different states. >> That might be hard to explain so I think we should wait for more real-world >> usage and feedback before seeing if there are any adjustments required. >> >> >>> : >>> Another question does the API of TaskHandle should be only available to the >>> owner thread of the scope ? >> fork can be called by any subtask in the tree. So while of limited value >> compared to Future in this context, it would surprising if every method threw >> WTE. >> >> -Alan >> >> From attila.kelemen85 at gmail.com Fri May 12 20:05:42 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 12 May 2023 22:05:42 +0200 Subject: Structured concurrency: TaskHandle In-Reply-To: <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> Message-ID: I really love R?mi's proposal about merging the `state`, `get` and `exception` into a single call, otherwise it will push people towards creative ways to check the result state creating multiple patterns for it. While R?mi's sealed interface proposal just cannot be misinterpreted. For example, consider the documentation of `exception`: "Returns the exception, if the task failed with an exception." It is not exactly obvious what if the task failed with an exception due to a cancellation? In case shutdown was called before the task completed the current proposal requires the cancelled state. So, is that exception lost now? That seems to me a problem, because it is perfectly possible that due to one task's action (done due to cancellation) another went into a bad state, and you do want to make it visible. ### Cancellation Cancellation is important enough to have very special care in my opinion. In fact - to me - it was so important that I wrote a brand new executor framework for my usage and happily using that instead of the built-in for 10+ years now. The question that should be asked is what are the important cases for cancellation? 1. The task did not even start. This is important to know, because it is very easy to argue about the consequences of this case. Though not completely free 2. The task did not complete before `shutdown`, but failed with a specially interpreted type of exception. 3. The task did not complete before `shutdown` was called, but started execution, and threw an unexpected exception. 4. The task did not complete before `shutdown` was called, but started execution, and returned without an exception. I think only (1) and (2) should be marked as cancelled, and this also implies that - in R?mi's sealed interface proposal - the `Canceled` result should have an nullable `Throwable` field. Case 3 should be considered to be an error, as that means that something unexpected happened (or at least someone was sloppy). Case 4 should be considered a success. Maybe, if we really want to preserve this information, then the success record could have a flag for this (though I believe it would be widely unused). As for Alan's comment about "storming handleComplete" on cancellation: `handleComplete` must not be called for case (1). If the STS needs to count them for whatever reason, then maybe a new `handleNonExecuted(long)` method can be implemented. Storming would be quite problematic for case (1), but not so much for the rest (since they were in the process of doing something anyway). ### TaskHandle.task() This method is a menace. This was one of the many cancellation problem of the JDK's thread pool (though was not restricted to make this mistake by its interface): I often needed the case (especially for UI) where I bombarded an executor with tasks, but the tasks were idempotent, so there is no reason to have more of them queued. Yet, the cancellation of the JDK's thread pool did not remove the canceled task from its queue upon cancellation retaining a reference to the task object. This can be quite the issue, and this method on `TaskHandle` will now force the JDK to always keep a reference to the task, even though it is largely useless. If you really need it, you have the option to retain it and associate it with the `TaskHandle`. So, my opinion is that this must be removed in order to allow the GC to reclaim the task and whatever potentially large object it is referencing. If we really want to provide this for the STS (because that is the only place which would not need about it otherwise), then that could be provided in a separate argument, and that would also allow the GC to reclaim the task. Attila From attila.kelemen85 at gmail.com Fri May 12 20:11:58 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 12 May 2023 22:11:58 +0200 Subject: Generic parameter of StructuredTaskScope Message-ID: Hi, There is an inconsistency in the treatment of the generic parameter of STS. Namely, that while it was deemed important to know the common base type of the result of the forked tasks; Surprisingly, its two common implementations do not provide this feature. How come that in the STS implementations believed to be used almost always are not believed to find this feature useful? I mean, in the use cases I can think of relying on this generic parameter, I would happily rely on it even in the default implementation. Attila From forax at univ-mlv.fr Fri May 12 21:54:33 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 12 May 2023 23:54:33 +0200 (CEST) Subject: Structured concurrency: TaskHandle In-Reply-To: <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> Message-ID: <750331414.54747753.1683928473110.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Friday, May 12, 2023 7:14:02 PM > Subject: Re: Structured concurrency: TaskHandle > On 12/05/2023 16:01, forax at univ-mlv.fr wrote: >> : >> I would say it in the other way, you need state() to know if the task has >> competed successfully then you can call get() or use the handle as Supplier. >> Technically, you do not need state() before calling join(). > > It will take time to get more feedback from real world usages. The > examples that we published using ShutdownOnXXX don't need to switch on > the state. For ShutdownOnSuccess you can discard the object returned by > fork, it's not needed. For ShutdownOnFailure, if join().throwIfFailed() > doesn't throw then you are guaranteed that all tasks have completed > successfully so you don't need the state either. > > >> The non-determinism comes from the way Thread.interrupt() works. If the thread >> is interrupted during a blocking call or reach a blocking call an >> InterruptedException will be thrown. If there is no blocking call or >> Thread.currentThread().interrupt() is called, only the flag is positioned. >> I proposed that if the flag is positioned then the state of the task should be >> FAILED and if exception() is called, an InterruptException should be thrown >> (one with no stacktrace so it can be shared). > Calling shutdown means you are done and not interested in the tasks that > are still running. Yes, they are interrupted (after the state transition > to shutdown so any result/exceptions from the remaining task will be > discarded). Are you looking to capture how they reacted to interrupt or > what do you mean by "the flag is positioned". Maybe you are thinking > about some side effect ? I'm thinking about the case where a user take a look at the state() after a call to shutdown() followed by a call to join(), see the example in my email to Ron. > >> : >> Taking a step back, there are two states, there are the task state and the state >> on the object passed to handleComplete. >> The former can be RUNNING, SUCCESS, FAILED or CANCELLED, the later is only >> SUCCESS or FAILED. >> ?f we have two different objects, each one can have a different enum, TaskState >> and ResultState an everything is fine. >> If we have use TaskHandle for both, switching on the state inside handleComplete >> has two unreachable states but the compiler does not know that. >> >> So perhaps the solution is to have two different states. > That might be hard to explain so I think we should wait for more > real-world usage and feedback before seeing if there are any adjustments > required. There is a way to avoid to take a look to state() before either using get() or exception(), use "exception transparency". In the case of a synchronous code, when a method is called either the return value is available or an exception is thrown, why not do the same ? Practically, it means that get() can either return a T or throws an E, so TaskHandle is parametrized by both T and E interface TaskHandle { T get() throws E, InterruptedException; ... } We also need TaskHandle to be able to throw an InterruptedException if the task has been cancelled by STS.shutdown(). In that case, we can not use Callable because Callable in not parametrized by the type of the exception, so the compiler can not propagate the type. We need a new functional interface interface Invokable { T invoke() throws E, InterruptedException; } And STS.fork() will propagate both the type of the return value and the type of the exception of the Invokable to the TaskHandle class STS { public TaskHandle fork(Invokable invokable) { ... } ... } > > >> : >> Another question does the API of TaskHandle should be only available to the >> owner thread of the scope ? > fork can be called by any subtask in the tree. So while of limited value > compared to Future in this context, it would surprising if every method > threw WTE. yes right. > > -Alan R?mi From forax at univ-mlv.fr Sat May 13 06:06:12 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 13 May 2023 08:06:12 +0200 (CEST) Subject: The example CollectingScope in the javadoc of STS is dubious Message-ID: <1099119950.54798169.1683957972086.JavaMail.zimbra@univ-eiffel.fr> Hi, the example CollectingScope in the javadoc of STS https://cr.openjdk.org/~alanb/sc/api/java.base/java/util/concurrent/StructuredTaskScope.html supposes that a Callable as the method equals/hashCode correctly defined but there is a good chance that collectingScope.fork() takes a lambda as parameter and equals (== really) on a lambda is defined as "depending on the implementation". By example, try(var scope = new CollectingScope()) { scope.fork(() -> 2); scope.fork(() -> 2); scope.join(); var map = scope.results(); System.out.println(map.size()); } can print either 1 or 2 depending on the compiler (is it twice the same lambda or not ?). And obviously if the lambda inside fork() does side effect, you can have the same lambda but with two different results private static final AtomicInteger COUNTER = new AtomicInteger(); ... try(var scope = new CollectingScope()) { scope.fork(COUNTER::getAndAdd); scope.fork(COUNTER::getAndAdd); scope.join(); var map = scope.results(); System.out.println(map.size()); } In fact, I believe that providing the Callable in TaskHandle is not that interesting and may lead users to shooting themselves in the foot. regards, R?mi From forax at univ-mlv.fr Sat May 13 06:26:28 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 13 May 2023 08:26:28 +0200 (CEST) Subject: TaskHandle.task() is not correctly typed ! Message-ID: <1447272229.54799184.1683959188857.JavaMail.zimbra@univ-eiffel.fr> Here is an example that shows that TaskHandle.task() should be typed Callable and not Callable. The current API is unsound. interface NonCovariantCallable extends Callable { T call() throws Exception; void set(T t); } ... try(var scope = new STS()) { TaskHandle handle = scope.fork(new NonCovariantCallable() { public String call() { return "foo"; } public void set(String s) {} }); scope.join(); Callable task = handle.task(); NonCovariantCallable nonCovariantTask = (NonCovariantCallable) task; nonCovariantTask.set(3); } The last call should throw a CCE in the bridge that calls set(String). regards, R?mi From Alan.Bateman at oracle.com Sat May 13 06:28:51 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sat, 13 May 2023 07:28:51 +0100 Subject: Structured concurrency: TaskHandle In-Reply-To: <750331414.54747753.1683928473110.JavaMail.zimbra@univ-eiffel.fr> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <750331414.54747753.1683928473110.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <71e567a8-a888-bf6e-7b4b-6d048c8a9c21@oracle.com> On 12/05/2023 22:54, forax at univ-mlv.fr wrote: > : > I'm thinking about the case where a user take a look at the state() after a call to shutdown() followed by a call to join(), > see the example in my email to Ron. > In your example, the main task forks two subtasks, sleeps for 1ms, then calls shutdown. The first subtask is computing something, it may complete successfully before shutdown, it may not and thus its terminal state will be SUCCESS or CANCELLED. The second subtask sleeps for 1s before throwing an exception so it's likely terminal state is CANCELLED. I understand the example is contrived but I think I've missed your point. Are you talking about race in the older Future based implementation or are you talking about something with the updated API/implementation? -Alan From forax at univ-mlv.fr Sat May 13 06:36:18 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sat, 13 May 2023 08:36:18 +0200 (CEST) Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <213494052.54800388.1683959778717.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "attila kelemen85" > To: "Remi Forax" > Cc: "Ron Pressler" , "Alan Bateman" , "loom-dev" > > Sent: Friday, May 12, 2023 10:05:42 PM > Subject: Re: Structured concurrency: TaskHandle > I really love R?mi's proposal about merging the `state`, `get` and > `exception` into a single call, otherwise it will push people towards > creative ways to check the result state creating multiple patterns for > it. While R?mi's sealed interface proposal just cannot be > misinterpreted. For example, consider the documentation of > `exception`: "Returns the exception, if the task failed with an > exception." It is not exactly obvious what if the task failed with an > exception due to a cancellation? In case shutdown was called before > the task completed the current proposal requires the cancelled state. > So, is that exception lost now? That seems to me a problem, because it > is perfectly possible that due to one task's action (done due to > cancellation) another went into a bad state, and you do want to make > it visible. yes, the exception is not lost, the task state is FAILED and exception() returns the exception thrown by the Callable due to InterruptedException been thrown by a blocking call. > > ### Cancellation > > Cancellation is important enough to have very special care in my > opinion. In fact - to me - it was so important that I wrote a brand > new executor framework for my usage and happily using that instead of > the built-in for 10+ years now. > > The question that should be asked is what are the important cases for > cancellation? > > 1. The task did not even start. This is important to know, because it > is very easy to argue about the consequences of this case. Though not > completely free > 2. The task did not complete before `shutdown`, but failed with a > specially interpreted type of exception. > 3. The task did not complete before `shutdown` was called, but started > execution, and threw an unexpected exception. > 4. The task did not complete before `shutdown` was called, but started > execution, and returned without an exception. > > I think only (1) and (2) should be marked as cancelled, and this also > implies that - in R?mi's sealed interface proposal - the `Canceled` > result should have an nullable `Throwable` field. yes, that why i was proposing to lazily allocate an InterruptedException instead of returning null. With that, from a user POV, calling shutdown() always result in a failed task with exception() returning an InterruptedException. [...] > > > ### TaskHandle.task() > > This method is a menace. This was one of the many cancellation problem > of the JDK's thread pool (though was not restricted to make this > mistake by its interface): I often needed the case (especially for UI) > where I bombarded an executor with tasks, but the tasks were > idempotent, so there is no reason to have more of them queued. Yet, > the cancellation of the JDK's thread pool did not remove the canceled > task from its queue upon cancellation retaining a reference to the > task object. This can be quite the issue, and this method on > `TaskHandle` will now force the JDK to always keep a reference to the > task, even though it is largely useless. If you really need it, you > have the option to retain it and associate it with the `TaskHandle`. > So, my opinion is that this must be removed in order to allow the GC > to reclaim the task and whatever potentially large object it is > referencing. > > If we really want to provide this for the STS (because that is the > only place which would not need about it otherwise), then that could > be provided in a separate argument, and that would also allow the GC > to reclaim the task. I agree, keeping the callable too long often leads to hard to diagnose memory leak. > > Attila R?mi From Alan.Bateman at oracle.com Sat May 13 06:37:50 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sat, 13 May 2023 07:37:50 +0100 Subject: Generic parameter of StructuredTaskScope In-Reply-To: References: Message-ID: On 12/05/2023 21:11, Attila Kelemen wrote: > Hi, > > There is an inconsistency in the treatment of the generic parameter of > STS. Namely, that while it was deemed important to know the common > base type of the result of the forked tasks; Surprisingly, its two > common implementations do not provide this feature. How come that in > the STS implementations believed to be used almost always are not > believed to find this feature useful? I mean, in the use cases I can > think of relying on this generic parameter, I would happily rely on it > even in the default implementation. The API has to support usages where the tasks are homogenous or heterogenous, the JEP has examples of both. The type parameter is useful for the former, less so for the later where you have to pick a LUB or Object. ShutdownOnSuccess uses the type parameter as it's for racing subtasks that produce a result of same type. ShutdownOnFailure doesn't expose an API for the result so it doesn't use the type, is that your point? -Alan From forax at univ-mlv.fr Sat May 13 06:39:05 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sat, 13 May 2023 08:39:05 +0200 (CEST) Subject: Structured concurrency: TaskHandle In-Reply-To: <71e567a8-a888-bf6e-7b4b-6d048c8a9c21@oracle.com> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <750331414.54747753.1683928473110.JavaMail.zimbra@univ-eiffel.fr> <71e567a8-a888-bf6e-7b4b-6d048c8a9c21@oracle.com> Message-ID: <781056910.54800640.1683959945676.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Saturday, May 13, 2023 8:28:51 AM > Subject: Re: Structured concurrency: TaskHandle > On 12/05/2023 22:54, forax at univ-mlv.fr wrote: >> : >> I'm thinking about the case where a user take a look at the state() after a call >> to shutdown() followed by a call to join(), >> see the example in my email to Ron. >> > In your example, the main task forks two subtasks, sleeps for 1ms, then > calls shutdown. The first subtask is computing something, it may > complete successfully before shutdown, it may not and thus its terminal > state will be SUCCESS or CANCELLED. The second subtask sleeps for 1s > before throwing an exception so it's likely terminal state is CANCELLED. > I understand the example is contrived but I think I've missed your > point. Are you talking about race in the older Future based > implementation or are you talking about something with the updated > API/implementation? If i run it with JDK 20, it prints java --add-modules=jdk.incubator.concurrent --enable-preview --source 20 StructuredConcurrencyTest.java WARNING: Using incubator modules: jdk.incubator.concurrent future 1: CANCELLED future 2: FAILED The second future does not report CANCELLED but FAILED, but perhaps there is an implementation bug somewhere ? > > -Alan R?mi From Alan.Bateman at oracle.com Sat May 13 06:41:13 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sat, 13 May 2023 07:41:13 +0100 Subject: Structured concurrency: TaskHandle In-Reply-To: <781056910.54800640.1683959945676.JavaMail.zimbra@univ-eiffel.fr> References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <750331414.54747753.1683928473110.JavaMail.zimbra@univ-eiffel.fr> <71e567a8-a888-bf6e-7b4b-6d048c8a9c21@oracle.com> <781056910.54800640.1683959945676.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 13/05/2023 07:39, forax at univ-mlv.fr wrote: > : > If i run it with JDK 20, it prints > > java --add-modules=jdk.incubator.concurrent --enable-preview --source 20 StructuredConcurrencyTest.java > WARNING: Using incubator modules: jdk.incubator.concurrent > future 1: CANCELLED > future 2: FAILED > > The second future does not report CANCELLED but FAILED, but perhaps there is an implementation bug somewhere ? Okay, now I understand what you are saying. Yes, it's the old API/implementation, that was fixed as part of moving away from Future. -Alan From Alan.Bateman at oracle.com Sat May 13 07:03:36 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sat, 13 May 2023 08:03:36 +0100 Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 12/05/2023 21:05, Attila Kelemen wrote: > : > > ### Cancellation > > Cancellation is important enough to have very special care in my > opinion. In fact - to me - it was so important that I wrote a brand > new executor framework for my usage and happily using that instead of > the built-in for 10+ years now. > > The question that should be asked is what are the important cases for > cancellation? > > 1. The task did not even start. This is important to know, because it > is very easy to argue about the consequences of this case. Though not > completely free > 2. The task did not complete before `shutdown`, but failed with a > specially interpreted type of exception. > 3. The task did not complete before `shutdown` was called, but started > execution, and threw an unexpected exception. > 4. The task did not complete before `shutdown` was called, but started > execution, and returned without an exception. > > I think only (1) and (2) should be marked as cancelled, and this also > implies that - in R?mi's sealed interface proposal - the `Canceled` > result should have an nullable `Throwable` field. > > Case 3 should be considered to be an error, as that means that > something unexpected happened (or at least someone was sloppy). > > Case 4 should be considered a success. Maybe, if we really want to > preserve this information, then the success record could have a flag > for this (though I believe it would be widely unused). > > As for Alan's comment about "storming handleComplete" on cancellation: > `handleComplete` must not be called for case (1). If the STS needs to > count them for whatever reason, then maybe a new > `handleNonExecuted(long)` method can be implemented. Storming would be > quite problematic for case (1), but not so much for the rest (since > they were in the process of doing something anyway). The STS API tries to keep things simple. Calling shutdown means you are done and not interested in the results/outcome of the subtasks that have not finished. They will be interrupted, and the close method will block until the stragglers have finished. In your 1-4 cases, all will cancelled. If this were API for a thread pool with a task queue then more insight into the state of the system at shutdown might be interesting, as might collecting results/outcome after shutdown, but I think that is beyond where this API should be at this point. -Alan. From attila.kelemen85 at gmail.com Sat May 13 11:04:38 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 13 May 2023 13:04:38 +0200 Subject: Generic parameter of StructuredTaskScope In-Reply-To: References: Message-ID: To be honest, I somehow missed that ShutdownOnSuccess does have a type argument (probably my brain generalized from ShutdownOnFailure, which is probably the more commonly used). But otherwise yes, it is a bit strange that ShutdownOnFailure denies me the option when it only saves me two characters "<>", and if saving character is the goal, then they could have factory methods (and these two classes don't even have to be directly exposed, since they are final anyway). Alan Bateman ezt ?rta (id?pont: 2023. m?j. 13., Szo, 8:38): > > On 12/05/2023 21:11, Attila Kelemen wrote: > > Hi, > > > > There is an inconsistency in the treatment of the generic parameter of > > STS. Namely, that while it was deemed important to know the common > > base type of the result of the forked tasks; Surprisingly, its two > > common implementations do not provide this feature. How come that in > > the STS implementations believed to be used almost always are not > > believed to find this feature useful? I mean, in the use cases I can > > think of relying on this generic parameter, I would happily rely on it > > even in the default implementation. > The API has to support usages where the tasks are homogenous or > heterogenous, the JEP has examples of both. The type parameter is useful > for the former, less so for the later where you have to pick a LUB or > Object. ShutdownOnSuccess uses the type parameter as it's for racing > subtasks that produce a result of same type. ShutdownOnFailure doesn't > expose an API for the result so it doesn't use the type, is that your point? > > -Alan From attila.kelemen85 at gmail.com Sat May 13 11:43:37 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 13 May 2023 13:43:37 +0200 Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > The STS API tries to keep things simple. Calling shutdown means you are > done and not interested in the results/outcome of the subtasks that have > not finished. They will be interrupted, and the close method will block > until the stragglers have finished. > Calling shutdown could also mean that I would care about the result, but I lack faith that the task will complete in a reasonable time. However, the process might be waiting on something that it cannot cancel (for whatever reason), and at that point - since it will be computed anyway - I want to see the result. Consider a UI, it would be rude for the UI, that even though it computed the result I requested, refuses to show the result to me. > In your 1-4 cases, all will cancelled. If this were API for a thread > pool with a task queue then more insight into the state of the system at > shutdown might be interesting, as might collecting results/outcome after > shutdown, but I think that is beyond where this API should be at this point. > If the goal is to be minimal, then I think the API shouldn't concern itself with cancellation at all (it is kinda a false promise), and should do what R?mi proposed: Fail on cancellation with a specific exception (it is a little bit awkward that we have both `InterruptedException` and `CancellationException`, but something must be chosen anyway). Completely skipped tasks should not be passed to `handleCompleted`. I know that there is the potential worry that if `shutdown` was called, then the threads were interrupted, which might have changed their behaviour even though they returned normally. However - if this is a worry (and I would say it rarely is) - then it is trivial to handle by the caller, since the caller knows that it called `shutdown`. From rengels at ix.netcom.com Sat May 13 12:47:22 2023 From: rengels at ix.netcom.com (Robert Engels) Date: Sat, 13 May 2023 07:47:22 -0500 Subject: Structured concurrency: TaskHandle In-Reply-To: References: Message-ID: <7E45A494-E111-4A67-8916-9BCC9690BD01@ix.netcom.com> Expecting or using a result after calling shutdown seems invalid. The UI example seems especially incorrect. If I am a user and attempt to cancel an operation and the system says ?hey here?s your answer anyway? that does not match the user intent - which is a bad UX. What a developers wants is that if an operation is cancelled the end result is deterministic - or inspectable. This is old XA transaction argument all over again. If you don?t you a two-phase commit protocol you need other means to understand the state of the system. > On May 13, 2023, at 6:44 AM, Attila Kelemen wrote: > > ? >> >> The STS API tries to keep things simple. Calling shutdown means you are >> done and not interested in the results/outcome of the subtasks that have >> not finished. They will be interrupted, and the close method will block >> until the stragglers have finished. >> > > Calling shutdown could also mean that I would care about the result, > but I lack faith that the task will complete in a reasonable time. > However, the process might be waiting on something that it cannot > cancel (for whatever reason), and at that point - since it will be > computed anyway - I want to see the result. Consider a UI, it would be > rude for the UI, that even though it computed the result I requested, > refuses to show the result to me. > >> In your 1-4 cases, all will cancelled. If this were API for a thread >> pool with a task queue then more insight into the state of the system at >> shutdown might be interesting, as might collecting results/outcome after >> shutdown, but I think that is beyond where this API should be at this point. >> > > If the goal is to be minimal, then I think the API shouldn't concern > itself with cancellation at all (it is kinda a false promise), and > should do what R?mi proposed: Fail on cancellation with a specific > exception (it is a little bit awkward that we have both > `InterruptedException` and `CancellationException`, but something must > be chosen anyway). Completely skipped tasks should not be passed to > `handleCompleted`. > > I know that there is the potential worry that if `shutdown` was > called, then the threads were interrupted, which might have changed > their behaviour even though they returned normally. However - if this > is a worry (and I would say it rarely is) - then it is trivial to > handle by the caller, since the caller knows that it called > `shutdown`. From attila.kelemen85 at gmail.com Sat May 13 13:37:47 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 13 May 2023 15:37:47 +0200 Subject: Structured concurrency: TaskHandle In-Reply-To: <7E45A494-E111-4A67-8916-9BCC9690BD01@ix.netcom.com> References: <7E45A494-E111-4A67-8916-9BCC9690BD01@ix.netcom.com> Message-ID: Robert Engels ezt ?rta (id?pont: 2023. m?j. 13., Szo, 14:47): > > Expecting or using a result after calling shutdown seems invalid. The UI example seems especially incorrect. If I am a user and attempt to cancel an operation and the system says ?hey here?s your answer anyway? that does not match the user intent - which is a bad UX. It depends on the circumstances. Obviously, if showing the result would be obstructive, then you don't show it, but there are other cases: 1. You just cleanly show the computation result on a UI is not a harm, if the UI would remain visible after the cancellation anyway. 2. STS will clearly not manage transactions, and operations often have side effects. An API like this can never really promise that a cancellation will be honored. In which case it is better not to hide the fact from the user, that you actually completed the action, or at least know that the process was started, so there might be something to inspect. At least I hate UIs that when I cancel the operation, they don't do it, then outright lie to me that it was canceled. That breaks my expectation even worse, then ignoring the cancellation (which is quite often within the allowed set of behaviours). From attila.kelemen85 at gmail.com Sat May 13 13:40:05 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 13 May 2023 15:40:05 +0200 Subject: Structured concurrency: TaskHandle In-Reply-To: References: <7E45A494-E111-4A67-8916-9BCC9690BD01@ix.netcom.com> Message-ID: Correction: I meant " they don't cancel it" instead of " they don't do it". Attila Kelemen ezt ?rta (id?pont: 2023. m?j. 13., Szo, 15:37): > > Robert Engels ezt ?rta (id?pont: 2023. m?j. > 13., Szo, 14:47): > > > > Expecting or using a result after calling shutdown seems invalid. The UI example seems especially incorrect. If I am a user and attempt to cancel an operation and the system says ?hey here?s your answer anyway? that does not match the user intent - which is a bad UX. > > It depends on the circumstances. Obviously, if showing the result > would be obstructive, then you don't show it, but there are other > cases: > > 1. You just cleanly show the computation result on a UI is not a harm, > if the UI would remain visible after the cancellation anyway. > 2. STS will clearly not manage transactions, and operations often have > side effects. An API like this can never really promise that a > cancellation will be honored. In which case it is better not to hide > the fact from the user, that you actually completed the action, or at > least know that the process was started, so there might be something > to inspect. At least I hate UIs that when I cancel the operation, they > don't do it, then outright lie to me that it was canceled. That breaks > my expectation even worse, then ignoring the cancellation (which is > quite often within the allowed set of behaviours). From attila.kelemen85 at gmail.com Sat May 13 15:13:37 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 13 May 2023 17:13:37 +0200 Subject: Structured concurrency: TaskHandle In-Reply-To: References: <942677310.54335382.1683887982875.JavaMail.zimbra@univ-eiffel.fr> <1987658443.54594249.1683903681628.JavaMail.zimbra@univ-eiffel.fr> <93e04a06-9f06-ce04-3340-b73b2d95a2cd@oracle.com> <1196963866.54696925.1683917795471.JavaMail.zimbra@univ-eiffel.fr> Message-ID: To summarize my (current) opinion: The more I think about it, the more I believe that R?mi's initial assessment was correct, and STS should not concern itself with classifying results into canceled and failed states. This is because what counts as canceled is complicated, and people might want different things in different contexts. Also this would align with Alan's comment that STS is supposed to be something simple. Which is probably the correct call, no matter how I would like to dream about the awesome API solving all the issues. That said, to be simple STS should not try to make "clever" decisions to classify results, but rather tell me what happened as it did (so people can build more opinionated APIs on top of it). What I think should be recorded: 1. The result of a task state should either be Failed(Throwable) or Success(result). Not even RUNNING state is necessary, because what can I really do with it in the current API, if I can't wait for tasks separately? 2. STS should not be clever, and the result should just mean what the given task did. If it returns normally, then it is "Success" as far as STS can tell (no matter the `shutdown` call). 3. It should record the fact that the task was completely skipped. This could be very good to know info, because then I can efficiently argue what changed (nothing due to this task). 4. It should record the fact that shutdown might have been called prior to the completion of the task. 5. Unrelated to the above, but `TaskState.task()` should be removed. It is dangerous, because it retains objects associated with the task object, and provides very little use. It is also not useful for identifying the task. It is also dangerous, because you very commonly want to wrap task objects. For example, you might want to add a version of fork which runs a `Runnable`, in which case the `Runnable` will be wrapped. From forax at univ-mlv.fr Sat May 13 21:33:24 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 13 May 2023 23:33:24 +0200 (CEST) Subject: STS allows to bypass any checked exceptions Message-ID: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> The more I think about the way STS/TaskHandle manages checked exceptions the less I like it. Here is my problem: Do you agree that this code is kind of awful ? static T bypassCheckedException(Callable callable) { try { return callable.call(); } catch (Exception e) { throw new IllegalStateException("task complete with exception"); } } so why this other one is not static T bypassCheckedException(Callable callable) { try(var sts = new StructuredTaskScope<>()) { var task = sts.fork(callable); try { sts.join(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } return task.get(); } } given that it has exactly the same semantics ? regards, R?mi From attila.kelemen85 at gmail.com Sat May 13 22:24:02 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 00:24:02 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Also, another issue is that, if I shutdown the STS, then every exception happening will be silently discarded with no means to see them. Even though the action can have bugs in case of shutdown. For example, it can run into an NPE or whatever in a mismanaged cleanup. This is, because currently STS does this while running the task: ``` T result = null; Throwable ex = null; try { result = task.call(); } catch (Throwable e) { ex = e; } // invoke handleComplete if the scope has not shutdown if (!scope.isShutdown()) { // ... omitted handleComplete logic } ``` Remi Forax ezt ?rta (id?pont: 2023. m?j. 13., Szo, 23:39): > > The more I think about the way STS/TaskHandle manages checked exceptions the less I like it. > > Here is my problem: > > Do you agree that this code is kind of awful ? > > static T bypassCheckedException(Callable callable) { > try { > return callable.call(); > } catch (Exception e) { > throw new IllegalStateException("task complete with exception"); > } > } > > so why this other one is not > > static T bypassCheckedException(Callable callable) { > try(var sts = new StructuredTaskScope<>()) { > var task = sts.fork(callable); > try { > sts.join(); > } catch (InterruptedException e) { > Thread.currentThread().interrupt(); > } > return task.get(); > } > } > > given that it has exactly the same semantics ? > > regards, > R?mi From Alan.Bateman at oracle.com Sun May 14 05:15:23 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 06:15:23 +0100 Subject: Generic parameter of StructuredTaskScope In-Reply-To: References: Message-ID: <7d0959d4-b868-5c0f-afd6-8ee8a87a5951@oracle.com> On 13/05/2023 12:04, Attila Kelemen wrote: > : > > But otherwise yes, it is a bit strange that ShutdownOnFailure denies > me the option when it only saves me two characters "<>", and if saving > character is the goal, then they could have factory methods (and these > two classes don't even have to be directly exposed, since they are > final anyway). These classes are exposed as they define the APIs for processing the outcome of the policies that they implement. It doesn't make sense to have them on the base class. -Alan From Alan.Bateman at oracle.com Sun May 14 05:24:32 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 06:24:32 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> On 13/05/2023 22:33, Remi Forax wrote: > : > > static T bypassCheckedException(Callable callable) { > try(var sts = new StructuredTaskScope<>()) { > var task = sts.fork(callable); > try { > sts.join(); > } catch (InterruptedException e) { > Thread.currentThread().interrupt(); > } > return task.get(); > } > } > I think the subject line is a bit misleading :-) I think you are asking about continuing when join is interrupted (or the deadline is reached with joinUntil). Right now, the spec for ensureOwnerAndJoined is that ISE is thrown if the owner did not invoke join after forking. It doesn't make it clear what this means if join doesn't complete successfully. It's different for close, it should throw if join as been attempted. There's a more general question when you have a sequence of phases that I was mulling over recently. Thanks for bringing it up. -Alan From Alan.Bateman at oracle.com Sun May 14 05:34:06 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 06:34:06 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> On 13/05/2023 23:24, Attila Kelemen wrote: > Also, another issue is that, if I shutdown the STS, then every > exception happening will be silently discarded with no means to see > them. Even though the action can have bugs in case of shutdown. For > example, it can run into an NPE or whatever in a mismanaged cleanup. > The current spec is that handleComplete is not invoked after the scope has been shutdown. Calling shutdown means you've got the outcome, interrupt the unfinished tasks as you don't care about them. Aside from logging, what would your code do?? The equivalent with Executors and Future.cancel is Future::get throwing CancellationException - any logging needs to be in the task. -Alan. From attila.kelemen85 at gmail.com Sun May 14 10:47:46 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 12:47:46 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> Message-ID: > I think the subject line is a bit misleading :-) > > I think you are asking about continuing when join is interrupted (or the > deadline is reached with joinUntil). Right now, the spec for > ensureOwnerAndJoined is that ISE is thrown if the owner did not invoke > join after forking. It doesn't make it clear what this means if join > doesn't complete successfully. It's different for close, it should throw > if join as been attempted. There's a more general question when you have > a sequence of phases that I was mulling over recently. Thanks for > bringing it up. > Though I'm not a spokesperson of R?mi, I interpreted it differently. That is - assuming join is invoked without interruption - my problem with the shown behaviour is that the exception thrown by the `Callable` is discarded and an ISE is thrown instead, so we are losing the original exception which could be used for tracking the issue. From oleksandr.otenko at gmail.com Sun May 14 10:50:11 2023 From: oleksandr.otenko at gmail.com (Alex Otenko) Date: Sun, 14 May 2023 11:50:11 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> Message-ID: "Any logging in the task" is doable if you own the code for it. On Sun, 14 May 2023, 06:34 Alan Bateman, wrote: > On 13/05/2023 23:24, Attila Kelemen wrote: > > Also, another issue is that, if I shutdown the STS, then every > > exception happening will be silently discarded with no means to see > > them. Even though the action can have bugs in case of shutdown. For > > example, it can run into an NPE or whatever in a mismanaged cleanup. > > > The current spec is that handleComplete is not invoked after the scope > has been shutdown. Calling shutdown means you've got the outcome, > interrupt the unfinished tasks as you don't care about them. Aside from > logging, what would your code do? The equivalent with Executors and > Future.cancel is Future::get throwing CancellationException - any > logging needs to be in the task. > > -Alan. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Sun May 14 10:58:00 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 12:58:00 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> Message-ID: > The current spec is that handleComplete is not invoked after the scope > has been shutdown. Calling shutdown means you've got the outcome, > interrupt the unfinished tasks as you don't care about them. Aside from > logging, what would your code do? The equivalent with Executors and > Future.cancel is Future::get throwing CancellationException - any > logging needs to be in the task. Mostly it would be logged, but my issue is a little bit more than that. Consider the following (non-STS) code: ``` try (var resource = create()) { doSomething(resource); } ``` Suppose `resource.close()` fails with an exception, because of a cleanup error (say temporary files remain somewhere). In this case, the whole call fails with an exception, which is the conservative thing to do. In fact, even is `doSomething` fails as well, the exception in `close` will not be hidden (too bad `finally` was not written like this). However, STS creates a trap, because if you forget to handle the exception thrown by the task (basically - as is now - it is forcing you to put everything into a try-catch in each task, otherwise you are just being hopeful), then likely nobody will notice the problem until many cleanup issues accumulate and blow up in your face. From attila.kelemen85 at gmail.com Sun May 14 11:01:40 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 13:01:40 +0200 Subject: Generic parameter of StructuredTaskScope In-Reply-To: <7d0959d4-b868-5c0f-afd6-8ee8a87a5951@oracle.com> References: <7d0959d4-b868-5c0f-afd6-8ee8a87a5951@oracle.com> Message-ID: > > > > But otherwise yes, it is a bit strange that ShutdownOnFailure denies > > me the option when it only saves me two characters "<>", and if saving > > character is the goal, then they could have factory methods (and these > > two classes don't even have to be directly exposed, since they are > > final anyway). > These classes are exposed as they define the APIs for processing the > outcome of the policies that they implement. It doesn't make sense to > have them on the base class. I suppose you are right, I was thinking of - for some reason - aggregating a non constant amount of results, but I realized that can be done anyway. Also, if we wanted a `getAllResults` of some sort (if it would even be useful in practice), then that implementation would probably do something else for you as well. From Alan.Bateman at oracle.com Sun May 14 13:14:30 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 14:14:30 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> Message-ID: On 14/05/2023 11:47, Attila Kelemen wrote: > : > That is - assuming join is invoked without interruption - my problem > with the shown behaviour is that the exception thrown by the > `Callable` is discarded and an ISE is thrown instead, so we are losing > the original exception which could be used for tracking the issue. The `get` method is used to get the result of as task that completed successfully, it's not discarding anything. But maybe you are arguing to stay with Future so that Future::get throws ExecutionException with the exception as the cause? -Alan. From Alan.Bateman at oracle.com Sun May 14 13:17:19 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 14:17:19 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> Message-ID: <255439c8-4dfe-9039-85ea-52968c81601b@oracle.com> On 14/05/2023 11:50, Alex Otenko wrote: > "Any logging in the task" is doable if you own the code for it. > Right, it's really no different to Executors/Futures in that regard. -Alan From attila.kelemen85 at gmail.com Sun May 14 13:24:06 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 15:24:06 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> Message-ID: > The `get` method is used to get the result of as task that completed > successfully, it's not discarding anything. But maybe you are arguing to > stay with Future so that Future::get throws ExecutionException with the > exception as the cause? I wouldn't go as far as to stay with`java.util.concurrent.Future`, but that `get` should throw (as a cause) the exception thrown by the `Callable` as opposed to just ISE alone (could/should be an `ExecutionException` of course instead of ISE). From forax at univ-mlv.fr Sun May 14 14:42:32 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Sun, 14 May 2023 16:42:32 +0200 (CEST) Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> Message-ID: <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "attila kelemen85" > Cc: "loom-dev" > Sent: Sunday, May 14, 2023 3:14:30 PM > Subject: Re: STS allows to bypass any checked exceptions > On 14/05/2023 11:47, Attila Kelemen wrote: >> : >> That is - assuming join is invoked without interruption - my problem >> with the shown behaviour is that the exception thrown by the >> `Callable` is discarded and an ISE is thrown instead, so we are losing >> the original exception which could be used for tracking the issue. > > The `get` method is used to get the result of as task that completed > successfully, it's not discarding anything. But maybe you are arguing to > stay with Future so that Future::get throws ExecutionException with the > exception as the cause? As Attila said, the API of TaskHandle makes it too easy to discard the exception, and and if the exception rarely happens it will be unnecessary hard to debug. I think that TaskHandle.get() throwing ISE if STS.join() is not called before is fine because it's a reproducible scenario, throwing ISE if an exception appears in the callable is not fine because it depends on an external factor. I think the typ of the exception should be tracked by the type system, what I've called "exception transparency" in a previous mail, mainly it means that get() should return the value or throw the exception, the type of the exception, like the type of the value should be a type variable. By seeing TaskHandle as a Supplier, we are pushing users to ignore exceptions thrown by the callable. I would prefer taskHandle::get to be convertible to a Supplier only if the callable does not throw an Exception, otherwise taskHandle::get should be convertible to a Callable. > > -Alan. R?mi From holo3146 at gmail.com Sun May 14 15:11:35 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Sun, 14 May 2023 18:11:35 +0300 Subject: STS allows to bypass any checked exceptions In-Reply-To: <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> Message-ID: I think that generally the fact that the interfaces of j.u.function are built without proper exception parameter pushes the problem, and that a more complete solution is to maybe create j.u.f.exceptionally that contains the "correct" implementations. This exact same problem was discussed when talking about ScopedValues, and it appears in a lot of place outside of loom as well and as long as there is no way to handle exceptions correctly in lambda provided by the standard library, more and more people will get "hurt" by it By "correct" implementation I am talking about e.g. package java.util.function.exceptionally; @FunctionalInterface public interface Predicate { boolean test(T t) throws E; \\ ...defaults and statics } On Sun, May 14, 2023, 17:43 Remi Forax wrote: > ----- Original Message ----- > > From: "Alan Bateman" > > To: "attila kelemen85" > > Cc: "loom-dev" > > Sent: Sunday, May 14, 2023 3:14:30 PM > > Subject: Re: STS allows to bypass any checked exceptions > > > On 14/05/2023 11:47, Attila Kelemen wrote: > >> : > >> That is - assuming join is invoked without interruption - my problem > >> with the shown behaviour is that the exception thrown by the > >> `Callable` is discarded and an ISE is thrown instead, so we are losing > >> the original exception which could be used for tracking the issue. > > > > The `get` method is used to get the result of as task that completed > > successfully, it's not discarding anything. But maybe you are arguing to > > stay with Future so that Future::get throws ExecutionException with the > > exception as the cause? > > As Attila said, the API of TaskHandle makes it too easy to discard the > exception, and and if the exception rarely happens it will be unnecessary > hard to debug. > > I think that TaskHandle.get() throwing ISE if STS.join() is not called > before is fine because it's a reproducible scenario, throwing ISE if an > exception appears in the callable is not fine because it depends on an > external factor. > > I think the typ of the exception should be tracked by the type system, > what I've called "exception transparency" in a previous mail, > mainly it means that get() should return the value or throw the exception, > the type of the exception, like the type of the value should be a type > variable. > > By seeing TaskHandle as a Supplier, we are pushing users to ignore > exceptions thrown by the callable. > I would prefer taskHandle::get to be convertible to a Supplier only if the > callable does not throw an Exception, otherwise taskHandle::get should be > convertible to a Callable. > > > > > -Alan. > > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: From oleksandr.otenko at gmail.com Sun May 14 15:28:01 2023 From: oleksandr.otenko at gmail.com (Alex Otenko) Date: Sun, 14 May 2023 16:28:01 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: <255439c8-4dfe-9039-85ea-52968c81601b@oracle.com> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <9a32739d-ae02-1ce8-a4c1-32211f2debce@oracle.com> <255439c8-4dfe-9039-85ea-52968c81601b@oracle.com> Message-ID: Yes, but precedent is not a good reason to perpetuate the experience. In other languages / frameworks there is a notion of uncaught exceptions, and there is a way to get at them. On Sun, 14 May 2023, 14:17 Alan Bateman, wrote: > On 14/05/2023 11:50, Alex Otenko wrote: > > "Any logging in the task" is doable if you own the code for it. > > > Right, it's really no different to Executors/Futures in that regard. > > -Alan > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Sun May 14 16:00:51 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 14 May 2023 17:00:51 +0100 Subject: STS allows to bypass any checked exceptions In-Reply-To: <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 14/05/2023 15:42, Remi Forax wrote: > : > I think that TaskHandle.get() throwing ISE if STS.join() is not called before is fine because it's a reproducible scenario, throwing ISE if an exception appears in the callable is not fine because it depends on an external factor. > Maybe we need to improve the JEPs or javadoc but we seem to be failing to get across the point that the policy for exceptions is implemented by the subclass. You are right that if you ignore everything and assume a task has completed successfully then it will be problematic, the ISE was never intended to communicate the exception. -Alan From forax at univ-mlv.fr Sun May 14 16:30:44 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sun, 14 May 2023 18:30:44 +0200 (CEST) Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> > From: "Holo The Sage Wolf" > To: "Remi Forax" > Cc: "Alan Bateman" , "attila kelemen85" > , "loom-dev" > Sent: Sunday, May 14, 2023 5:11:35 PM > Subject: Re: STS allows to bypass any checked exceptions > I think that generally the fact that the interfaces of j.u.function are built > without proper exception parameter pushes the problem, and that a more complete > solution is to maybe create j.u.f.exceptionally that contains the "correct" > implementations. There is no proper union types in the Java type system so no way to union several exceptions as one type parameter so even if j.u.f interfaces where parametrized by an exception type, the stream API could not have using them properly. This is different for STS, for STS you declare the common type of result values upfront when creating the STS so you can also declare the common type of the exceptions too. In the detail you also need to single out InterruptedException because otherwise the common supertype should be always Exception. That's why the equivalent of a Callable for STS should be interface Invokable { T invoke() throws E, InterruptedException; } In that case, inside TaskHandle, the method get() becomes interface TaskHandle { enum State { SUCCESS, FAILED, CANCELLED, RUNNING } State state(); T get() throws E, CancelledException } With the CancelledException being thrown either because someone has called STS.shutdown() or because the Invokable throws InterruptedException (via a call to a library by example). CancelledException should a runtime exception because the user of STS know if shutdown() can be called (explicitly or implicitly by using the subclasses ShutdownOnXX). This works great especially if STS.handleComplete() does not a TaskHandle as parameter but another object because handleComplete() is not called with a running task or a cancelled task, so that object only need to represent the union SUCCESS(T value) | FAILED(E exception). regards, R?mi > On Sun, May 14, 2023, 17:43 Remi Forax < [ mailto:forax at univ-mlv.fr | > forax at univ-mlv.fr ] > wrote: >> ----- Original Message ----- >>> From: "Alan Bateman" < [ mailto:Alan.Bateman at oracle.com | >> > Alan.Bateman at oracle.com ] > >>> To: "attila kelemen85" < [ mailto:attila.kelemen85 at gmail.com | >> > attila.kelemen85 at gmail.com ] > >> > Cc: "loom-dev" < [ mailto:loom-dev at openjdk.org | loom-dev at openjdk.org ] > >> > Sent: Sunday, May 14, 2023 3:14:30 PM >> > Subject: Re: STS allows to bypass any checked exceptions >> > On 14/05/2023 11:47, Attila Kelemen wrote: >> >> : >> >> That is - assuming join is invoked without interruption - my problem >> >> with the shown behaviour is that the exception thrown by the >> >> `Callable` is discarded and an ISE is thrown instead, so we are losing >> >> the original exception which could be used for tracking the issue. >> > The `get` method is used to get the result of as task that completed >> > successfully, it's not discarding anything. But maybe you are arguing to >> > stay with Future so that Future::get throws ExecutionException with the >> > exception as the cause? >> As Attila said, the API of TaskHandle makes it too easy to discard the >> exception, and and if the exception rarely happens it will be unnecessary hard >> to debug. >> I think that TaskHandle.get() throwing ISE if STS.join() is not called before is >> fine because it's a reproducible scenario, throwing ISE if an exception appears >> in the callable is not fine because it depends on an external factor. >> I think the typ of the exception should be tracked by the type system, what I've >> called "exception transparency" in a previous mail, >> mainly it means that get() should return the value or throw the exception, the >> type of the exception, like the type of the value should be a type variable. >> By seeing TaskHandle as a Supplier, we are pushing users to ignore exceptions >> thrown by the callable. >> I would prefer taskHandle::get to be convertible to a Supplier only if the >> callable does not throw an Exception, otherwise taskHandle::get should be >> convertible to a Callable. >> > -Alan. >> R?mi -------------- next part -------------- An HTML attachment was scrubbed... URL: From holo3146 at gmail.com Sun May 14 17:10:14 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Sun, 14 May 2023 20:10:14 +0300 Subject: STS allows to bypass any checked exceptions In-Reply-To: <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> Message-ID: There is no proper union types in the Java type system so no way to union several exceptions as one type parameter so even if j.u.f interfaces where parametrized by an exception type, the stream API could not have using them properly. This is correct (although union type alone is not enough for the Stream API, see [1]), but this is not an excuse to not add a better standards for other places (e.g. the ScopedValues) need to single out InterruptedException It honestly escaped my mind, greate point. If we are already on the subject, as you stated, STS#handleComplete has only 2 possible states, success and failure, so why not completely separate them: STS#handleSuccess(T result, Callable task [, boolean cancelled]) STS#handleFailure(Throwable exception, Callable task [, boolean cancelled]) (note that we can?t use parameterize exception here) [1] https://mail.openjdk.org/pipermail/amber-dev/2023-March/007858.html On Sun, May 14, 2023 at 7:30?PM wrote: > > > ------------------------------ > > *From: *"Holo The Sage Wolf" > *To: *"Remi Forax" > *Cc: *"Alan Bateman" , "attila kelemen85" < > attila.kelemen85 at gmail.com>, "loom-dev" > *Sent: *Sunday, May 14, 2023 5:11:35 PM > *Subject: *Re: STS allows to bypass any checked exceptions > > I think that generally the fact that the interfaces of j.u.function are > built without proper exception parameter pushes the problem, and that a > more complete solution is to maybe create j.u.f.exceptionally that contains > the "correct" implementations. > > > There is no proper union types in the Java type system so no way to union > several exceptions as one type parameter so even if j.u.f interfaces where > parametrized by an exception type, the stream API could not have using them > properly. > > This is different for STS, for STS you declare the common type of result > values upfront when creating the STS so you can also declare the common > type of the exceptions too. > In the detail you also need to single out InterruptedException because > otherwise the common supertype should be always Exception. > > That's why the equivalent of a Callable for STS should be > interface Invokable { > T invoke() throws E, InterruptedException; > } > > In that case, inside TaskHandle, the method get() becomes > interface TaskHandle { > enum State { SUCCESS, FAILED, CANCELLED, RUNNING } > State state(); > T get() throws E, CancelledException > } > > With the CancelledException being thrown either because someone has called > STS.shutdown() or because the Invokable throws InterruptedException (via a > call to a library by example). > CancelledException should a runtime exception because the user of STS know > if shutdown() can be called (explicitly or implicitly by using the > subclasses ShutdownOnXX). > > This works great especially if STS.handleComplete() does not a TaskHandle > as parameter but another object because handleComplete() is not called with > a running task or a cancelled task, so that object only need to represent > the union SUCCESS(T value) | FAILED(E exception). > > regards, > R?mi > > > On Sun, May 14, 2023, 17:43 Remi Forax wrote: > >> ----- Original Message ----- >> > From: "Alan Bateman" >> > To: "attila kelemen85" >> > Cc: "loom-dev" >> > Sent: Sunday, May 14, 2023 3:14:30 PM >> > Subject: Re: STS allows to bypass any checked exceptions >> >> > On 14/05/2023 11:47, Attila Kelemen wrote: >> >> : >> >> That is - assuming join is invoked without interruption - my problem >> >> with the shown behaviour is that the exception thrown by the >> >> `Callable` is discarded and an ISE is thrown instead, so we are losing >> >> the original exception which could be used for tracking the issue. >> > >> > The `get` method is used to get the result of as task that completed >> > successfully, it's not discarding anything. But maybe you are arguing to >> > stay with Future so that Future::get throws ExecutionException with the >> > exception as the cause? >> >> As Attila said, the API of TaskHandle makes it too easy to discard the >> exception, and and if the exception rarely happens it will be unnecessary >> hard to debug. >> >> I think that TaskHandle.get() throwing ISE if STS.join() is not called >> before is fine because it's a reproducible scenario, throwing ISE if an >> exception appears in the callable is not fine because it depends on an >> external factor. >> >> I think the typ of the exception should be tracked by the type system, >> what I've called "exception transparency" in a previous mail, >> mainly it means that get() should return the value or throw the >> exception, the type of the exception, like the type of the value should be >> a type variable. >> >> By seeing TaskHandle as a Supplier, we are pushing users to ignore >> exceptions thrown by the callable. >> I would prefer taskHandle::get to be convertible to a Supplier only if >> the callable does not throw an Exception, otherwise taskHandle::get should >> be convertible to a Callable. >> >> > >> > -Alan. >> >> R?mi >> > > -- Holo The Wise Wolf Of Yoitsu -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Sun May 14 17:22:04 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 19:22:04 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > If we are already on the subject, as you stated, STS#handleComplete has only 2 possible states, success and failure, so why not completely separate them: > > STS#handleSuccess(T result, Callable task [, boolean cancelled]) > STS#handleFailure(Throwable exception, Callable task [, boolean cancelled]) (note that we can?t use parameterize exception here) > I don't think there would be even an easy way around this, because you can't reasonably create a common base type for the two results (previously - as R?mi said - I thought sealed interfaces would be solution, but that is impossible due to the generic parameter), unless you pass the `TaskHandle` where you could call the appropriate method based on the state. Also, I'm not even sure why the `Callable` is being passed around here. What is STS supposed to do with that? It can't really use it as an ID, because you might be running the same `Callable` instance multiple times. Also, passing it just makes you nervous wrapping it (which you might be forced to do in some cases). If a feature of being able to distinguish between tasks is needed, then `fork` should allow associating an additional custom object with the submitted `Callable`. But - to me - it seems that is going too far with STS. From holo3146 at gmail.com Sun May 14 17:38:28 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Sun, 14 May 2023 20:38:28 +0300 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> Message-ID: don?t think there would be even an easy way around this, because you can?t reasonably create a common base type for the two results I don?t think I understand your point, STS receives the parameter of the return type, so you can do STS#handleSuccess(T result, ...). And similarly, you don?t have a parameter for the exception type so you can?t do this for STS#handleFailure why the Callable is being passed around It can, by using type-checks in some custom STS implementation, but I agree that it shouldn?t be the normal behavior. On Sun, May 14, 2023 at 8:22?PM Attila Kelemen wrote: > > If we are already on the subject, as you stated, STS#handleComplete has > only 2 possible states, success and failure, so why not completely separate > them: > > > > STS#handleSuccess(T result, Callable task [, boolean cancelled]) > > STS#handleFailure(Throwable exception, Callable task [, boolean > cancelled]) (note that we can?t use parameterize exception here) > > > > I don't think there would be even an easy way around this, because you > can't reasonably create a common base type for the two results > (previously - as R?mi said - I thought sealed interfaces would be > solution, but that is impossible due to the generic parameter), unless > you pass the `TaskHandle` where you could call the appropriate method > based on the state. > > Also, I'm not even sure why the `Callable` is being passed around > here. What is STS supposed to do with that? It can't really use it as > an ID, because you might be running the same `Callable` instance > multiple times. Also, passing it just makes you nervous wrapping it > (which you might be forced to do in some cases). If a feature of being > able to distinguish between tasks is needed, then `fork` should allow > associating an additional custom object with the submitted `Callable`. > But - to me - it seems that is going too far with STS. > -- Holo The Wise Wolf Of Yoitsu -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Sun May 14 17:51:00 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 19:51:00 +0200 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <15d1aaa4-c05b-a42e-d440-2eab41665db7@oracle.com> <1503854960.55228115.1684075352410.JavaMail.zimbra@univ-eiffel.fr> <958543522.55259750.1684081844860.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Holo The Sage Wolf ezt ?rta (id?pont: 2023. m?j. 14., V, 19:38): > > don?t think there would be even an easy way around this, because you > can?t reasonably create a common base type for the two results > > I don?t think I understand your point, STS receives the parameter of the return type, so you can do STS#handleSuccess(T result, ...). > And similarly, you don?t have a parameter for the exception type so you can?t do this for STS#handleFailure > Sorry, for being confusing. I meant that what you wrote is basically the only way, if the `TaskHandle` itself is not passed around (of course you can always create something very similar to `TaskHandle` instead, but that would be without any purpose). This is because it is not possible to create a common base type `sealed interface Result`, because then, if `Result` is non-generic, then you will force an unsafe cast (as far as the compiler can tell) on the `Success` implementation of `Result. If `Result` is generic, then you are forcing an unused generic parameter on the `Failure` implementation of `Result`, which is awkward. > why the Callable is being passed around > > It can, by using type-checks in some custom STS implementation, but I agree that it shouldn?t be the normal behavior. > Yes, it is technically possible, but my point was that it would be quite awkward, given that `Callable` instances are prone to being wrapped. In fact - I believe - if function types were a thing in Java, then `fork` would expect one, where it would be (probably) really impossible. Which makes relying on the fact that you can have a known implementing class (or extending interface) of `Callable` a little dubious. From forax at univ-mlv.fr Sun May 14 18:28:06 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Sun, 14 May 2023 20:28:06 +0200 (CEST) Subject: STS.handleComplete() is not correctly typed Message-ID: <905333286.55273229.1684088886784.JavaMail.zimbra@univ-eiffel.fr> The STS is typed by the common super type of all callables, but a TaskHandle can be typed by a subtype of that type, so the implementation of STS has to use an unsafe cast somewhere. To be correctly typed, handleComplete should take a TaskHandle. Here is an example that does not compile showing the typing issue. public static void main(String[] args) throws InterruptedException { class SubSTS extends StructuredTaskScope { public TaskHandle fork(Callable callable) { return super.fork(callable); } @Override protected void handleComplete(TaskHandle handle) { super.handleComplete(handle); } } try(var sts = new SubSTS()) { var handle = sts.fork(() -> "hello"); sts.handleComplete(handle); // called explicitly sts.join(); } } Or handleComplete should not take a task handle but another type (like Result). R?mi From attila.kelemen85 at gmail.com Sun May 14 18:56:07 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sun, 14 May 2023 20:56:07 +0200 Subject: STS.handleComplete() is not correctly typed In-Reply-To: <905333286.55273229.1684088886784.JavaMail.zimbra@univ-eiffel.fr> References: <905333286.55273229.1684088886784.JavaMail.zimbra@univ-eiffel.fr> Message-ID: To be fair, STS does not make the promise that you should be able to do that. The returned `TaskHandle` could be different than what is being passed to `handleComplete` (though it isn't actually), and it would be possible for STS to call `handleComplete` without unsafe casts (besides the return type of `TaskHandle.task()`). That said, it does unsafe casts leading to the two unsafe types in its `TaskHandle` implementation: ``` TaskRunner(StructuredTaskScope scope, Callable task) { this.scope = (StructuredTaskScope) scope; this.task = (Callable) task; } ``` Also, if by `Result`, you mean a sealed interface which could be success or failure (or whatever else), then it would be awkward actually, because then you are forcing its `Failure` implementation to have a completely unused generic parameter which would be confusing. Remi Forax ezt ?rta (id?pont: 2023. m?j. 14., V, 20:29): > > The STS is typed by the common super type of all callables, but a TaskHandle can be typed by a subtype of that type, so the implementation of STS has to use an unsafe cast somewhere. > > To be correctly typed, handleComplete should take a TaskHandle. > > Here is an example that does not compile showing the typing issue. > > public static void main(String[] args) throws InterruptedException { > class SubSTS extends StructuredTaskScope { > public TaskHandle fork(Callable callable) { > return super.fork(callable); > } > > @Override > protected void handleComplete(TaskHandle handle) { > super.handleComplete(handle); > } > } > try(var sts = new SubSTS()) { > var handle = sts.fork(() -> "hello"); > sts.handleComplete(handle); // called explicitly > sts.join(); > } > } > > Or handleComplete should not take a task handle but another type (like Result). > > R?mi From ron.pressler at oracle.com Sun May 14 22:42:16 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Sun, 14 May 2023 22:42:16 +0000 Subject: STS allows to bypass any checked exceptions In-Reply-To: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Both are awful and the second isn?t only awful but clearly uses the API in a way the documentation warns against. The purpose of STS is for the scope to not handle subtasks individually but always as a unit. Therefore, exception and result handling should be done collectively. However, we offer a way to get individual subtasks? results to address the specific but common case where different subtasks return different types. The ISE thrown by get means one thing: there?s a bug in your code because you?ve used the API incorrectly. If you find your scope code interested in a particular task?s exception, you?re either doing something advanced or wrong. In fact, if you?re using STS without a policy you?re either wrong or advanced. One decision we wanted to postpone was whether or not to force users to use a policy. If real users end up doing things similar to what you?re demonstrating ? which I guess we'll find out during the preview ? that may well be what we do. We wanted to keep the option of not using a policy open for the benefit of advanced users, and obviously they can use the API incorrectly (in this case ? intentionally). But if regular users fall into the same trap, we may choose to enforce what is now merely a recommendation. ? Ron > On 13 May 2023, at 17:33, Remi Forax wrote: > > The more I think about the way STS/TaskHandle manages checked exceptions the less I like it. > > Here is my problem: > > Do you agree that this code is kind of awful ? > > static T bypassCheckedException(Callable callable) { > try { > return callable.call(); > } catch (Exception e) { > throw new IllegalStateException("task complete with exception"); > } > } > > so why this other one is not > > static T bypassCheckedException(Callable callable) { > try(var sts = new StructuredTaskScope<>()) { > var task = sts.fork(callable); > try { > sts.join(); > } catch (InterruptedException e) { > Thread.currentThread().interrupt(); > } > return task.get(); > } > } > > given that it has exactly the same semantics ? > > regards, > R?mi From ron.pressler at oracle.com Sun May 14 23:18:14 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Sun, 14 May 2023 23:18:14 +0000 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: P.S. Let me explain the design choices at a higher level. We were well aware that we could make the API more ?correct-by-construction? by making fork and join protected and letting each policy define its own API. But that has the downside of hiding the commonality of structured concurrency, which we wanted to make clear, especially as it?s a relatively new concept, so we decided to opt for a common fork, and a join the returns the scope so that the idiomatic uses are: return scope.join().result(); or scope.join().throwIfFailed(); This decision meant that APIs could be used incorrectly, but doing so will likely result in unchecked exceptions that signify a bug in client code. The question, therefore, is not whether the API *could* be used incorrectly but whether it *will* frequently be used incorrectly, which is what we hope to find out during the preview. Keeping fork and join public but forbidding the instantiation of the superclass (STS) is another option that lies between the current API and the more extreme ?correct by construction? option, where fork and join are also protected. For the first preview we wanted the most lenient option, and then we?ll choose whether (and by how much) we may want to make STS more constrained. ? Ron > On 14 May 2023, at 18:42, Ron Pressler wrote: > > Both are awful and the second isn?t only awful but clearly uses the API in a way the documentation warns against. The purpose of STS is for the scope to not handle subtasks individually but always as a unit. Therefore, exception and result handling should be done collectively. However, we offer a way to get individual subtasks? results to address the specific but common case where different subtasks return different types. The ISE thrown by get means one thing: there?s a bug in your code because you?ve used the API incorrectly. > > If you find your scope code interested in a particular task?s exception, you?re either doing something advanced or wrong. In fact, if you?re using STS without a policy you?re either wrong or advanced. > > One decision we wanted to postpone was whether or not to force users to use a policy. If real users end up doing things similar to what you?re demonstrating ? which I guess we'll find out during the preview ? that may well be what we do. We wanted to keep the option of not using a policy open for the benefit of advanced users, and obviously they can use the API incorrectly (in this case ? intentionally). But if regular users fall into the same trap, we may choose to enforce what is now merely a recommendation. > > ? Ron > >> On 13 May 2023, at 17:33, Remi Forax wrote: >> >> The more I think about the way STS/TaskHandle manages checked exceptions the less I like it. >> >> Here is my problem: >> >> Do you agree that this code is kind of awful ? >> >> static T bypassCheckedException(Callable callable) { >> try { >> return callable.call(); >> } catch (Exception e) { >> throw new IllegalStateException("task complete with exception"); >> } >> } >> >> so why this other one is not >> >> static T bypassCheckedException(Callable callable) { >> try(var sts = new StructuredTaskScope<>()) { >> var task = sts.fork(callable); >> try { >> sts.join(); >> } catch (InterruptedException e) { >> Thread.currentThread().interrupt(); >> } >> return task.get(); >> } >> } >> >> given that it has exactly the same semantics ? >> >> regards, >> R?mi > From josiahnoel at gmail.com Mon May 15 01:00:45 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Sun, 14 May 2023 21:00:45 -0400 Subject: How I currently use structured concurrency Message-ID: Heya, not exactly sure if this is the place for this, but thought I'd share how I'm currently using SC with JDK 20 as a backend dev. For some non-critical services and some side projects, I've been refactored from reactive to imperative style. Normally when I use SC it's to orchestrate multiple API/DB calls and to cancel the tasks if a subtasks fail. The underlying resources are usually managed by my DI framework (usually Spring or Avaje), so I don't really have custom logic to clean up resources. The only (admittedly minor) complaints I have are the lack of a runnable fork variation and the annoying checked exceptions. Other than that, works like a dream. Below is a ShutdownOnFailure wrapper class I typically use to get around the 2 complaints. public class UncheckedShutdownOnFailure implements AutoCloseable { private final ShutdownOnFailure scope = new ShutdownOnFailure(); public Future fork(Callable task) { return scope.fork(task); } public Future fork(Runnable task) { return scope.fork(Executors.callable(task)); } public void join() { try { scope.join().throwIfFailed(this::uncheck); } catch (final InterruptedException e) { Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } private RuntimeException uncheck(Throwable t) { if (t instanceof final RuntimeException ex) { return ex; } return new IllegalStateException(t); } @Override public void close() { scope.close(); } } -- Cheers, Josiah. -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Mon May 15 13:40:58 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Mon, 15 May 2023 15:40:58 +0200 (CEST) Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1354493027.55794575.1684158058891.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Monday, May 15, 2023 1:18:14 AM > Subject: Re: STS allows to bypass any checked exceptions > P.S. > > Let me explain the design choices at a higher level. We were well aware that we > could make the API more ?correct-by-construction? by making fork and join > protected and letting each policy define its own API. Or better provide an AbstractFlockManager (whatever the name) and let all STSs to internally delegate to that object the same way AbstractQueueSynchronizer powers the different lock APIs in java.uti.concurrent.locks; > But that has the downside > of hiding the commonality of structured concurrency, which we wanted to make > clear, especially as it?s a relatively new concept, so we decided to opt for a > common fork, and a join the returns the scope so that the idiomatic uses are: > > return scope.join().result(); > > or > > scope.join().throwIfFailed(); > > This decision meant that APIs could be used incorrectly, but doing so will > likely result in unchecked exceptions that signify a bug in client code. yes, but if that exception is only thrown in case of an infrequent exception, we have a problem. > > The question, therefore, is not whether the API *could* be used incorrectly but > whether it *will* frequently be used incorrectly, which is what we hope to find > out during the preview. Keeping fork and join public but forbidding the > instantiation of the superclass (STS) is another option that lies between the > current API and the more extreme ?correct by construction? option, where fork > and join are also protected. For the first preview we wanted the most lenient > option, and then we?ll choose whether (and by how much) we may want to make STS > more constrained. I don't disagree, having something open at an early stage of design is a good idea. I hope that you are reading my emails as feedback from someone playing with the STS API. > > ? Ron R?mi > >> On 14 May 2023, at 18:42, Ron Pressler wrote: >> >> Both are awful and the second isn?t only awful but clearly uses the API in a way >> the documentation warns against. The purpose of STS is for the scope to not >> handle subtasks individually but always as a unit. Therefore, exception and >> result handling should be done collectively. However, we offer a way to get >> individual subtasks? results to address the specific but common case where >> different subtasks return different types. The ISE thrown by get means one >> thing: there?s a bug in your code because you?ve used the API incorrectly. >> >> If you find your scope code interested in a particular task?s exception, you?re >> either doing something advanced or wrong. In fact, if you?re using STS without >> a policy you?re either wrong or advanced. >> >> One decision we wanted to postpone was whether or not to force users to use a >> policy. If real users end up doing things similar to what you?re demonstrating >> ? which I guess we'll find out during the preview ? that may well be what we >> do. We wanted to keep the option of not using a policy open for the benefit of >> advanced users, and obviously they can use the API incorrectly (in this case ? >> intentionally). But if regular users fall into the same trap, we may choose to >> enforce what is now merely a recommendation. >> >> ? Ron >> >>> On 13 May 2023, at 17:33, Remi Forax wrote: >>> >>> The more I think about the way STS/TaskHandle manages checked exceptions the >>> less I like it. >>> >>> Here is my problem: >>> >>> Do you agree that this code is kind of awful ? >>> >>> static T bypassCheckedException(Callable callable) { >>> try { >>> return callable.call(); >>> } catch (Exception e) { >>> throw new IllegalStateException("task complete with exception"); >>> } >>> } >>> >>> so why this other one is not >>> >>> static T bypassCheckedException(Callable callable) { >>> try(var sts = new StructuredTaskScope<>()) { >>> var task = sts.fork(callable); >>> try { >>> sts.join(); >>> } catch (InterruptedException e) { >>> Thread.currentThread().interrupt(); >>> } >>> return task.get(); >>> } >>> } >>> >>> given that it has exactly the same semantics ? >>> >>> regards, >>> R?mi From forax at univ-mlv.fr Mon May 15 13:47:48 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Mon, 15 May 2023 15:47:48 +0200 (CEST) Subject: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1101666193.55800079.1684158468334.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Monday, May 15, 2023 12:42:16 AM > Subject: Re: STS allows to bypass any checked exceptions > Both are awful and the second isn?t only awful but clearly uses the API in a way > the documentation warns against. The purpose of STS is for the scope to not > handle subtasks individually but always as a unit. Therefore, exception and > result handling should be done collectively. However, we offer a way to get > individual subtasks? results to address the specific but common case where > different subtasks return different types. The ISE thrown by get means one > thing: there?s a bug in your code because you?ve used the API incorrectly. > > If you find your scope code interested in a particular task?s exception, you?re > either doing something advanced or wrong. In fact, if you?re using STS without > a policy you?re either wrong or advanced. I agree, for both ShutdownXX policies, accessing to a particular task's exception is a bug. But the class STS itself is not abstract, and in that case it makes sense to use the task exception, by example, if you have two different pricing API and you want a semantics like this, if both services answer, take the minimum price, or take the price of the one that answer otherwise if none answer, throws the first exception. > > One decision we wanted to postpone was whether or not to force users to use a > policy. If real users end up doing things similar to what you?re demonstrating > ? which I guess we'll find out during the preview ? that may well be what we > do. We wanted to keep the option of not using a policy open for the benefit of > advanced users, and obviously they can use the API incorrectly (in this case ? > intentionally). But if regular users fall into the same trap, we may choose to > enforce what is now merely a recommendation. > > ? Ron R?mi > >> On 13 May 2023, at 17:33, Remi Forax wrote: >> >> The more I think about the way STS/TaskHandle manages checked exceptions the >> less I like it. >> >> Here is my problem: >> >> Do you agree that this code is kind of awful ? >> >> static T bypassCheckedException(Callable callable) { >> try { >> return callable.call(); >> } catch (Exception e) { >> throw new IllegalStateException("task complete with exception"); >> } >> } >> >> so why this other one is not >> >> static T bypassCheckedException(Callable callable) { >> try(var sts = new StructuredTaskScope<>()) { >> var task = sts.fork(callable); >> try { >> sts.join(); >> } catch (InterruptedException e) { >> Thread.currentThread().interrupt(); >> } >> return task.get(); >> } >> } >> >> given that it has exactly the same semantics ? >> >> regards, > > R?mi From ron.pressler at oracle.com Mon May 15 13:52:01 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Mon, 15 May 2023 13:52:01 +0000 Subject: [External] : Re: STS allows to bypass any checked exceptions In-Reply-To: <1354493027.55794575.1684158058891.JavaMail.zimbra@univ-eiffel.fr> References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <1354493027.55794575.1684158058891.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > On 15 May 2023, at 09:40, forax at univ-mlv.fr wrote: > > > Or better provide an AbstractFlockManager (whatever the name) and let all STSs to internally delegate to that object the same way AbstractQueueSynchronizer powers the different lock APIs in java.uti.concurrent.locks; Sure, the plan is to do that, too. > > yes, but if that exception is only thrown in case of an infrequent exception, we have a problem. The slight awkwardness is only in situations where forks don?t throw checked exceptions, but the given that threads are designed for blocking operations, typically IO, that should be the less common case. In fact, if all the tasks do is computation, then a parallel stream might be more appropriate, anyway. > > I don't disagree, having something open at an early stage of design is a good idea. > I hope that you are reading my emails as feedback from someone playing with the STS API. Absolutely! It?s just that we know that the API can be used incorrectly. What we want to find out is whether regular users will frequently use the API incorrectly. ? Ron From ron.pressler at oracle.com Mon May 15 14:19:27 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Mon, 15 May 2023 14:19:27 +0000 Subject: How I currently use structured concurrency In-Reply-To: References: Message-ID: I think that combining join with throwIsFailed is perfectly reasonable, and it even was a design we considered but preferred the STS one for pedagogical reasons (we hope to learn if that decision was the right one). But representing cancellation (i.e. interruption) ? a perfectly valid behaviour for correct code even in the case of no environmental errors ? as an unchecked exception, which usually represents a bug, is not the Java way. Obviously anyone is free to do that, but it?s not something we would consider for a standard API. ? Ron > On 14 May 2023, at 21:00, Josiah Noel wrote: > > Heya, not exactly sure if this is the place for this, but thought I'd share how I'm currently using SC with JDK 20 as a backend dev. > > For some non-critical services and some side projects, I've been refactored from reactive to imperative style. Normally when I use SC it's to orchestrate multiple API/DB calls and to cancel the tasks if a subtasks fail. The underlying resources are usually managed by my DI framework (usually Spring or Avaje), so I don't really have custom logic to clean up resources. > > The only (admittedly minor) complaints I have are the lack of a runnable fork variation and the annoying checked exceptions. Other than that, works like a dream. > > Below is a ShutdownOnFailure wrapper class I typically use to get around the 2 complaints. > > public class UncheckedShutdownOnFailure implements AutoCloseable { > > private final ShutdownOnFailure scope = new ShutdownOnFailure(); > > public Future fork(Callable task) { > > return scope.fork(task); > } > > public Future fork(Runnable task) { > > return scope.fork(Executors.callable(task)); > } > > public void join() { > > try { > > scope.join().throwIfFailed(this::uncheck); > > } catch (final InterruptedException e) { > > Thread.currentThread().interrupt(); > > throw new IllegalStateException(e); > } > } > > private RuntimeException uncheck(Throwable t) { > > if (t instanceof final RuntimeException ex) { > return ex; > } > > return new IllegalStateException(t); > } > > @Override > public void close() { > > scope.close(); > } > } > > -- > Cheers, Josiah. From josiahnoel at gmail.com Mon May 15 14:27:33 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Mon, 15 May 2023 10:27:33 -0400 Subject: How I currently use structured concurrency In-Reply-To: References: Message-ID: > I think that combining join with throwIsFailed is perfectly reasonable, > and it even was a design we considered but preferred the STS one for > pedagogical reasons (we hope to learn if that decision was the right one). I actually don't mind that they are separate, to be honest. > But representing cancellation (i.e. interruption) ? a perfectly valid > behaviour for correct code even in the case of no environmental errors ? as > an unchecked exception, which usually represents a bug, is not the Java > way. Obviously anyone is free to do that, but it?s not something we would > consider for a standard API. > The interrupted exception is a necessary evil I suppose. Still, it sure would be convenient if throwIfFailed could have an unchecked version for those cases where none of the subtasks in a scope throw any checked exceptions. Perhaps we could have an alternate version of STS which accepts Supplier instead of Callable? -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Mon May 15 15:56:04 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Mon, 15 May 2023 17:56:04 +0200 Subject: [External] : Re: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <1354493027.55794575.1684158058891.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > > Or better provide an AbstractFlockManager (whatever the name) and let all STSs to internally delegate to that object the same way AbstractQueueSynchronizer powers the different lock APIs in java.uti.concurrent.locks; > > Sure, the plan is to do that, too. > Or is there any plan to provide something even lower level? I mean - if I'm not mistaken - currently the only reason I can't write an STS, because I can't make threads inherit the scoped values. If that ability would be provided, then providing STS in the JDK wouldn't be that necessary, since 3rd party libs could provide it at a lower risk. Or is the internal `ThreadFlock` you are planning to open is planned instead of directly allowing scoped value inheritance / capture? From Alan.Bateman at oracle.com Mon May 15 16:40:58 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 15 May 2023 17:40:58 +0100 Subject: [External] : Re: STS allows to bypass any checked exceptions In-Reply-To: References: <1448714674.55099381.1684013604892.JavaMail.zimbra@univ-eiffel.fr> <1354493027.55794575.1684158058891.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 15/05/2023 16:56, Attila Kelemen wrote: > Or is there any plan to provide something even lower level? I mean - > if I'm not mistaken - currently the only reason I can't write an STS, > because I can't make threads inherit the scoped values. If that > ability would be provided, then providing STS in the JDK wouldn't be > that necessary, since 3rd party libs could provide it at a lower risk. > Or is the internal `ThreadFlock` you are planning to open is planned > instead of directly allowing scoped value inheritance / capture? The lower level infrastructure provides the serviceability support, tree structured and the inheritance of scoped values. In time, as Ron says, it might be that a lower-level API is exposed but not the current JEP. -Alan From duke at openjdk.org Mon May 15 19:48:02 2023 From: duke at openjdk.org (duke) Date: Mon, 15 May 2023 19:48:02 GMT Subject: git: openjdk/loom: fibers: fix from 8307369 Message-ID: <4ff2da44-6f4e-4bb4-a71a-3c46f09a1ae2@openjdk.org> Changeset: 80fd4cc7 Author: Leonid Mesnik Date: 2023-05-15 13:44:54 +0000 URL: https://git.openjdk.org/loom/commit/80fd4cc7e87ab38d0ac765628c244f7c6f257f13 fix from 8307369 ! test/lib/jdk/test/lib/process/ProcessTools.java From duke at openjdk.org Mon May 15 20:17:29 2023 From: duke at openjdk.org (duke) Date: Mon, 15 May 2023 20:17:29 GMT Subject: git: openjdk/loom: fibers: more tests excluded. Message-ID: Changeset: 6feeaa6e Author: Leonid Mesnik Date: 2023-05-15 14:14:34 +0000 URL: https://git.openjdk.org/loom/commit/6feeaa6e78dfaddeacd6cffac3c7613bf5c283c0 more tests excluded. ! test/jdk/ProblemList-Virtual.txt From duke at openjdk.org Mon May 15 20:46:07 2023 From: duke at openjdk.org (duke) Date: Mon, 15 May 2023 20:46:07 GMT Subject: git: openjdk/loom: fibers: more tests excluded. Message-ID: <8f22c85c-d1cf-4506-9e9d-9bd5a62a4aaa@openjdk.org> Changeset: ae5e5918 Author: Leonid Mesnik Date: 2023-05-15 14:44:07 +0000 URL: https://git.openjdk.org/loom/commit/ae5e591836f4d55ec0a9b84eb579fcb52071af19 more tests excluded. ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt From Alexey1.Gavrilov at gmail.com Tue May 16 19:38:37 2023 From: Alexey1.Gavrilov at gmail.com (Alexey Gavrilov) Date: Tue, 16 May 2023 19:38:37 +0000 Subject: ReferenceQueue declared but not used in ThreadContainers (memory leak)? Message-ID: Hi, After switching our Jetty based server application from JDK 18 to JDK 20 I have noticed an increase in heap memory usage when using the G1 garbage collector (measured by MemoryMXBean.getHeapMemoryUsage().getUsed()). Previously a steady memory usage line on the JVM metrics dashboard started going up towards the maximum heap size. I conducted a head dump analysis after several days of up-time and found out that the `jdk.internal.vm.ThreadContainers` class [1] is the biggest garbage collector root. The class static field `ThreadContainers.CONTAINER_REGISTRY contained a set of weakly referenced instances of `ThreadContainer`, the number of items in the set was growing regardless of the garbage collection cycles. I have been observing this behavior on both Temurin and Corretto latest JDK 20 distributions (on Corretto though it took longer time to notice) When I looked closely at the ThreadContainers source code, I noticed a private static`ThreadContainers.QUEUE` field intended to track and remove references eligible for garbage collection. The field contains an instance of the `ReferenceQueue` class which is only used in the `expungeStaleEntries` method and is not actually being populated. I guess the idea was that `QUEUE` should have been passed as a second parameter to the `WeakReference` constructor in the `registerContainer` method, so the reference queue would properly register every new `ThreadContainer` instance. Can someone please check this out? Best regards, Alexey --- [1] https://github.com/openjdk/jdk/blob/f9a785e855287ff6746ac8dc8f8f2e2f90c5be07/src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Tue May 16 19:52:14 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 16 May 2023 20:52:14 +0100 Subject: ReferenceQueue declared but not used in ThreadContainers (memory leak)? In-Reply-To: References: Message-ID: <610eee65-4d14-9db1-87c7-fe43a6e5e7c4@oracle.com> On 16/05/2023 20:38, Alexey Gavrilov wrote: > : > > I guess the idea was that `QUEUE` should have been passed as a second > parameter to the `WeakReference` constructor in the > `registerContainer` method, so the reference queue would properly > register every new `ThreadContainer` instance. Good sleuthing, I suspect this got lost somehow before the integration for JDK 19. I haven't seen any other reports but if there are many pool being created over time then it will be an issue. We'll get a bug created for this and sort it out. Thank you! -Alan From Alexey1.Gavrilov at gmail.com Tue May 16 20:15:34 2023 From: Alexey1.Gavrilov at gmail.com (Alexey Gavrilov) Date: Tue, 16 May 2023 20:15:34 +0000 Subject: ReferenceQueue declared but not used in ThreadContainers (memory leak)? In-Reply-To: <610eee65-4d14-9db1-87c7-fe43a6e5e7c4@oracle.com> References: <610eee65-4d14-9db1-87c7-fe43a6e5e7c4@oracle.com> Message-ID: Thanks Alan for the prompt response! Please share the bug id when you created it. Hopefully it will be fixed soon. Am I correct, this is basically a memory leak? That is, those weak references will never be garbage collected, so the application can eventually crash. Regards, Alexey On Tue, May 16, 2023 at 7:53?PM Alan Bateman wrote: > > On 16/05/2023 20:38, Alexey Gavrilov wrote: > > : > > > > I guess the idea was that `QUEUE` should have been passed as a second > > parameter to the `WeakReference` constructor in the > > `registerContainer` method, so the reference queue would properly > > register every new `ThreadContainer` instance. > > Good sleuthing, I suspect this got lost somehow before the integration > for JDK 19. I haven't seen any other reports but if there are many pool > being created over time then it will be an issue. We'll get a bug > created for this and sort it out. Thank you! > > -Alan > -------------- next part -------------- An HTML attachment was scrubbed... URL: From duke at openjdk.org Wed May 17 02:33:14 2023 From: duke at openjdk.org (duke) Date: Wed, 17 May 2023 02:33:14 GMT Subject: git: openjdk/loom: fibers: more tests problemlisted. Message-ID: <2e1dd812-4e61-4fd1-853a-94c4439e452e@openjdk.org> Changeset: 8d5287a1 Author: Leonid Mesnik Date: 2023-05-16 20:29:21 +0000 URL: https://git.openjdk.org/loom/commit/8d5287a16b91c6c7433880a644577a19fde6ecee more tests problemlisted. ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt From alec at xz.ax Wed May 17 04:25:39 2023 From: alec at xz.ax (Alec Petridis) Date: Tue, 16 May 2023 21:25:39 -0700 Subject: STS allows to bypass any checked exceptions Message-ID: The asymmetry between exception declaration & handling in TaskHandle#get and Callable#call makes it so changes to the throws declaration of a method passed to StructuredTaskScope#fork can be inadvertentlyignored until they cause a problem at runtime. If you were a downstream consumer of an interface like interface TemperatureSensor { ??? double temperature(); } and TemperatureSensor#temperature()'s fallibility changed, existing non-STS usages of the method would not compile: interface TemperatureSensor { ??? double temperature() throws I2CException; } gearboxSensor.temperature(); // compile error: checked exception not caught while existing usages of the method in calls to StructuredTaskScope#fork would compile: try (var scope = new StructuredTaskScope<>()) { ??? var temperatureHandle = scope.fork(gearboxTemperatureSensor::temperature); ??? // ... ??? scope.join(); ??? if (temperatureHandle.get() > GEARBOX_TEMPERATURE_LIMIT) // newly-added checked exception I2CException is not handled ??? ??? emergencyStop(); } A TaskHandle seems a bit like a nullable value in this regard: it's not clear from the declaration point whether a presence check is required before the inner value is accessed. Regards, Alec -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Wed May 17 10:45:44 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 17 May 2023 11:45:44 +0100 Subject: ReferenceQueue declared but not used in ThreadContainers (memory leak)? In-Reply-To: References: <610eee65-4d14-9db1-87c7-fe43a6e5e7c4@oracle.com> Message-ID: On 16/05/2023 21:15, Alexey Gavrilov wrote: > Thanks Alan for the prompt response! > Please share the bug id when you created it. Hopefully it will be > fixed soon. > > Am I correct, this is basically a memory leak? That is, those weak > references will never be garbage collected, so the application can? > eventually crash. The bug is JDK-8308235 [1], PR coming.? Yes, it's the weak references aren't expunged from the registry. If the thread pool is explicitly shutdown or closed before dropping the reference then it will be removed, it's just the case where a thread pool is created and unreferenced without shutdown. This may explain why it hasn't been reported before now.? I checked the history and the original code was correct but some refactoring in mid-2021 meant it was re-added to use the 1-arg rather than 2-arg constructor. -Alan [1] https://bugs.openjdk.org/browse/JDK-8308235 From ron.pressler at oracle.com Wed May 17 12:13:44 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 17 May 2023 12:13:44 +0000 Subject: STS allows to bypass any checked exceptions In-Reply-To: References: Message-ID: <01EBF051-91AF-4205-A7FD-C6A60D9EE362@oracle.com> What you say is true and by design. The correct use of STS requires the centralised handling of exceptions by the policy before calling get, or careful use by those opting not to use a policy. In your example, the API is clearly used incorrectly regardless of what TemperatureSensor.temperature does, as there is no centralised handling of exception before get(). The correct use of the API looks like this: try (var scope = new StructuredTaskScope.ShutdownOnFailure()) { var temperatureHandle = scope.fork(gearboxTemperatureSensor::temperature); // ... scope.join().throwIfFailed(); if (temperatureHandle.get() > GEARBOX_TEMPERATURE_LIMIT) // get is guaranteed to succeed emergencyStop(); } catch (ExecutionException ex) { // now you must handle exceptions } Forcing the correct use of the API has some downsides (see https://mail.openjdk.org/pipermail/loom-dev/2023-May/005601.html) so we?ve so far opted to allow for the possibility of incorrect use and have the JEP and Javadoc inform developers how to use the API correctly. If people frequently end up accidentally using the API incorrectly, we may well change our stance on this. ? Ron > On 17 May 2023, at 05:25, Alec Petridis wrote: > > The asymmetry between exception declaration & handling in TaskHandle#get and Callable#call makes it so changes to the throws declaration of a method passed to StructuredTaskScope#fork can be inadvertently ignored until they cause a problem at runtime. > > > > If you were a downstream consumer of an interface like > > interface TemperatureSensor { > > double temperature(); > > } > > and TemperatureSensor#temperature()'s fallibility changed, existing non-STS usages of the method would not compile: > > interface TemperatureSensor { > > double temperature() throws I2CException; > > } > > gearboxSensor.temperature(); // compile error: checked exception not caught > > while existing usages of the method in calls to StructuredTaskScope#fork would compile: > > > try (var scope = new StructuredTaskScope<>()) { > > var temperatureHandle = scope.fork(gearboxTemperatureSensor::temperature); > > // ... > > scope.join(); > > if (temperatureHandle.get() > GEARBOX_TEMPERATURE_LIMIT) // newly-added checked exception I2CException is not handled > > emergencyStop(); > > } > > > > A TaskHandle seems a bit like a nullable value in this regard: it's not clear from the declaration point whether a presence check is required before the inner value is accessed. > > > > Regards, > > Alec > From duke at openjdk.org Wed May 17 16:01:59 2023 From: duke at openjdk.org (duke) Date: Wed, 17 May 2023 16:01:59 GMT Subject: git: openjdk/loom: fibers: test excluded. Message-ID: Changeset: 1f6046c2 Author: Leonid Mesnik Date: 2023-05-17 09:59:35 +0000 URL: https://git.openjdk.org/loom/commit/1f6046c208545fceebd6892e7dae1197c294359e test excluded. ! test/hotspot/jtreg/ProblemList-Virtual.txt From duke at openjdk.org Thu May 18 00:47:47 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 00:47:47 GMT Subject: git: openjdk/loom: created branch jom-master based on the branch fibers containing 1 unique commit Message-ID: <19d76f8b-c514-4a0e-bb09-6c02ae71cfcd@openjdk.org> The following commits are unique to the jom-master branch: ======================================================== 42c207ed: The one commit From duke at openjdk.org Thu May 18 00:51:59 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 00:51:59 GMT Subject: git: openjdk/loom: created branch jom-c1-experimental based on the branch jom-master containing 2 unique commits Message-ID: The following commits are unique to the jom-c1-experimental branch: ======================================================== 95b66859: c1 hack 31a43880: Temp force xcomp c1 and disable frame id check From duke at openjdk.org Thu May 18 08:35:21 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 08:35:21 GMT Subject: git: openjdk/loom: fibers: 108 new changesets Message-ID: Changeset: f250ab2c Author: Jonathan Gibbons Date: 2023-05-10 22:05:58 +0000 URL: https://git.openjdk.org/loom/commit/f250ab2c2ae120c9b25da1486e919f2acf08f7d1 8307377: Remove use of `tagName` from TagletWriterImpl.linkSeeReferenceOutput Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties ! test/langtools/jdk/javadoc/doclet/testDoclintDocletMessages/TestDocLintDocletMessages.java ! test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java ! test/langtools/jdk/javadoc/doclet/testInherited/TestInherited.java ! test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletPrimitive.java ! test/langtools/jdk/javadoc/doclet/testSeeLinkAnchor/TestSeeLinkAnchor.java ! test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java Changeset: 958d4a75 Author: Jonathan Gibbons Date: 2023-05-10 22:23:04 +0000 URL: https://git.openjdk.org/loom/commit/958d4a750537320bf4e4f5cedd2e1a9a2e52ae33 8307563: make most fields final in `JavacTrees` Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Changeset: 4795c395 Author: Justin Lu Date: 2023-05-10 23:57:48 +0000 URL: https://git.openjdk.org/loom/commit/4795c395e9799719dfcdd947fe8905f25f3a11a2 8281103: Give example for Locale that is English and follows the ISO standards Reviewed-by: rriggs, lancea, naoto ! src/java.base/share/classes/java/time/temporal/WeekFields.java Changeset: 3cb606ef Author: David Holmes Date: 2023-05-11 00:51:15 +0000 URL: https://git.openjdk.org/loom/commit/3cb606ef5b21b5d65cb97b459f30cdeacd035669 8306965: osThread allocation failures should not abort the VM Reviewed-by: lfoltan ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/windows/os_windows.cpp Changeset: 39f4e4d3 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-11 01:32:29 +0000 URL: https://git.openjdk.org/loom/commit/39f4e4d3c3450ed8fe314e2abde6a6cecd5fa0a5 8307758: RISC-V: Improve bit test code introduced by JDK-8291555 Co-authored-by: Fei Yang Reviewed-by: fyang ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp Changeset: 984fbbbc Author: Thomas Stuefe Date: 2023-05-11 04:47:14 +0000 URL: https://git.openjdk.org/loom/commit/984fbbbcabca475c3c3af7c10a843759744c1472 8307810: Consistently use LockingMode instead of UseHeavyMonitors Reviewed-by: dcubed, mdoerr, dholmes, amitkumar ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp Changeset: 8ac71863 Author: Thomas Stuefe Date: 2023-05-11 04:50:37 +0000 URL: https://git.openjdk.org/loom/commit/8ac7186331489ccff7eb2908074c6ab9a39ff90c 8305416: runtime/Thread/TestAlwaysPreTouchStacks.java failed with "Did not find expected NMT output" Reviewed-by: dholmes, gziemski ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java Changeset: 08fa2698 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-11 07:40:38 +0000 URL: https://git.openjdk.org/loom/commit/08fa269886467e6d468d00158a601c3143c32790 8307349: Support xlc17 clang toolchain on AIX Reviewed-by: erikj, mbaesken ! make/autoconf/flags-cflags.m4 ! make/autoconf/flags-ldflags.m4 ! make/autoconf/toolchain.m4 ! make/hotspot/gensrc/GensrcAdlc.gmk ! make/hotspot/lib/JvmOverrideFiles.gmk ! src/hotspot/share/utilities/globalDefinitions_xlc.hpp Changeset: ecc1d85d Author: Thomas Stuefe Date: 2023-05-11 09:24:30 +0000 URL: https://git.openjdk.org/loom/commit/ecc1d85dbea84c291c4014f2237ae9326f14cccb 8307869: Remove unnecessary log statements from arm32 fastlocking code Reviewed-by: shade ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/c2_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp Changeset: ba9714d4 Author: Maurizio Cimadamore Date: 2023-05-11 09:45:45 +0000 URL: https://git.openjdk.org/loom/commit/ba9714d44ceabdb98078a4338fb8e8a3e22adcbe 8307610: Linker::nativeLinker should not be restricted (mainline) Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/enablenativeaccess/org/openjdk/foreigntest/PanamaMainUnnamedModule.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMain.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/PanamaMainJNI.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMainReflection.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/libLinkerInvokerModule.cpp ! test/jdk/java/foreign/handles/invoker_module/handle/invoker/MethodHandleInvoker.java ! test/jdk/java/foreign/handles/lookup_module/handle/lookup/MethodHandleLookup.java Changeset: 0cbfbc40 Author: Yudi Zheng Committer: Doug Simon Date: 2023-05-11 10:38:28 +0000 URL: https://git.openjdk.org/loom/commit/0cbfbc400aac53b098a3d8a7dda1aec2180a47a7 8307813: [JVMCI] Export markWord::lock_mask_in_place to JVMCI compilers. Reviewed-by: dnsimon, kvn, never ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp Changeset: d20034b0 Author: Stefan Karlsson Date: 2023-05-11 13:59:37 +0000 URL: https://git.openjdk.org/loom/commit/d20034b09c99026e7dc2213f7d88ebdc85e5b1e7 8307058: Implementation of Generational ZGC Co-authored-by: Stefan Karlsson Co-authored-by: Erik ?sterlund Co-authored-by: Axel Boldt-Christmas Co-authored-by: Per Liden Co-authored-by: Stefan Johansson Co-authored-by: Albert Mingkun Yang Co-authored-by: Erik Helin Co-authored-by: Roberto Casta?eda Lozano Co-authored-by: Nils Eliasson Co-authored-by: Martin Doerr Co-authored-by: Leslie Zhai Co-authored-by: Fei Yang Co-authored-by: Yadong Wang Reviewed-by: eosterlund, aboldtch, rcastanedalo ! make/hotspot/gensrc/GensrcAdlc.gmk ! make/hotspot/lib/JvmFeatures.gmk ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetNMethod_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xBarrierSetAssembler_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xBarrierSetAssembler_aarch64.hpp = src/hotspot/cpu/aarch64/gc/x/xGlobals_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xGlobals_aarch64.hpp + src/hotspot/cpu/aarch64/gc/x/x_aarch64.ad + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.cpp + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.hpp + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/z/zGlobals_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad ! src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp ! src/hotspot/cpu/aarch64/stubRoutines_aarch64.hpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp + src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.cpp + src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.hpp = src/hotspot/cpu/ppc/gc/x/xGlobals_ppc.cpp + src/hotspot/cpu/ppc/gc/x/xGlobals_ppc.hpp + src/hotspot/cpu/ppc/gc/x/x_ppc.ad + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.cpp + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.hpp + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.inline.hpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.hpp ! src/hotspot/cpu/ppc/gc/z/zGlobals_ppc.hpp ! src/hotspot/cpu/ppc/gc/z/z_ppc.ad ! src/hotspot/cpu/ppc/macroAssembler_ppc.inline.hpp ! src/hotspot/cpu/ppc/relocInfo_ppc.hpp ! src/hotspot/cpu/ppc/stubGenerator_ppc.cpp ! src/hotspot/cpu/riscv/c1_LIRAssembler_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xBarrierSetAssembler_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xBarrierSetAssembler_riscv.hpp = src/hotspot/cpu/riscv/gc/x/xGlobals_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xGlobals_riscv.hpp + src/hotspot/cpu/riscv/gc/x/x_riscv64.ad + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.cpp + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.hpp + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.inline.hpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.hpp ! src/hotspot/cpu/riscv/gc/z/zGlobals_riscv.hpp ! src/hotspot/cpu/riscv/gc/z/z_riscv64.ad ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/nativeInst_riscv.cpp ! src/hotspot/cpu/riscv/nativeInst_riscv.hpp ! src/hotspot/cpu/riscv/relocInfo_riscv.hpp ! src/hotspot/cpu/riscv/stubGenerator_riscv.cpp ! src/hotspot/cpu/riscv/stubRoutines_riscv.hpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp + src/hotspot/cpu/x86/gc/x/xBarrierSetAssembler_x86.cpp + src/hotspot/cpu/x86/gc/x/xBarrierSetAssembler_x86.hpp = src/hotspot/cpu/x86/gc/x/xGlobals_x86.cpp + src/hotspot/cpu/x86/gc/x/xGlobals_x86.hpp + src/hotspot/cpu/x86/gc/x/x_x86_64.ad + src/hotspot/cpu/x86/gc/z/zAddress_x86.cpp + src/hotspot/cpu/x86/gc/z/zAddress_x86.hpp + src/hotspot/cpu/x86/gc/z/zAddress_x86.inline.hpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp ! src/hotspot/cpu/x86/gc/z/zGlobals_x86.hpp ! src/hotspot/cpu/x86/gc/z/z_x86_64.ad ! src/hotspot/cpu/x86/relocInfo_x86.hpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/cpu/x86/templateTable_x86.cpp + src/hotspot/os/bsd/gc/x/xLargePages_bsd.cpp + src/hotspot/os/bsd/gc/x/xNUMA_bsd.cpp + src/hotspot/os/bsd/gc/x/xPhysicalMemoryBacking_bsd.cpp + src/hotspot/os/bsd/gc/x/xPhysicalMemoryBacking_bsd.hpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.hpp + src/hotspot/os/linux/gc/x/xLargePages_linux.cpp + src/hotspot/os/linux/gc/x/xMountPoint_linux.cpp + src/hotspot/os/linux/gc/x/xMountPoint_linux.hpp + src/hotspot/os/linux/gc/x/xNUMA_linux.cpp + src/hotspot/os/linux/gc/x/xPhysicalMemoryBacking_linux.cpp + src/hotspot/os/linux/gc/x/xPhysicalMemoryBacking_linux.hpp + src/hotspot/os/linux/gc/x/xSyscall_linux.cpp + src/hotspot/os/linux/gc/x/xSyscall_linux.hpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.cpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.hpp = src/hotspot/os/posix/gc/x/xArguments_posix.cpp = src/hotspot/os/posix/gc/x/xInitialize_posix.cpp + src/hotspot/os/posix/gc/x/xUtils_posix.cpp + src/hotspot/os/posix/gc/x/xVirtualMemory_posix.cpp ! src/hotspot/os/posix/gc/z/zArguments_posix.cpp ! src/hotspot/os/posix/gc/z/zVirtualMemory_posix.cpp + src/hotspot/os/windows/gc/x/xArguments_windows.cpp + src/hotspot/os/windows/gc/x/xInitialize_windows.cpp + src/hotspot/os/windows/gc/x/xLargePages_windows.cpp + src/hotspot/os/windows/gc/x/xMapper_windows.cpp = src/hotspot/os/windows/gc/x/xMapper_windows.hpp + src/hotspot/os/windows/gc/x/xNUMA_windows.cpp + src/hotspot/os/windows/gc/x/xPhysicalMemoryBacking_windows.cpp + src/hotspot/os/windows/gc/x/xPhysicalMemoryBacking_windows.hpp + src/hotspot/os/windows/gc/x/xSyscall_windows.cpp + src/hotspot/os/windows/gc/x/xSyscall_windows.hpp + src/hotspot/os/windows/gc/x/xUtils_windows.cpp + src/hotspot/os/windows/gc/x/xVirtualMemory_windows.cpp ! src/hotspot/os/windows/gc/z/zArguments_windows.cpp ! src/hotspot/os/windows/gc/z/zMapper_windows.cpp ! src/hotspot/os/windows/gc/z/zMapper_windows.hpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.hpp ! src/hotspot/os/windows/gc/z/zVirtualMemory_windows.cpp ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp + src/hotspot/os_cpu/linux_aarch64/gc/x/xSyscall_linux_aarch64.hpp + src/hotspot/os_cpu/linux_ppc/gc/x/xSyscall_linux_ppc.hpp + src/hotspot/os_cpu/linux_riscv/gc/x/xSyscall_linux_riscv.hpp + src/hotspot/os_cpu/linux_x86/gc/x/xSyscall_linux_x86.hpp ! src/hotspot/share/asm/assembler.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/asm/codeBuffer.hpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp ! src/hotspot/share/code/relocInfo.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/gcConfig.cpp ! src/hotspot/share/gc/shared/gcConfiguration.cpp ! src/hotspot/share/gc/shared/gcId.cpp ! src/hotspot/share/gc/shared/gcId.hpp ! src/hotspot/share/gc/shared/gcName.hpp ! src/hotspot/share/gc/shared/gcThreadLocalData.hpp ! src/hotspot/share/gc/shared/gcTraceSend.cpp ! src/hotspot/share/gc/shared/gcVMOperations.cpp ! src/hotspot/share/gc/shared/gcVMOperations.hpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/isGCActiveMark.cpp ! src/hotspot/share/gc/shared/isGCActiveMark.hpp ! src/hotspot/share/gc/shared/suspendibleThreadSet.cpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp ! src/hotspot/share/gc/shared/workerThread.cpp ! src/hotspot/share/gc/shared/workerThread.hpp + src/hotspot/share/gc/x/c1/xBarrierSetC1.cpp + src/hotspot/share/gc/x/c1/xBarrierSetC1.hpp + src/hotspot/share/gc/x/c2/xBarrierSetC2.cpp + src/hotspot/share/gc/x/c2/xBarrierSetC2.hpp + src/hotspot/share/gc/x/vmStructs_x.cpp + src/hotspot/share/gc/x/vmStructs_x.hpp = src/hotspot/share/gc/x/xAbort.cpp = src/hotspot/share/gc/x/xAbort.hpp + src/hotspot/share/gc/x/xAbort.inline.hpp + src/hotspot/share/gc/x/xAddress.cpp = src/hotspot/share/gc/x/xAddress.hpp + src/hotspot/share/gc/x/xAddress.inline.hpp + src/hotspot/share/gc/x/xAddressSpaceLimit.cpp + src/hotspot/share/gc/x/xAddressSpaceLimit.hpp + src/hotspot/share/gc/x/xAllocationFlags.hpp + src/hotspot/share/gc/x/xArguments.cpp + src/hotspot/share/gc/x/xArguments.hpp + src/hotspot/share/gc/x/xArray.hpp + src/hotspot/share/gc/x/xArray.inline.hpp + src/hotspot/share/gc/x/xAttachedArray.hpp + src/hotspot/share/gc/x/xAttachedArray.inline.hpp + src/hotspot/share/gc/x/xBarrier.cpp = src/hotspot/share/gc/x/xBarrier.hpp + src/hotspot/share/gc/x/xBarrier.inline.hpp + src/hotspot/share/gc/x/xBarrierSet.cpp + src/hotspot/share/gc/x/xBarrierSet.hpp + src/hotspot/share/gc/x/xBarrierSet.inline.hpp + src/hotspot/share/gc/x/xBarrierSetAssembler.cpp + src/hotspot/share/gc/x/xBarrierSetAssembler.hpp + src/hotspot/share/gc/x/xBarrierSetNMethod.cpp + src/hotspot/share/gc/x/xBarrierSetNMethod.hpp + src/hotspot/share/gc/x/xBarrierSetRuntime.cpp = src/hotspot/share/gc/x/xBarrierSetRuntime.hpp + src/hotspot/share/gc/x/xBarrierSetStackChunk.cpp + src/hotspot/share/gc/x/xBarrierSetStackChunk.hpp + src/hotspot/share/gc/x/xBitField.hpp + src/hotspot/share/gc/x/xBitMap.hpp + src/hotspot/share/gc/x/xBitMap.inline.hpp + src/hotspot/share/gc/x/xBreakpoint.cpp + src/hotspot/share/gc/x/xBreakpoint.hpp + src/hotspot/share/gc/x/xCPU.cpp + src/hotspot/share/gc/x/xCPU.hpp + src/hotspot/share/gc/x/xCPU.inline.hpp + src/hotspot/share/gc/x/xCollectedHeap.cpp + src/hotspot/share/gc/x/xCollectedHeap.hpp + src/hotspot/share/gc/x/xDebug.gdb + src/hotspot/share/gc/x/xDirector.cpp + src/hotspot/share/gc/x/xDirector.hpp + src/hotspot/share/gc/x/xDriver.cpp + src/hotspot/share/gc/x/xDriver.hpp + src/hotspot/share/gc/x/xErrno.cpp + src/hotspot/share/gc/x/xErrno.hpp + src/hotspot/share/gc/x/xForwarding.cpp + src/hotspot/share/gc/x/xForwarding.hpp + src/hotspot/share/gc/x/xForwarding.inline.hpp + src/hotspot/share/gc/x/xForwardingAllocator.cpp + src/hotspot/share/gc/x/xForwardingAllocator.hpp + src/hotspot/share/gc/x/xForwardingAllocator.inline.hpp + src/hotspot/share/gc/x/xForwardingEntry.hpp + src/hotspot/share/gc/x/xForwardingTable.hpp + src/hotspot/share/gc/x/xForwardingTable.inline.hpp + src/hotspot/share/gc/x/xFuture.hpp + src/hotspot/share/gc/x/xFuture.inline.hpp + src/hotspot/share/gc/x/xGlobals.cpp + src/hotspot/share/gc/x/xGlobals.hpp + src/hotspot/share/gc/x/xGranuleMap.hpp + src/hotspot/share/gc/x/xGranuleMap.inline.hpp = src/hotspot/share/gc/x/xHash.hpp = src/hotspot/share/gc/x/xHash.inline.hpp + src/hotspot/share/gc/x/xHeap.cpp + src/hotspot/share/gc/x/xHeap.hpp + src/hotspot/share/gc/x/xHeap.inline.hpp + src/hotspot/share/gc/x/xHeapIterator.cpp + src/hotspot/share/gc/x/xHeapIterator.hpp + src/hotspot/share/gc/x/xHeuristics.cpp + src/hotspot/share/gc/x/xHeuristics.hpp + src/hotspot/share/gc/x/xInitialize.cpp + src/hotspot/share/gc/x/xInitialize.hpp + src/hotspot/share/gc/x/xLargePages.cpp + src/hotspot/share/gc/x/xLargePages.hpp + src/hotspot/share/gc/x/xLargePages.inline.hpp + src/hotspot/share/gc/x/xList.hpp + src/hotspot/share/gc/x/xList.inline.hpp + src/hotspot/share/gc/x/xLiveMap.cpp = src/hotspot/share/gc/x/xLiveMap.hpp + src/hotspot/share/gc/x/xLiveMap.inline.hpp + src/hotspot/share/gc/x/xLock.hpp + src/hotspot/share/gc/x/xLock.inline.hpp + src/hotspot/share/gc/x/xMark.cpp + src/hotspot/share/gc/x/xMark.hpp + src/hotspot/share/gc/x/xMark.inline.hpp + src/hotspot/share/gc/x/xMarkCache.cpp + src/hotspot/share/gc/x/xMarkCache.hpp + src/hotspot/share/gc/x/xMarkCache.inline.hpp + src/hotspot/share/gc/x/xMarkContext.hpp + src/hotspot/share/gc/x/xMarkContext.inline.hpp + src/hotspot/share/gc/x/xMarkStack.cpp + src/hotspot/share/gc/x/xMarkStack.hpp + src/hotspot/share/gc/x/xMarkStack.inline.hpp + src/hotspot/share/gc/x/xMarkStackAllocator.cpp + src/hotspot/share/gc/x/xMarkStackAllocator.hpp + src/hotspot/share/gc/x/xMarkStackEntry.hpp + src/hotspot/share/gc/x/xMarkTerminate.hpp + src/hotspot/share/gc/x/xMarkTerminate.inline.hpp + src/hotspot/share/gc/x/xMemory.cpp + src/hotspot/share/gc/x/xMemory.hpp + src/hotspot/share/gc/x/xMemory.inline.hpp + src/hotspot/share/gc/x/xMessagePort.hpp + src/hotspot/share/gc/x/xMessagePort.inline.hpp + src/hotspot/share/gc/x/xMetronome.cpp + src/hotspot/share/gc/x/xMetronome.hpp + src/hotspot/share/gc/x/xNMethod.cpp + src/hotspot/share/gc/x/xNMethod.hpp + src/hotspot/share/gc/x/xNMethodData.cpp + src/hotspot/share/gc/x/xNMethodData.hpp + src/hotspot/share/gc/x/xNMethodTable.cpp + src/hotspot/share/gc/x/xNMethodTable.hpp + src/hotspot/share/gc/x/xNMethodTableEntry.hpp + src/hotspot/share/gc/x/xNMethodTableIteration.cpp + src/hotspot/share/gc/x/xNMethodTableIteration.hpp + src/hotspot/share/gc/x/xNUMA.cpp + src/hotspot/share/gc/x/xNUMA.hpp + src/hotspot/share/gc/x/xNUMA.inline.hpp + src/hotspot/share/gc/x/xObjArrayAllocator.cpp + src/hotspot/share/gc/x/xObjArrayAllocator.hpp + src/hotspot/share/gc/x/xObjectAllocator.cpp + src/hotspot/share/gc/x/xObjectAllocator.hpp = src/hotspot/share/gc/x/xOop.hpp + src/hotspot/share/gc/x/xOop.inline.hpp + src/hotspot/share/gc/x/xPage.cpp + src/hotspot/share/gc/x/xPage.hpp + src/hotspot/share/gc/x/xPage.inline.hpp + src/hotspot/share/gc/x/xPageAllocator.cpp + src/hotspot/share/gc/x/xPageAllocator.hpp + src/hotspot/share/gc/x/xPageAllocator.inline.hpp + src/hotspot/share/gc/x/xPageCache.cpp + src/hotspot/share/gc/x/xPageCache.hpp + src/hotspot/share/gc/x/xPageTable.cpp + src/hotspot/share/gc/x/xPageTable.hpp + src/hotspot/share/gc/x/xPageTable.inline.hpp + src/hotspot/share/gc/x/xPhysicalMemory.cpp + src/hotspot/share/gc/x/xPhysicalMemory.hpp + src/hotspot/share/gc/x/xPhysicalMemory.inline.hpp + src/hotspot/share/gc/x/xReferenceProcessor.cpp + src/hotspot/share/gc/x/xReferenceProcessor.hpp + src/hotspot/share/gc/x/xRelocate.cpp + src/hotspot/share/gc/x/xRelocate.hpp + src/hotspot/share/gc/x/xRelocationSet.cpp + src/hotspot/share/gc/x/xRelocationSet.hpp + src/hotspot/share/gc/x/xRelocationSet.inline.hpp + src/hotspot/share/gc/x/xRelocationSetSelector.cpp + src/hotspot/share/gc/x/xRelocationSetSelector.hpp + src/hotspot/share/gc/x/xRelocationSetSelector.inline.hpp + src/hotspot/share/gc/x/xResurrection.cpp + src/hotspot/share/gc/x/xResurrection.hpp + src/hotspot/share/gc/x/xResurrection.inline.hpp + src/hotspot/share/gc/x/xRootsIterator.cpp + src/hotspot/share/gc/x/xRootsIterator.hpp + src/hotspot/share/gc/x/xRuntimeWorkers.cpp + src/hotspot/share/gc/x/xRuntimeWorkers.hpp + src/hotspot/share/gc/x/xSafeDelete.hpp + src/hotspot/share/gc/x/xSafeDelete.inline.hpp + src/hotspot/share/gc/x/xServiceability.cpp + src/hotspot/share/gc/x/xServiceability.hpp + src/hotspot/share/gc/x/xStackWatermark.cpp + src/hotspot/share/gc/x/xStackWatermark.hpp + src/hotspot/share/gc/x/xStat.cpp + src/hotspot/share/gc/x/xStat.hpp + src/hotspot/share/gc/x/xTask.cpp + src/hotspot/share/gc/x/xTask.hpp + src/hotspot/share/gc/x/xThread.cpp + src/hotspot/share/gc/x/xThread.hpp + src/hotspot/share/gc/x/xThread.inline.hpp + src/hotspot/share/gc/x/xThreadLocalAllocBuffer.cpp + src/hotspot/share/gc/x/xThreadLocalAllocBuffer.hpp + src/hotspot/share/gc/x/xThreadLocalData.hpp + src/hotspot/share/gc/x/xTracer.cpp + src/hotspot/share/gc/x/xTracer.hpp + src/hotspot/share/gc/x/xTracer.inline.hpp + src/hotspot/share/gc/x/xUncommitter.cpp + src/hotspot/share/gc/x/xUncommitter.hpp + src/hotspot/share/gc/x/xUnload.cpp + src/hotspot/share/gc/x/xUnload.hpp + src/hotspot/share/gc/x/xUnmapper.cpp + src/hotspot/share/gc/x/xUnmapper.hpp = src/hotspot/share/gc/x/xUtils.hpp + src/hotspot/share/gc/x/xUtils.inline.hpp + src/hotspot/share/gc/x/xValue.hpp + src/hotspot/share/gc/x/xValue.inline.hpp + src/hotspot/share/gc/x/xVerify.cpp + src/hotspot/share/gc/x/xVerify.hpp + src/hotspot/share/gc/x/xVirtualMemory.cpp + src/hotspot/share/gc/x/xVirtualMemory.hpp + src/hotspot/share/gc/x/xVirtualMemory.inline.hpp + src/hotspot/share/gc/x/xWeakRootsProcessor.cpp + src/hotspot/share/gc/x/xWeakRootsProcessor.hpp + src/hotspot/share/gc/x/xWorkers.cpp + src/hotspot/share/gc/x/xWorkers.hpp + src/hotspot/share/gc/x/x_globals.hpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.hpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp + src/hotspot/share/gc/z/shared/vmStructs_z_shared.hpp + src/hotspot/share/gc/z/shared/zSharedArguments.cpp + src/hotspot/share/gc/z/shared/zSharedArguments.hpp + src/hotspot/share/gc/z/shared/z_shared_globals.hpp ! src/hotspot/share/gc/z/vmStructs_z.cpp ! src/hotspot/share/gc/z/vmStructs_z.hpp ! src/hotspot/share/gc/z/zAbort.cpp ! src/hotspot/share/gc/z/zAbort.hpp ! src/hotspot/share/gc/z/zAbort.inline.hpp ! src/hotspot/share/gc/z/zAddress.cpp ! src/hotspot/share/gc/z/zAddress.hpp ! src/hotspot/share/gc/z/zAddress.inline.hpp ! src/hotspot/share/gc/z/zAddressSpaceLimit.cpp ! src/hotspot/share/gc/z/zAddressSpaceLimit.hpp ! src/hotspot/share/gc/z/zAllocationFlags.hpp + src/hotspot/share/gc/z/zAllocator.cpp + src/hotspot/share/gc/z/zAllocator.hpp + src/hotspot/share/gc/z/zAllocator.inline.hpp ! src/hotspot/share/gc/z/zArguments.cpp ! src/hotspot/share/gc/z/zArguments.hpp ! src/hotspot/share/gc/z/zArray.hpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zBarrier.cpp ! src/hotspot/share/gc/z/zBarrier.hpp ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zBarrierSet.cpp ! src/hotspot/share/gc/z/zBarrierSet.hpp ! src/hotspot/share/gc/z/zBarrierSet.inline.hpp ! src/hotspot/share/gc/z/zBarrierSetAssembler.cpp ! src/hotspot/share/gc/z/zBarrierSetAssembler.hpp ! src/hotspot/share/gc/z/zBarrierSetNMethod.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.hpp ! src/hotspot/share/gc/z/zBarrierSetStackChunk.cpp ! src/hotspot/share/gc/z/zBitMap.hpp ! src/hotspot/share/gc/z/zBitMap.inline.hpp ! src/hotspot/share/gc/z/zCPU.cpp ! src/hotspot/share/gc/z/zCPU.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zCollectedHeap.hpp + src/hotspot/share/gc/z/zContinuation.cpp + src/hotspot/share/gc/z/zContinuation.hpp + src/hotspot/share/gc/z/zContinuation.inline.hpp ! src/hotspot/share/gc/z/zDebug.gdb ! src/hotspot/share/gc/z/zDirector.cpp ! src/hotspot/share/gc/z/zDirector.hpp ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zDriver.hpp + src/hotspot/share/gc/z/zDriverPort.cpp + src/hotspot/share/gc/z/zDriverPort.hpp ! src/hotspot/share/gc/z/zForwarding.cpp ! src/hotspot/share/gc/z/zForwarding.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.cpp ! src/hotspot/share/gc/z/zForwardingEntry.hpp ! src/hotspot/share/gc/z/zForwardingTable.hpp ! src/hotspot/share/gc/z/zForwardingTable.inline.hpp + src/hotspot/share/gc/z/zGCIdPrinter.cpp + src/hotspot/share/gc/z/zGCIdPrinter.hpp + src/hotspot/share/gc/z/zGeneration.cpp + src/hotspot/share/gc/z/zGeneration.hpp + src/hotspot/share/gc/z/zGeneration.inline.hpp + src/hotspot/share/gc/z/zGenerationId.hpp ! src/hotspot/share/gc/z/zGlobals.cpp ! src/hotspot/share/gc/z/zGlobals.hpp ! src/hotspot/share/gc/z/zGranuleMap.hpp ! src/hotspot/share/gc/z/zGranuleMap.inline.hpp ! src/hotspot/share/gc/z/zHash.hpp ! src/hotspot/share/gc/z/zHash.inline.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zHeap.inline.hpp ! src/hotspot/share/gc/z/zHeapIterator.cpp ! src/hotspot/share/gc/z/zHeapIterator.hpp ! src/hotspot/share/gc/z/zHeuristics.cpp ! src/hotspot/share/gc/z/zHeuristics.hpp + src/hotspot/share/gc/z/zIndexDistributor.hpp + src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zInitialize.cpp + src/hotspot/share/gc/z/zIterator.hpp + src/hotspot/share/gc/z/zIterator.inline.hpp + src/hotspot/share/gc/z/zJNICritical.cpp + src/hotspot/share/gc/z/zJNICritical.hpp ! src/hotspot/share/gc/z/zList.inline.hpp ! src/hotspot/share/gc/z/zLiveMap.cpp ! src/hotspot/share/gc/z/zLiveMap.hpp ! src/hotspot/share/gc/z/zLiveMap.inline.hpp ! src/hotspot/share/gc/z/zLock.hpp ! src/hotspot/share/gc/z/zLock.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp ! src/hotspot/share/gc/z/zMark.inline.hpp ! src/hotspot/share/gc/z/zMarkCache.cpp ! src/hotspot/share/gc/z/zMarkCache.hpp ! src/hotspot/share/gc/z/zMarkCache.inline.hpp ! src/hotspot/share/gc/z/zMarkContext.hpp ! src/hotspot/share/gc/z/zMarkContext.inline.hpp ! src/hotspot/share/gc/z/zMarkStack.cpp ! src/hotspot/share/gc/z/zMarkStack.hpp ! src/hotspot/share/gc/z/zMarkStack.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zMarkStackAllocator.hpp ! src/hotspot/share/gc/z/zMarkTerminate.hpp ! src/hotspot/share/gc/z/zMarkTerminate.inline.hpp ! src/hotspot/share/gc/z/zMemory.cpp ! src/hotspot/share/gc/z/zMemory.hpp ! src/hotspot/share/gc/z/zMemory.inline.hpp - src/hotspot/share/gc/z/zMessagePort.hpp - src/hotspot/share/gc/z/zMessagePort.inline.hpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethod.hpp ! src/hotspot/share/gc/z/zNMethodData.cpp ! src/hotspot/share/gc/z/zNMethodData.hpp ! src/hotspot/share/gc/z/zNMethodTable.cpp ! src/hotspot/share/gc/z/zNMethodTable.hpp ! src/hotspot/share/gc/z/zNMethodTableEntry.hpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zObjArrayAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.hpp - src/hotspot/share/gc/z/zOop.inline.hpp ! src/hotspot/share/gc/z/zPage.cpp ! src/hotspot/share/gc/z/zPage.hpp ! src/hotspot/share/gc/z/zPage.inline.hpp + src/hotspot/share/gc/z/zPageAge.hpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.hpp ! src/hotspot/share/gc/z/zPageAllocator.inline.hpp ! src/hotspot/share/gc/z/zPageCache.cpp ! src/hotspot/share/gc/z/zPageCache.hpp ! src/hotspot/share/gc/z/zPageTable.cpp ! src/hotspot/share/gc/z/zPageTable.hpp ! src/hotspot/share/gc/z/zPageTable.inline.hpp + src/hotspot/share/gc/z/zPageType.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.cpp ! src/hotspot/share/gc/z/zPhysicalMemory.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp ! src/hotspot/share/gc/z/zReferenceProcessor.cpp ! src/hotspot/share/gc/z/zReferenceProcessor.hpp ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRelocate.hpp ! src/hotspot/share/gc/z/zRelocationSet.cpp ! src/hotspot/share/gc/z/zRelocationSet.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.cpp ! src/hotspot/share/gc/z/zRelocationSetSelector.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.inline.hpp + src/hotspot/share/gc/z/zRemembered.cpp + src/hotspot/share/gc/z/zRemembered.hpp + src/hotspot/share/gc/z/zRemembered.inline.hpp + src/hotspot/share/gc/z/zRememberedSet.cpp + src/hotspot/share/gc/z/zRememberedSet.hpp + src/hotspot/share/gc/z/zRememberedSet.inline.hpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/gc/z/zRuntimeWorkers.cpp ! src/hotspot/share/gc/z/zSafeDelete.hpp ! src/hotspot/share/gc/z/zSafeDelete.inline.hpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zServiceability.hpp + src/hotspot/share/gc/z/zStackChunkGCData.hpp + src/hotspot/share/gc/z/zStackChunkGCData.inline.hpp ! src/hotspot/share/gc/z/zStackWatermark.cpp ! src/hotspot/share/gc/z/zStackWatermark.hpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zStat.hpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.cpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.hpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.inline.hpp ! src/hotspot/share/gc/z/zTask.cpp ! src/hotspot/share/gc/z/zTask.hpp ! src/hotspot/share/gc/z/zThread.cpp ! src/hotspot/share/gc/z/zThread.hpp - src/hotspot/share/gc/z/zThread.inline.hpp ! src/hotspot/share/gc/z/zThreadLocalAllocBuffer.cpp ! src/hotspot/share/gc/z/zThreadLocalAllocBuffer.hpp ! src/hotspot/share/gc/z/zThreadLocalData.hpp ! src/hotspot/share/gc/z/zTracer.cpp ! src/hotspot/share/gc/z/zTracer.hpp ! src/hotspot/share/gc/z/zTracer.inline.hpp + src/hotspot/share/gc/z/zUncoloredRoot.cpp + src/hotspot/share/gc/z/zUncoloredRoot.hpp + src/hotspot/share/gc/z/zUncoloredRoot.inline.hpp ! src/hotspot/share/gc/z/zUncommitter.cpp ! src/hotspot/share/gc/z/zUncommitter.hpp ! src/hotspot/share/gc/z/zUnload.cpp ! src/hotspot/share/gc/z/zUnmapper.cpp ! src/hotspot/share/gc/z/zUnmapper.hpp + src/hotspot/share/gc/z/zUtils.cpp ! src/hotspot/share/gc/z/zUtils.hpp ! src/hotspot/share/gc/z/zUtils.inline.hpp ! src/hotspot/share/gc/z/zValue.hpp ! src/hotspot/share/gc/z/zValue.inline.hpp ! src/hotspot/share/gc/z/zVerify.cpp ! src/hotspot/share/gc/z/zVerify.hpp ! src/hotspot/share/gc/z/zVirtualMemory.cpp ! src/hotspot/share/gc/z/zVirtualMemory.hpp ! src/hotspot/share/gc/z/zVirtualMemory.inline.hpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.cpp ! src/hotspot/share/gc/z/zWorkers.cpp ! src/hotspot/share/gc/z/zWorkers.hpp + src/hotspot/share/gc/z/zWorkers.inline.hpp ! src/hotspot/share/gc/z/z_globals.hpp ! src/hotspot/share/jfr/metadata/metadata.xml ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/logging/logPrefix.hpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/universe.cpp ! src/hotspot/share/memory/universe.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp ! src/hotspot/share/oops/oopsHierarchy.hpp ! src/hotspot/share/oops/stackChunkOop.inline.hpp ! src/hotspot/share/opto/output.hpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp ! src/hotspot/share/runtime/continuationJavaClasses.hpp ! src/hotspot/share/runtime/continuationJavaClasses.inline.hpp ! src/hotspot/share/runtime/stackWatermark.cpp ! src/hotspot/share/runtime/stackWatermark.hpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vmOperation.hpp ! src/hotspot/share/services/heapDumper.cpp ! src/hotspot/share/utilities/events.cpp ! src/hotspot/share/utilities/events.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XAddress.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XAttachedArrayForForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XBarrier.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XCollectedHeap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XExternalBitMap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTable.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTableCursor.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGlobals.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGlobalsForVMStructs.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGranuleMapForForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGranuleMapForPageTable.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XHash.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XHeap.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XOop.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPage.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageAllocator.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageTable.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XRelocate.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XUtils.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XVirtualMemory.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAddress.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAttachedArrayForForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZBarrier.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZCollectedHeap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZExternalBitMap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingEntry.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingTable.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobals.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobalsForVMStructs.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGranuleMapForForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGranuleMapForPageTable.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZHeap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTable.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTableEntry.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZRelocate.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Universe.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc + test/hotspot/gtest/gc/x/test_xAddress.cpp + test/hotspot/gtest/gc/x/test_xArray.cpp + test/hotspot/gtest/gc/x/test_xBitField.cpp + test/hotspot/gtest/gc/x/test_xBitMap.cpp + test/hotspot/gtest/gc/x/test_xForwarding.cpp + test/hotspot/gtest/gc/x/test_xList.cpp + test/hotspot/gtest/gc/x/test_xLiveMap.cpp + test/hotspot/gtest/gc/x/test_xPhysicalMemory.cpp + test/hotspot/gtest/gc/x/test_xVirtualMemory.cpp ! test/hotspot/gtest/gc/z/test_zAddress.cpp ! test/hotspot/gtest/gc/z/test_zForwarding.cpp + test/hotspot/gtest/gc/z/test_zIndexDistributor.cpp ! test/hotspot/gtest/gc/z/test_zLiveMap.cpp + test/hotspot/gtest/gc/z/test_zMemory.cpp ! test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp ! test/hotspot/gtest/gc/z/test_zVirtualMemory.cpp ! test/hotspot/gtest/runtime/test_vmStructs.cpp + test/hotspot/jtreg/ProblemList-generational-zgc.txt + test/hotspot/jtreg/compiler/gcbarriers/TestZGCBarrierElision.java ! test/hotspot/jtreg/compiler/gcbarriers/UnsafeIntrinsicsTest.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java ! test/hotspot/jtreg/gc/TestSystemGC.java ! test/hotspot/jtreg/gc/TestVerifySubSet.java ! test/hotspot/jtreg/gc/stress/gcbasher/TestGCBasherWithZ.java ! test/hotspot/jtreg/gc/stress/gcold/TestGCOldWithZ.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTools.java + test/hotspot/jtreg/gc/x/TestAllocateHeapAt.java + test/hotspot/jtreg/gc/x/TestAlwaysPreTouch.java = test/hotspot/jtreg/gc/x/TestGarbageCollectorMXBean.java = test/hotspot/jtreg/gc/x/TestHighUsage.java + test/hotspot/jtreg/gc/x/TestMemoryMXBean.java = test/hotspot/jtreg/gc/x/TestMemoryManagerMXBean.java + test/hotspot/jtreg/gc/x/TestNoUncommit.java = test/hotspot/jtreg/gc/x/TestPageCacheFlush.java = test/hotspot/jtreg/gc/x/TestRelocateInPlace.java = test/hotspot/jtreg/gc/x/TestSmallHeap.java = test/hotspot/jtreg/gc/x/TestUncommit.java ! test/hotspot/jtreg/gc/z/TestAllocateHeapAt.java ! test/hotspot/jtreg/gc/z/TestAlwaysPreTouch.java ! test/hotspot/jtreg/gc/z/TestGarbageCollectorMXBean.java ! test/hotspot/jtreg/gc/z/TestHighUsage.java ! test/hotspot/jtreg/gc/z/TestMemoryMXBean.java ! test/hotspot/jtreg/gc/z/TestMemoryManagerMXBean.java ! test/hotspot/jtreg/gc/z/TestNoUncommit.java ! test/hotspot/jtreg/gc/z/TestPageCacheFlush.java ! test/hotspot/jtreg/gc/z/TestRelocateInPlace.java ! test/hotspot/jtreg/gc/z/TestSmallHeap.java ! test/hotspot/jtreg/gc/z/TestUncommit.java ! test/hotspot/jtreg/runtime/stringtable/StringTableCleaningTest.java + test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt ! test/jdk/java/io/ObjectStreamClass/ObjectStreamClassCaching.java ! test/jdk/java/lang/ProcessBuilder/CloseRace.java ! test/jdk/java/lang/Thread/virtual/stress/Skynet.java ! test/jdk/java/lang/management/MemoryMXBean/MemoryTest.java + test/jdk/jdk/jfr/event/gc/collection/TestGarbageCollectionEventWithZMajor.java + test/jdk/jdk/jfr/event/gc/collection/TestGarbageCollectionEventWithZMinor.java + test/jdk/jdk/jfr/event/gc/collection/TestZOldGarbageCollectionEvent.java + test/jdk/jdk/jfr/event/gc/collection/TestZYoungGarbageCollectionEvent.java ! test/jdk/jdk/jfr/event/gc/detailed/TestGCPhaseConcurrent.java ! test/jtreg-ext/requires/VMProps.java ! test/lib/jdk/test/lib/jfr/EventNames.java Changeset: 2bf7ac58 Author: Fredrik Bredberg Committer: Coleen Phillimore Date: 2023-05-11 14:02:54 +0000 URL: https://git.openjdk.org/loom/commit/2bf7ac58b7971f6813066dac7e88a855d597d731 8297657: name demangling intermittently fails Reviewed-by: stefank, coleenp ! src/hotspot/os/aix/decoder_aix.hpp ! src/hotspot/os/bsd/decoder_machO.hpp ! src/hotspot/share/utilities/decoder.hpp ! src/hotspot/share/utilities/decoder_elf.hpp Changeset: 9ad38cbe Author: Daniel Fuchs Date: 2023-05-11 16:31:04 +0000 URL: https://git.openjdk.org/loom/commit/9ad38cbeaf446776c4ab4fdb4605663fc517f11f 8307626: java/net/httpclient/FlowAdapter* tests should close the HttpClient instances Reviewed-by: aefimov, jpai ! test/jdk/java/net/httpclient/FlowAdapterPublisherTest.java ! test/jdk/java/net/httpclient/FlowAdapterSubscriberTest.java Changeset: 489658db Author: Chris Plummer Date: 2023-05-11 17:07:27 +0000 URL: https://git.openjdk.org/loom/commit/489658dbd2cd518a17611dcc01c0109046cf97a8 8307885: com/sun/jdi/ConnectedVMs.java fails with "Invalid debuggee exitValue: 0" Reviewed-by: kevinw, sspitsyn ! test/jdk/com/sun/jdi/ConnectedVMs.java Changeset: 51b8f3cf Author: Serguei Spitsyn Date: 2023-05-11 17:48:39 +0000 URL: https://git.openjdk.org/loom/commit/51b8f3cfb9df3444b6226a5d5cb7f01a9ab6db6c 8306034: add support of virtual threads to JVMTI StopThread Reviewed-by: cjplummer ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiEnv.cpp ! src/hotspot/share/prims/jvmtiEnvBase.cpp ! src/hotspot/share/prims/jvmtiEnvBase.hpp ! src/hotspot/share/runtime/javaThread.cpp ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/serviceability/jvmti/vthread/BoundVThreadTest/libBoundVThreadTest.cpp + test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/libStopThreadTest.cpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/VThreadUnsupportedTest.java ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/libVThreadUnsupportedTest.cpp Changeset: 5d6cce0f Author: Robert Toyonaga Committer: Severin Gehwolf Date: 2023-05-11 18:05:58 +0000 URL: https://git.openjdk.org/loom/commit/5d6cce0f8543e8ae966798aad685b190cc8101aa 8307298: JFR: Ensure jdk.jfr.internal.TypeLibrary is initialized only once Reviewed-by: sgehwolf, egahlin ! src/jdk.jfr/share/classes/jdk/jfr/internal/TypeLibrary.java Changeset: 7fcb0fdc Author: Dean Long Date: 2023-05-11 18:06:43 +0000 URL: https://git.openjdk.org/loom/commit/7fcb0fdcd453d02002b751db6d59ad274b3b59c7 8307139: Fix signed integer overflow in compiler code, part 1 Reviewed-by: thartmann, rcastanedalo, kvn ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/c1/c1_Canonicalizer.cpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.hpp ! src/hotspot/share/memory/metaspace/virtualSpaceNode.cpp ! src/hotspot/share/opto/c2_globals.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/intrinsicnode.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/macroArrayCopy.cpp ! src/hotspot/share/opto/mathexactnode.cpp ! src/hotspot/share/opto/mulnode.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/stringopts.cpp ! src/hotspot/share/opto/subnode.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/utilities/globalDefinitions.hpp Changeset: cbecf422 Author: Xue-Lei Andrew Fan Date: 2023-05-11 18:07:54 +0000 URL: https://git.openjdk.org/loom/commit/cbecf422dfef1b53f3a159d2db63ba028d84f152 8307850: update for deprecated sprintf for jdk.jdi Reviewed-by: cjplummer ! src/jdk.jdi/share/native/libdt_shmem/SharedMemoryTransport.c ! src/jdk.jdi/share/native/libdt_shmem/shmemBase.c Changeset: 15358636 Author: Xue-Lei Andrew Fan Date: 2023-05-11 18:09:43 +0000 URL: https://git.openjdk.org/loom/commit/15358636cf67fb570231ec8521533bd2d3146b65 8307848: update for deprecated sprintf for jdk.attach Reviewed-by: sspitsyn, cjplummer ! src/jdk.attach/windows/native/libattach/VirtualMachineImpl.c Changeset: 4f355c35 Author: Guoxiong Li Date: 2023-05-11 18:21:30 +0000 URL: https://git.openjdk.org/loom/commit/4f355c3525072681ed1fb48dfdb8924b1cf0cc7c 8307653: Adjust delay time and gc log argument in TestAbortOnVMOperationTimeout Reviewed-by: dholmes, dcubed ! test/hotspot/jtreg/runtime/Safepoint/TestAbortOnVMOperationTimeout.java Changeset: 29b8242e Author: Joe Darcy Date: 2023-05-11 18:22:10 +0000 URL: https://git.openjdk.org/loom/commit/29b8242e07b3e85887e916bc76f37eefb4403e1d 8307954: Update string template regression tests to be robust on release updates Reviewed-by: jlaskey ! test/langtools/tools/javac/diags/examples/StringTemplate.java ! test/langtools/tools/javac/diags/examples/StringTemplateNoProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateNotProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateRawProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateUnclosedString.java ! test/langtools/tools/javac/diags/examples/StringTemplateUnclosedTextBlock.java Changeset: a667213e Author: Matias Saavedra Silva Date: 2023-05-11 19:37:16 +0000 URL: https://git.openjdk.org/loom/commit/a667213ec595ceb86a0196aff0e1236138fab2ef 8281715: Move "base CDS archive not loaded" tests to SharedArchiveFileOption.java Reviewed-by: ccheung, iklam ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/SharedArchiveFileOption.java Changeset: ce590772 Author: Jie Fu Date: 2023-05-11 22:35:40 +0000 URL: https://git.openjdk.org/loom/commit/ce5907727e835cb2bdf9362d7c3ad249cc29d5e7 8307945: Build of Client VM is broken after JDK-8307058 Reviewed-by: kvn ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Changeset: 54c06d2d Author: Chris Plummer Date: 2023-05-11 23:16:22 +0000 URL: https://git.openjdk.org/loom/commit/54c06d2d915e57d822136b403ea7a7675325d6fb 8307559: Add better checking in com/sun/jdi tests for debuggee exiting unexpectedly with an exception Reviewed-by: kevinw, lmesnik ! test/jdk/com/sun/jdi/ExceptionEvents.java ! test/jdk/com/sun/jdi/ResumeOneThreadTest.java ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: 9a7b4431 Author: Daniel D. Daugherty Date: 2023-05-12 00:51:49 +0000 URL: https://git.openjdk.org/loom/commit/9a7b4431ecde03f37d9f1c1b06dab6ef8d60a94c 8307966: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java on linux-x64 Reviewed-by: naoto, lmesnik ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt Changeset: 33d9a857 Author: Ningsheng Jian Date: 2023-05-12 02:05:18 +0000 URL: https://git.openjdk.org/loom/commit/33d9a857308eed53e06b448691910bc8aa2f8fc9 8307572: AArch64: Vector registers are clobbered by some macroassemblers Reviewed-by: aph, adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp + test/hotspot/jtreg/compiler/c2/aarch64/TestIntrinsicsRegStress.java Changeset: 73491fa4 Author: Abhishek Kumar Date: 2023-05-12 02:52:43 +0000 URL: https://git.openjdk.org/loom/commit/73491fa452e73cf7c02c577f4e3f1a34c02bea6d 8306996: Open source Swing MenuItem related tests Reviewed-by: dnguyen, honkar, psadhukhan + test/jdk/javax/swing/JMenuItem/bug4198809.java + test/jdk/javax/swing/JMenuItem/bug4304129.java + test/jdk/javax/swing/JMenuItem/bug4839464.java + test/jdk/javax/swing/JMenuItem/bug4966168.java Changeset: ccb4dd61 Author: Jie Fu Date: 2023-05-12 06:31:09 +0000 URL: https://git.openjdk.org/loom/commit/ccb4dd614483c11903dfde3e249c5ea8c8b04070 8307969: [zgc] Missing includes in gc/z/zTracer.cpp Reviewed-by: stefank ! src/hotspot/share/gc/z/zTracer.cpp Changeset: 5f1f9460 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-12 07:02:45 +0000 URL: https://git.openjdk.org/loom/commit/5f1f9460d75731513048a3bf205bc1ee6e5c483b 8307520: set minimum supported CPU architecture to Power8 on AIX Reviewed-by: mbaesken, erikj ! make/autoconf/flags-cflags.m4 ! make/hotspot/gensrc/GensrcAdlc.gmk Changeset: f3bd031c Author: Matthias Baesken Date: 2023-05-12 07:06:45 +0000 URL: https://git.openjdk.org/loom/commit/f3bd031ccd1924f4b785fad145641f396ec1aa30 8307891: ProblemList gtest/NMTGtest.java subtests on aix Reviewed-by: mdoerr, lucy ! test/hotspot/jtreg/ProblemList.txt Changeset: e32de7ef Author: Xiaolin Zheng Committer: Fei Yang Date: 2023-05-12 07:10:53 +0000 URL: https://git.openjdk.org/loom/commit/e32de7efd6f3173a0bba5829e8de3edd01cfdbab 8306667: RISC-V: Fix storeImmN0 matching rule by using zr register Reviewed-by: shade, gli, fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 1ce1611e Author: Thomas Schatzl Date: 2023-05-12 07:23:28 +0000 URL: https://git.openjdk.org/loom/commit/1ce1611ead1e3eccd9a6b82857740e27e37f05f7 8307518: Remove G1 workaround in jstat about zero sized generation sizes Reviewed-by: kbarrett, ayang ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.hpp Changeset: e1e758a7 Author: Afshin Zafari Date: 2023-05-12 07:32:46 +0000 URL: https://git.openjdk.org/loom/commit/e1e758a7b43c29840296d337bd2f0213ab0ca3c9 8305083: Remove finalize() from test/hotspot/jtreg/vmTestbase/nsk/share/ and /jpda that are used in serviceability/dcmd/framework tests Reviewed-by: coleenp, dholmes ! test/hotspot/jtreg/vmTestbase/nsk/share/Finalizable.java ! test/hotspot/jtreg/vmTestbase/nsk/share/FinalizableObject.java ! test/hotspot/jtreg/vmTestbase/nsk/share/LocalProcess.java ! test/hotspot/jtreg/vmTestbase/nsk/share/Log.java ! test/hotspot/jtreg/vmTestbase/nsk/share/MainWrapper.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Binder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jdwp/Binder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/BindServer.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeBinder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/SocketIOPipe.java Changeset: b6bcbc0c Author: Yasumasa Suenaga Date: 2023-05-12 08:48:29 +0000 URL: https://git.openjdk.org/loom/commit/b6bcbc0cbcb3729e4eb298f2198e0b6570e1f566 8305770: os::Linux::available_memory() should refer MemAvailable in /proc/meminfo Reviewed-by: stuefe, sgehwolf, rcastanedalo, dholmes ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/aix/os_aix.hpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/bsd/os_bsd.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/os/windows/os_windows.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/runtime/os.hpp Changeset: f09a0f5c Author: Kim Barrett Date: 2023-05-12 09:50:52 +0000 URL: https://git.openjdk.org/loom/commit/f09a0f5ca787e139f240a33bb12491792b8e7003 8307806: Rename Atomic::fetch_and_add and friends Reviewed-by: stefank, dholmes ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os_cpu/aix_ppc/atomic_aix_ppc.hpp ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp ! src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp ! src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp ! src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp ! src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp ! src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp ! src/hotspot/os_cpu/linux_riscv/atomic_linux_riscv.hpp ! src/hotspot/os_cpu/linux_s390/atomic_linux_s390.hpp ! src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp ! src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp ! src/hotspot/os_cpu/windows_aarch64/atomic_windows_aarch64.hpp ! src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp ! src/hotspot/share/classfile/classLoaderDataGraph.inline.hpp ! src/hotspot/share/gc/g1/g1BatchedTask.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1EvacFailureRegions.inline.hpp ! src/hotspot/share/gc/g1/g1MonotonicArena.inline.hpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/shared/partialArrayTaskStepper.inline.hpp ! src/hotspot/share/gc/shared/workerThread.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahNMethod.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp ! src/hotspot/share/gc/x/xForwardingAllocator.inline.hpp ! src/hotspot/share/gc/x/xMarkStackAllocator.cpp ! src/hotspot/share/gc/x/xNMethodTableIteration.cpp ! src/hotspot/share/gc/x/xPageAllocator.cpp ! src/hotspot/share/gc/x/xRelocationSet.cpp ! src/hotspot/share/gc/x/xRootsIterator.cpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.inline.hpp ! src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/runtime/atomic.hpp ! src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp ! test/hotspot/gtest/gc/g1/test_stressCommitUncommit.cpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 13a3fce2 Author: Maurizio Cimadamore Date: 2023-05-12 10:38:27 +0000 URL: https://git.openjdk.org/loom/commit/13a3fce29e696354b2e79fbcfd3557dc4a1fece7 8307961: java/foreign/enablenativeaccess/TestEnableNativeAccess.java fails with ShouldNotReachHere Reviewed-by: jvernee ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/libLinkerInvokerModule.cpp Changeset: f7bbbc65 Author: Albert Mingkun Yang Date: 2023-05-12 13:13:34 +0000 URL: https://git.openjdk.org/loom/commit/f7bbbc6590d93a5566ae0ea1f44476ec0e55f59e 8307808: G1: Remove partial object-count report after gc Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Changeset: 39dc40fe Author: Afshin Zafari Date: 2023-05-12 14:25:46 +0000 URL: https://git.openjdk.org/loom/commit/39dc40fed4e1af3e77355fa9f4abb0c72279a140 8305081: Remove finalize() from test/hotspot/jtreg/compiler/runtime/Test8168712 Reviewed-by: coleenp, thartmann ! test/hotspot/jtreg/compiler/runtime/Test8168712.java Changeset: 4b0f4213 Author: Xue-Lei Andrew Fan Date: 2023-05-12 14:52:28 +0000 URL: https://git.openjdk.org/loom/commit/4b0f4213a566c3c6d49c034ab6e022c93c4289b1 8307855: update for deprecated sprintf for src/utils Reviewed-by: thartmann ! src/utils/hsdis/binutils/hsdis-binutils.c Changeset: e512a206 Author: Thomas Schatzl Date: 2023-05-12 15:07:48 +0000 URL: https://git.openjdk.org/loom/commit/e512a20679ee03ae6d3c2219e4ad10c92e362e14 8306541: Refactor collection set candidate handling to prepare for JDK-8140326 Reviewed-by: iwalulya, ayang ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.hpp + src/hotspot/share/gc/g1/g1CollectionSetCandidates.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1RootClosures.cpp ! src/hotspot/share/gc/g1/g1RootClosures.hpp ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/utilities/growableArray.hpp Changeset: 9fa8b9a4 Author: Brian Burkhalter Date: 2023-05-12 15:17:22 +0000 URL: https://git.openjdk.org/loom/commit/9fa8b9a4a6e9658ee5f8084745ac84a1289a2d27 8307409: Refactor usage examples to use @snippet in the java.nio packages Reviewed-by: alanb, rriggs ! src/java.base/share/classes/java/nio/Buffer.java ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java ! src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java ! src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java ! src/java.base/share/classes/java/nio/channels/Channels.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java ! src/java.base/share/classes/java/nio/channels/GatheringByteChannel.java ! src/java.base/share/classes/java/nio/channels/MulticastChannel.java ! src/java.base/share/classes/java/nio/channels/ScatteringByteChannel.java ! src/java.base/share/classes/java/nio/channels/SelectionKey.java ! src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java ! src/java.base/share/classes/java/nio/channels/spi/AbstractInterruptibleChannel.java ! src/java.base/share/classes/java/nio/channels/spi/AbstractSelector.java ! src/java.base/share/classes/java/nio/charset/Charset.java ! src/java.base/share/classes/java/nio/file/DirectoryStream.java ! src/java.base/share/classes/java/nio/file/FileStore.java ! src/java.base/share/classes/java/nio/file/FileSystem.java ! src/java.base/share/classes/java/nio/file/FileSystems.java ! src/java.base/share/classes/java/nio/file/FileTreeIterator.java ! src/java.base/share/classes/java/nio/file/FileTreeWalker.java ! src/java.base/share/classes/java/nio/file/FileVisitor.java ! src/java.base/share/classes/java/nio/file/Files.java ! src/java.base/share/classes/java/nio/file/Path.java ! src/java.base/share/classes/java/nio/file/WatchKey.java ! src/java.base/share/classes/java/nio/file/Watchable.java ! src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributes.java ! src/java.base/share/classes/java/nio/file/attribute/DosFileAttributes.java ! src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/PosixFilePermissions.java ! src/java.base/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java Changeset: 3c68c352 Author: Daniel Fuchs Date: 2023-05-12 15:24:11 +0000 URL: https://git.openjdk.org/loom/commit/3c68c352fc3d3bff3d80bafcf04118759f4a2acf 8307535: java.util.logging.Handlers should be more VirtualThread friendly Reviewed-by: jpai ! src/java.logging/share/classes/java/util/logging/ErrorManager.java ! src/java.logging/share/classes/java/util/logging/FileHandler.java ! src/java.logging/share/classes/java/util/logging/Handler.java ! src/java.logging/share/classes/java/util/logging/MemoryHandler.java ! src/java.logging/share/classes/java/util/logging/SocketHandler.java ! src/java.logging/share/classes/java/util/logging/StreamHandler.java Changeset: 6ebea897 Author: Maurizio Cimadamore Date: 2023-05-12 16:18:00 +0000 URL: https://git.openjdk.org/loom/commit/6ebea8973feb08a7443d8d86ff52f453dc4aec43 8307911: javadoc for MemorySegment::reinterpret has duplicate restricted method paragraph Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/java/lang/foreign/MemorySegment.java Changeset: 7455bb23 Author: Jonathan Gibbons Date: 2023-05-12 17:18:37 +0000 URL: https://git.openjdk.org/loom/commit/7455bb23c1d18224e48e91aae4f11fe114d04fab 8308015: Syntax of "import static" is incorrect in com.sun.source.tree.ImportTree.java Reviewed-by: jlaskey, darcy ! src/jdk.compiler/share/classes/com/sun/source/tree/ImportTree.java Changeset: a284920b Author: Sergey Chernyshev Committer: Valerie Peng Date: 2023-05-12 19:24:45 +0000 URL: https://git.openjdk.org/loom/commit/a284920b3432b00496a2a32a284a91a9bd49fb06 8168469: Memory leak in JceSecurity Reviewed-by: valeriep ! src/java.base/share/classes/javax/crypto/JceSecurity.java.template + test/jdk/javax/crypto/JceSecurity/VerificationResults.java Changeset: 4441a230 Author: Justin Lu Date: 2023-05-12 19:58:37 +0000 URL: https://git.openjdk.org/loom/commit/4441a2306fb12f60ac879f7fda6c7446ac130dcb 6714245: [Col] Collator - Faster Comparison for identical strings. Reviewed-by: rriggs, naoto ! src/java.base/share/classes/java/text/RuleBasedCollator.java Changeset: d809823f Author: Chris Plummer Date: 2023-05-12 20:05:21 +0000 URL: https://git.openjdk.org/loom/commit/d809823fe486dfa0fe0bf1c3deff31e81bbc5f28 8306471: Add virtual threads support to JDWP ThreadReference.Stop and JDI ThreadReference.stop() Reviewed-by: sspitsyn, alanb ! src/java.se/share/data/jdwp/jdwp.spec ! src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java ! src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/Commands.java ! src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources.java ! src/jdk.jdi/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002t.java Changeset: 9842ff41 Author: Jonathan Gibbons Date: 2023-05-12 20:29:06 +0000 URL: https://git.openjdk.org/loom/commit/9842ff4129b756abb5761cdca71126508224875f 8306607: Apply 80-column output to javac supported version output Reviewed-by: darcy ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties Changeset: 38838b34 Author: Chris Plummer Date: 2023-05-12 20:36:38 +0000 URL: https://git.openjdk.org/loom/commit/38838b344af00b32251b3141350ba4deb3962d6f 8307480: Improve SA "transported core" documentation for windows Reviewed-by: sspitsyn, kevinw, poonam ! src/jdk.hotspot.agent/doc/transported_core.html Changeset: d8afc7be Author: Chen Liang Committer: Jonathan Gibbons Date: 2023-05-12 20:59:31 +0000 URL: https://git.openjdk.org/loom/commit/d8afc7beeb4c41c2dae4ec1dd6671464eaec4720 8300204: Sealed-class hierarchy graph missing nodes Reviewed-by: jjg ! make/jdk/src/classes/build/tools/taglet/SealedGraph.java Changeset: 3bf38761 Author: Alisen Chung Date: 2023-05-12 21:23:25 +0000 URL: https://git.openjdk.org/loom/commit/3bf3876185f7b9e7679af3fa22ec20887cd4e498 8307297: Move some DnD tests to open Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DragSourceSerializationTest.java + test/jdk/java/awt/dnd/DragTriggerEventTest.java + test/jdk/java/awt/dnd/DropActionChangeTest.java + test/jdk/java/awt/dnd/DropActionChangedTest.java + test/jdk/java/awt/dnd/DropPerformanceTest.java + test/jdk/java/awt/dnd/DropTargetAddNotifyNPETest.java + test/jdk/java/awt/dnd/DropTargetNullFlavorMapTest.java Changeset: 46e3d24a Author: Valerie Peng Date: 2023-05-12 23:00:00 +0000 URL: https://git.openjdk.org/loom/commit/46e3d24a6ff7d52d11f441d92628669d86d8bfaf 8155191: Specify that SecureRandom.nextBytes(byte[]) throws NullPointerException when byte array is null Reviewed-by: mullan ! src/java.base/share/classes/java/security/SecureRandom.java ! src/java.base/share/classes/sun/security/provider/AbstractDrbg.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11SecureRandom.java + test/jdk/java/security/SecureRandom/NextBytesNull.java Changeset: e54051ae Author: Thomas Stuefe Date: 2023-05-13 06:35:17 +0000 URL: https://git.openjdk.org/loom/commit/e54051ae9e1cdaa51a2d569227996a96b79bfa0d 8307935: Class space argument processing can be simplified Reviewed-by: stefank, coleenp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp Changeset: 5e26e64c Author: Daniel D. Daugherty Date: 2023-05-13 14:39:58 +0000 URL: https://git.openjdk.org/loom/commit/5e26e64cbfa4baf81024efeb57768458e59971f5 8307067: remove broken EnableThreadSMRExtraValidityChecks option Reviewed-by: coleenp, dholmes, sspitsyn, rehn ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/threadSMR.cpp Changeset: ceca198e Author: Daniel D. Daugherty Date: 2023-05-13 14:41:19 +0000 URL: https://git.openjdk.org/loom/commit/ceca198ef21b9003492b456d87180d2f48774f73 8307068: store a JavaThread* in the java.lang.Thread object after the JavaThread* is added to the main ThreadsList Reviewed-by: dholmes, rehn, apangin ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/threadSMR.cpp Changeset: f030937a Author: Daniel D. Daugherty Date: 2023-05-13 14:44:57 +0000 URL: https://git.openjdk.org/loom/commit/f030937a51b95dde33ce33537ee830153b2c3b56 8305670: Performance regression in LockSupport.unpark with lots of idle threads Co-authored-by: Robbin Ehn Reviewed-by: rehn, dholmes ! src/hotspot/share/prims/unsafe.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp Changeset: 646747fd Author: Kim Barrett Date: 2023-05-13 23:03:06 +0000 URL: https://git.openjdk.org/loom/commit/646747fd7c7320910eed682ae6da3cd4c60a51a5 8307926: Support byte-sized atomic bitset operations Reviewed-by: aboldtch, coleenp ! src/hotspot/share/runtime/atomic.hpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 37093441 Author: Vladimir Kempik Date: 2023-05-14 06:56:03 +0000 URL: https://git.openjdk.org/loom/commit/37093441661c26f333aac00d16aea00c3341d314 8291550: RISC-V: jdk uses misaligned memory access when AvoidUnalignedAccess enabled Co-authored-by: Xiaolin Zheng Co-authored-by: Feilong Jiang Reviewed-by: fjiang, fyang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/gc/shared/barrierSetNMethod_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/nativeInst_riscv.cpp ! src/hotspot/cpu/riscv/nativeInst_riscv.hpp ! src/hotspot/cpu/riscv/relocInfo_riscv.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp ! src/hotspot/cpu/riscv/templateTable_riscv.cpp Changeset: 0ee196be Author: Julian Waters Date: 2023-05-14 13:57:42 +0000 URL: https://git.openjdk.org/loom/commit/0ee196bef199c3d32c1f88b26eb4333a7ea73c10 8307163: JLONG_FORMAT_SPECIFIER should be updated on Windows Reviewed-by: stuefe ! src/hotspot/share/utilities/globalDefinitions_visCPP.hpp ! src/java.base/windows/native/libjli/java_md.h Changeset: 8d49ba9e Author: Tobias Hartmann Date: 2023-05-15 05:42:23 +0000 URL: https://git.openjdk.org/loom/commit/8d49ba9e8d3095f850b3007b56488a0c0cf8ddff 8308072: [BACKOUT] update for deprecated sprintf for src/utils Reviewed-by: iris ! src/utils/hsdis/binutils/hsdis-binutils.c Changeset: 911cc7cb Author: gaogao-mem Committer: Yi Yang Date: 2023-05-15 09:16:32 +0000 URL: https://git.openjdk.org/loom/commit/911cc7cb07ed44b24b4c20977d7d6e475bd1b234 8305819: LogConfigurationTest intermittently fails on AArch64 Reviewed-by: aph, dholmes, xliu ! src/hotspot/share/logging/logOutputList.cpp ! src/hotspot/share/logging/logOutputList.hpp Changeset: ad348a8c Author: Tobias Hartmann Date: 2023-05-15 11:06:20 +0000 URL: https://git.openjdk.org/loom/commit/ad348a8cec50561d3e295b6289772530f541c6b1 8303512: Race condition when computing is_loaded property of TypePtr::InterfaceSet Reviewed-by: roland, qamai, kvn ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp ! src/hotspot/share/utilities/growableArray.hpp Changeset: ffab1ea9 Author: Aleksey Shipilev Date: 2023-05-15 13:51:04 +0000 URL: https://git.openjdk.org/loom/commit/ffab1ea9e730204df5ab823eaa3ab7fdb3bef876 8308086: GHA: x86_32 host configuration failing with unmet dependencies Reviewed-by: stuefe ! .github/workflows/main.yml Changeset: 97b2ca3d Author: Stefan Karlsson Date: 2023-05-15 13:52:34 +0000 URL: https://git.openjdk.org/loom/commit/97b2ca3de76046c6f52d3649d8787feea7b9ac83 8307997: gtest:ZIndexDistributorTest fails on PPC64 Reviewed-by: mdoerr ! test/hotspot/gtest/gc/z/test_zIndexDistributor.cpp Changeset: 57e7a3fb Author: Ioi Lam Date: 2023-05-15 16:33:37 +0000 URL: https://git.openjdk.org/loom/commit/57e7a3fbeae56f39f9434b4a97dd915fa14af93d 8307959: Remove explicit type casts from SerializeClosure::do_xxx() calls Reviewed-by: matsaave, ccheung ! src/hotspot/share/cds/archiveUtils.cpp ! src/hotspot/share/cds/archiveUtils.hpp ! src/hotspot/share/cds/cppVtables.cpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/lambdaFormInvokers.cpp ! src/hotspot/share/classfile/classLoaderDataShared.cpp ! src/hotspot/share/classfile/compactHashtable.cpp ! src/hotspot/share/classfile/javaClassesImpl.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/universe.cpp ! src/hotspot/share/memory/universe.hpp ! src/hotspot/share/oops/instanceMirrorKlass.cpp ! src/hotspot/share/oops/instanceStackChunkKlass.cpp Changeset: 0f7b1c54 Author: Roger Riggs Date: 2023-05-15 18:02:43 +0000 URL: https://git.openjdk.org/loom/commit/0f7b1c549fbe4a90819fe3065dadf0b3e0ae94f3 8299340: CreateProcessW lpCommandLine must be mutable Reviewed-by: naoto ! src/java.base/windows/native/libjava/ProcessImpl_md.c Changeset: 01892f9c Author: Roger Riggs Date: 2023-05-15 18:03:24 +0000 URL: https://git.openjdk.org/loom/commit/01892f9c6ed1ff6593f77b89fcc2c5da8d094abf 8304913: Use OperatingSystem, Architecture, and Version in jlink Reviewed-by: jpai, alanb, mchung ! src/java.base/share/classes/module-info.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/ImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java ! test/jdk/tools/jlink/plugins/CDSPluginTest.java Changeset: 43c8c650 Author: Yi-Fan Tsai Committer: Paul Hohensee Date: 2023-05-15 18:41:53 +0000 URL: https://git.openjdk.org/loom/commit/43c8c650afe3c86ce4d59390eb0648548ed33126 8307555: Reduce memory reads in x86 MD5 intrinsic Reviewed-by: simonis, phh ! src/hotspot/cpu/x86/macroAssembler_x86_md5.cpp Changeset: cc80ada7 Author: Chris Plummer Date: 2023-05-15 18:59:08 +0000 URL: https://git.openjdk.org/loom/commit/cc80ada739066d0099085f1a388e96852f43a7d4 8306593: Fix nsk/jdi/stop/stop001 for virtual threads and remove from problem list Reviewed-by: lmesnik, sspitsyn ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001a.java Changeset: 7b0b9b57 Author: Joe Darcy Date: 2023-05-15 20:09:12 +0000 URL: https://git.openjdk.org/loom/commit/7b0b9b570b5d6e90e0b79fbe19396c6e908a1dae 8308049: Refactor nested class declarations in FdLibm.java Reviewed-by: smarks ! src/java.base/share/classes/java/lang/FdLibm.java Changeset: 31683722 Author: Justin Lu Date: 2023-05-15 23:19:02 +0000 URL: https://git.openjdk.org/loom/commit/316837226ecceb4daa14e2bc1be8ce120edbfdc9 8306597: Improve string formatting in EquivMapsGenerator.java Reviewed-by: naoto ! make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java Changeset: 05b51c75 Author: Ioi Lam Date: 2023-05-16 01:40:07 +0000 URL: https://git.openjdk.org/loom/commit/05b51c75b9ffea93f396b0afb0ded8b313cea51b 8307567: Avoid relocating global roots to metaspaceObjs in CDS dump Reviewed-by: matsaave, ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/archiveUtils.cpp ! src/hotspot/share/cds/archiveUtils.hpp ! src/hotspot/share/cds/cppVtables.cpp ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.cpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.hpp ! src/hotspot/share/cds/metaspaceShared.cpp ! src/hotspot/share/cds/runTimeClassInfo.cpp ! src/hotspot/share/cds/runTimeClassInfo.hpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/memory/allocation.hpp Changeset: 2210e067 Author: Jayathirth D V Date: 2023-05-16 04:09:08 +0000 URL: https://git.openjdk.org/loom/commit/2210e06788d14dab38f78d8b20a2397e633195af 8306638: Open source some AWT tests related to datatransfer and Toolkit Reviewed-by: prr, serb, dnguyen + test/jdk/java/awt/Toolkit/ToolkitListenerTest/ToolkitListenerTest.java + test/jdk/java/awt/datatransfer/CRLFTest/CRLFTest.java + test/jdk/java/awt/datatransfer/DataConversionDeadlockTest/DataConversionDeadlockTest.java + test/jdk/java/awt/datatransfer/DataFlavor/BestTextFlavorTest/BestTextFlavorTest.java + test/jdk/java/awt/datatransfer/FileTransferAWTLockTest/FileTransferAWTLockTest.java Changeset: d22bcc81 Author: Jaikiran Pai Date: 2023-05-16 05:06:46 +0000 URL: https://git.openjdk.org/loom/commit/d22bcc813eea719b817d3d541a843594675c0ca9 8307403: java/util/zip/DeInflate.java timed out Reviewed-by: simonis, lancea ! test/jdk/java/util/zip/DeInflate.java Changeset: c2ef3024 Author: Serguei Spitsyn Date: 2023-05-16 07:20:01 +0000 URL: https://git.openjdk.org/loom/commit/c2ef3024689d60c79320ab3ef9a2fdeccb4cde72 8307968: serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java timed out Reviewed-by: cjplummer, lmesnik ! test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java Changeset: 0790f704 Author: Kevin Walls Date: 2023-05-16 08:28:53 +0000 URL: https://git.openjdk.org/loom/commit/0790f704fdc82d8152219b280a51c8c1aad7a358 8306806: JMX agent with JDP enabled won't start when PerfData is disabled Reviewed-by: dholmes, cjplummer ! src/jdk.management.agent/share/classes/jdk/internal/agent/Agent.java Changeset: c9b6bb5b Author: Doug Simon Date: 2023-05-16 08:50:22 +0000 URL: https://git.openjdk.org/loom/commit/c9b6bb5bd7d5ca17825f8eb4f181fb42ca14a5d5 8308041: [JVMCI] WB_IsGCSupportedByJVMCICompiler must enter correct JVMCI env Reviewed-by: thartmann ! src/hotspot/share/prims/whitebox.cpp Changeset: 72294c54 Author: Daniel Fuchs Date: 2023-05-16 09:13:17 +0000 URL: https://git.openjdk.org/loom/commit/72294c5402dd11e3eb4922ad26e1b153098495ff 8308024: HttpClient (HTTP/1.1) sends an extraneous empty chunk if the BodyPublisher supplies an empty buffer Reviewed-by: djelinski, michaelm ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Request.java ! test/jdk/java/net/httpclient/AbstractNoBody.java ! test/jdk/java/net/httpclient/NoBodyPartOne.java + test/jdk/java/net/httpclient/NoBodyPartThree.java ! test/jdk/java/net/httpclient/NoBodyPartTwo.java Changeset: 19c8c30d Author: Christian Hagedorn Date: 2023-05-16 13:30:07 +0000 URL: https://git.openjdk.org/loom/commit/19c8c30d1cfe611945f1bf97018280ae6b48ee8b 8305634: Renaming predicates, simple cleanups, and adding summary about current predicates Reviewed-by: epeter, thartmann, roland ! src/hotspot/share/opto/cfgnode.cpp ! src/hotspot/share/opto/cfgnode.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/idealKit.cpp ! src/hotspot/share/opto/ifnode.cpp ! src/hotspot/share/opto/loopPredicate.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopUnswitch.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/split_if.cpp ! src/hotspot/share/opto/stringopts.cpp Changeset: be54b54f Author: Leonid Mesnik Date: 2023-05-16 13:39:04 +0000 URL: https://git.openjdk.org/loom/commit/be54b54fb3a6a7108f5f7ee6bf475cf1784d3297 8307369: Add execution of all svc tests in CI Reviewed-by: cjplummer, sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 23cbb2d1 Author: Christoph Dreis Committer: Vicente Romero Date: 2023-05-16 14:22:40 +0000 URL: https://git.openjdk.org/loom/commit/23cbb2d1709b5e7509e373d4642806d6436cbbcb 8306860: Avoid unnecessary allocation in List.map() when list is empty Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/List.java Changeset: 8686a36b Author: Calvin Cheung Date: 2023-05-16 14:42:33 +0000 URL: https://git.openjdk.org/loom/commit/8686a36b405fb3bb95f51493c1ef3e470acf2e85 8307315: Missing ResourceMark in CDS and JVMTI code Reviewed-by: coleenp, iklam ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/classfile/klassFactory.cpp Changeset: 316bc79e Author: Stefan Karlsson Date: 2023-05-16 14:48:46 +0000 URL: https://git.openjdk.org/loom/commit/316bc79e0e097bb752ba61551fd0e2502c0ed9f1 8308188: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java with ZGC on all platforms Reviewed-by: dcubed ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt Changeset: 41ee125a Author: Amit Kumar Committer: Martin Doerr Date: 2023-05-16 15:25:19 +0000 URL: https://git.openjdk.org/loom/commit/41ee125a0f6cf17c20d148bf2c06db1707e4d889 8278411: Implement UseHeavyMonitors consistently, s390 port Reviewed-by: mdoerr, stuefe, lucy ! src/hotspot/cpu/s390/c1_MacroAssembler_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/synchronizer.cpp ! test/jdk/java/util/concurrent/ConcurrentHashMap/MapLoops.java Changeset: 9d5bab11 Author: Johan Sj?len Date: 2023-05-16 15:40:39 +0000 URL: https://git.openjdk.org/loom/commit/9d5bab11f08a992803399f422d75b17f8607df72 8300081: Replace NULL with nullptr in share/asm/ Reviewed-by: coleenp ! src/hotspot/share/asm/assembler.cpp ! src/hotspot/share/asm/assembler.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/asm/codeBuffer.hpp ! src/hotspot/share/asm/codeBuffer.inline.hpp Changeset: 682359cb Author: Stefan Karlsson Date: 2023-05-16 16:04:18 +0000 URL: https://git.openjdk.org/loom/commit/682359cb4871d779425a9468e8a307169b3651d6 8299075: TestStringDeduplicationInterned.java fails because extra deduplication Reviewed-by: kbarrett, tschatzl ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTools.java Changeset: 599fa774 Author: Stefan Karlsson Date: 2023-05-16 16:12:20 +0000 URL: https://git.openjdk.org/loom/commit/599fa774b875da971d66f79e5e43ede2b5ce18aa 8308092: Replace NULL with nullptr in gc/x Reviewed-by: eosterlund, aboldtch, tschatzl, dholmes ! src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.hpp ! src/hotspot/cpu/ppc/gc/x/x_ppc.ad ! src/hotspot/share/gc/x/c1/xBarrierSetC1.cpp ! src/hotspot/share/gc/x/c2/xBarrierSetC2.cpp ! src/hotspot/share/gc/x/xArray.inline.hpp ! src/hotspot/share/gc/x/xBarrier.cpp ! src/hotspot/share/gc/x/xBarrier.inline.hpp ! src/hotspot/share/gc/x/xBarrierSet.inline.hpp ! src/hotspot/share/gc/x/xBarrierSetStackChunk.cpp ! src/hotspot/share/gc/x/xCPU.cpp ! src/hotspot/share/gc/x/xCPU.inline.hpp ! src/hotspot/share/gc/x/xCollectedHeap.cpp ! src/hotspot/share/gc/x/xForwarding.cpp ! src/hotspot/share/gc/x/xForwardingAllocator.cpp ! src/hotspot/share/gc/x/xForwardingTable.inline.hpp ! src/hotspot/share/gc/x/xHeap.cpp ! src/hotspot/share/gc/x/xHeap.inline.hpp ! src/hotspot/share/gc/x/xHeapIterator.cpp ! src/hotspot/share/gc/x/xList.inline.hpp ! src/hotspot/share/gc/x/xLock.inline.hpp ! src/hotspot/share/gc/x/xMark.cpp ! src/hotspot/share/gc/x/xMarkCache.cpp ! src/hotspot/share/gc/x/xMarkCache.inline.hpp ! src/hotspot/share/gc/x/xMarkStack.cpp ! src/hotspot/share/gc/x/xMarkStack.inline.hpp ! src/hotspot/share/gc/x/xMarkStackAllocator.cpp ! src/hotspot/share/gc/x/xMemory.cpp ! src/hotspot/share/gc/x/xNMethod.cpp ! src/hotspot/share/gc/x/xNMethodData.cpp ! src/hotspot/share/gc/x/xNMethodTable.cpp ! src/hotspot/share/gc/x/xNMethodTableEntry.hpp ! src/hotspot/share/gc/x/xNMethodTableIteration.cpp ! src/hotspot/share/gc/x/xObjectAllocator.cpp ! src/hotspot/share/gc/x/xPage.cpp ! src/hotspot/share/gc/x/xPageAllocator.cpp ! src/hotspot/share/gc/x/xPageCache.cpp ! src/hotspot/share/gc/x/xPageTable.cpp ! src/hotspot/share/gc/x/xPageTable.inline.hpp ! src/hotspot/share/gc/x/xReferenceProcessor.cpp ! src/hotspot/share/gc/x/xRelocate.cpp ! src/hotspot/share/gc/x/xRelocationSet.cpp ! src/hotspot/share/gc/x/xRelocationSetSelector.cpp ! src/hotspot/share/gc/x/xSafeDelete.inline.hpp ! src/hotspot/share/gc/x/xServiceability.cpp ! src/hotspot/share/gc/x/xStackWatermark.cpp ! src/hotspot/share/gc/x/xStat.cpp ! src/hotspot/share/gc/x/xStat.hpp ! src/hotspot/share/gc/x/xThreadLocalAllocBuffer.cpp ! src/hotspot/share/gc/x/xThreadLocalData.hpp ! src/hotspot/share/gc/x/xTracer.cpp ! src/hotspot/share/gc/x/xUnload.cpp ! src/hotspot/share/gc/x/xUnmapper.cpp ! src/hotspot/share/gc/x/xVerify.cpp ! src/hotspot/share/gc/x/xWeakRootsProcessor.cpp Changeset: 60ab1358 Author: Stefan Karlsson Date: 2023-05-16 16:13:58 +0000 URL: https://git.openjdk.org/loom/commit/60ab1358da662977e94759eccb95d75a389fd256 8308097: Generational ZGC: Update constructor syntax Reviewed-by: eosterlund, aboldtch ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.cpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/vmStructs_z.cpp ! src/hotspot/share/gc/z/zAllocationFlags.hpp ! src/hotspot/share/gc/z/zAllocator.cpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zAttachedArray.inline.hpp ! src/hotspot/share/gc/z/zBarrierSet.cpp ! src/hotspot/share/gc/z/zBitMap.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zContinuation.cpp ! src/hotspot/share/gc/z/zDirector.cpp ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zDriverPort.cpp ! src/hotspot/share/gc/z/zErrno.cpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.cpp ! src/hotspot/share/gc/z/zForwardingEntry.hpp ! src/hotspot/share/gc/z/zForwardingTable.inline.hpp ! src/hotspot/share/gc/z/zFuture.inline.hpp ! src/hotspot/share/gc/z/zGCIdPrinter.cpp ! src/hotspot/share/gc/z/zGeneration.cpp ! src/hotspot/share/gc/z/zGranuleMap.inline.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp ! src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zIterator.inline.hpp ! src/hotspot/share/gc/z/zList.inline.hpp ! src/hotspot/share/gc/z/zLiveMap.cpp ! src/hotspot/share/gc/z/zLock.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMarkCache.cpp ! src/hotspot/share/gc/z/zMarkContext.inline.hpp ! src/hotspot/share/gc/z/zMarkStack.cpp ! src/hotspot/share/gc/z/zMarkStack.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zMarkStackEntry.hpp ! src/hotspot/share/gc/z/zMarkTerminate.inline.hpp ! src/hotspot/share/gc/z/zMemory.cpp ! src/hotspot/share/gc/z/zMemory.inline.hpp ! src/hotspot/share/gc/z/zMetronome.cpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethodData.cpp ! src/hotspot/share/gc/z/zNMethodTableEntry.hpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zObjArrayAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.cpp ! src/hotspot/share/gc/z/zPage.cpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.inline.hpp ! src/hotspot/share/gc/z/zPageCache.cpp ! src/hotspot/share/gc/z/zPageTable.cpp ! src/hotspot/share/gc/z/zPageTable.inline.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.cpp ! src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp ! src/hotspot/share/gc/z/zReferenceProcessor.cpp ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRelocationSet.cpp ! src/hotspot/share/gc/z/zRelocationSet.inline.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.cpp ! src/hotspot/share/gc/z/zRemembered.cpp ! src/hotspot/share/gc/z/zRememberedSet.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/gc/z/zRuntimeWorkers.cpp ! src/hotspot/share/gc/z/zSafeDelete.inline.hpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zStackWatermark.cpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zStat.hpp ! src/hotspot/share/gc/z/zStoreBarrierBuffer.cpp ! src/hotspot/share/gc/z/zTask.cpp ! src/hotspot/share/gc/z/zThreadLocalData.hpp ! src/hotspot/share/gc/z/zTracer.cpp ! src/hotspot/share/gc/z/zTracer.hpp ! src/hotspot/share/gc/z/zTracer.inline.hpp ! src/hotspot/share/gc/z/zUncoloredRoot.inline.hpp ! src/hotspot/share/gc/z/zUncommitter.cpp ! src/hotspot/share/gc/z/zUnload.cpp ! src/hotspot/share/gc/z/zUnmapper.cpp ! src/hotspot/share/gc/z/zValue.inline.hpp ! src/hotspot/share/gc/z/zVerify.cpp ! src/hotspot/share/gc/z/zVirtualMemory.cpp ! src/hotspot/share/gc/z/zVirtualMemory.inline.hpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.cpp ! src/hotspot/share/gc/z/zWorkers.cpp ! test/hotspot/gtest/gc/z/test_zList.cpp ! test/hotspot/gtest/gc/z/test_zMemory.cpp Changeset: 488330d5 Author: Coleen Phillimore Date: 2023-05-16 16:46:09 +0000 URL: https://git.openjdk.org/loom/commit/488330d53bb782657378424421a9ce2f2eed5e88 8307533: Use atomic bitset functions for metadata flags Reviewed-by: ccheung, kbarrett ! src/hotspot/share/oops/fieldInfo.inline.hpp ! src/hotspot/share/oops/instanceKlassFlags.cpp ! src/hotspot/share/oops/instanceKlassFlags.hpp ! src/hotspot/share/oops/methodFlags.cpp ! src/hotspot/share/oops/methodFlags.hpp Changeset: 64d51571 Author: Chris Plummer Date: 2023-05-16 17:02:12 +0000 URL: https://git.openjdk.org/loom/commit/64d51571166e69f724c6329f4a4c23be143e7f95 8306467: Fix nsk/jdb/kill/kill001 to work with new JVMTI StopThread support for virtual threads. Reviewed-by: sspitsyn, amenkov ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdb/kill/kill001/kill001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdb/kill/kill001/kill001a.java Changeset: 4e929918 Author: Justin Lu Date: 2023-05-16 17:10:21 +0000 URL: https://git.openjdk.org/loom/commit/4e92991809aa62cf98543a58bec352ab8a2c7b3d 8300794: Use @snippet in java.util:i18n Reviewed-by: naoto, lancea ! src/java.base/share/classes/java/util/Currency.java ! src/java.base/share/classes/java/util/ListResourceBundle.java ! src/java.base/share/classes/java/util/Locale.java ! src/java.base/share/classes/java/util/PropertyResourceBundle.java ! src/java.base/share/classes/java/util/ResourceBundle.java Changeset: f9a785e8 Author: Naoto Sato Date: 2023-05-16 18:00:45 +0000 URL: https://git.openjdk.org/loom/commit/f9a785e855287ff6746ac8dc8f8f2e2f90c5be07 8307547: Support variant collations Reviewed-by: srl, jlu, alanb ! src/java.base/share/classes/java/text/Collator.java ! src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java ! src/jdk.localedata/share/classes/sun/text/resources/ext/CollationData_sv.java ! test/jdk/sun/text/resources/Collator/SwedishTest.java Changeset: cb8b8cdd Author: Erik Helin Date: 2023-05-16 18:53:58 +0000 URL: https://git.openjdk.org/loom/commit/cb8b8cdd6861a0843f3b1036155eac9f9afc432a 8307458: Add periodic heap usage JFR events Reviewed-by: stefank, aboldtch ! src/hotspot/share/jfr/metadata/metadata.xml ! src/hotspot/share/jfr/periodic/jfrPeriodic.cpp ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc + test/jdk/jdk/jfr/event/gc/detailed/TestGCHeapMemoryPoolUsageEvent.java + test/jdk/jdk/jfr/event/gc/detailed/TestGCHeapMemoryUsageEvent.java ! test/lib/jdk/test/lib/jfr/EventNames.java Changeset: 563152f3 Author: Leonid Mesnik Date: 2023-05-16 19:44:38 +0000 URL: https://git.openjdk.org/loom/commit/563152f32dd2c8617c0e0955d55c5bbce23627fb 8308223: failure handler missed jcmd.vm.info command Reviewed-by: stefank ! test/failure_handler/src/share/conf/common.properties Changeset: d3e50652 Author: Ashutosh Mehra Committer: Ioi Lam Date: 2023-05-16 22:36:44 +0000 URL: https://git.openjdk.org/loom/commit/d3e5065284441647564a9eede79d69e7b0ac80be 8306460: Clear JVM_ACC_QUEUED flag on methods when dumping dynamic CDS archive Reviewed-by: coleenp, iklam ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp Changeset: 2f1c6548 Author: Guoxiong Li Date: 2023-05-17 03:07:56 +0000 URL: https://git.openjdk.org/loom/commit/2f1c65486b1e584f9c4a2eb7af2414d032a02748 8307955: Prefer to PTRACE_GETREGSET instead of PTRACE_GETREGS in method 'ps_proc.c::process_get_lwp_regs' Reviewed-by: cjplummer, kevinw ! src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c Changeset: 5a92aae1 Author: Matthias Baesken Date: 2023-05-17 06:42:19 +0000 URL: https://git.openjdk.org/loom/commit/5a92aae1d967f5be01f05d9cc56c433a5eca61e8 8308156: VerifyCACerts.java misses blank in error output Reviewed-by: mullan, rhalade ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: e34ecc97 Author: Axel Boldt-Christmas Date: 2023-05-17 07:07:41 +0000 URL: https://git.openjdk.org/loom/commit/e34ecc97e63c4565f09b0c80d194c4708c408c10 8296469: Instrument VMError::report with reentrant iteration step for register and stack printing Reviewed-by: eosterlund, stuefe ! src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp ! src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp ! src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp ! src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp ! src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp ! src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp ! src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp ! src/hotspot/os_cpu/linux_riscv/os_linux_riscv.cpp ! src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp ! src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp ! src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp ! src/hotspot/os_cpu/windows_aarch64/os_windows_aarch64.cpp ! src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/os.hpp ! src/hotspot/share/utilities/vmError.cpp ! src/hotspot/share/utilities/vmError.hpp ! test/hotspot/jtreg/TEST.groups + test/hotspot/jtreg/runtime/ErrorHandling/ReattemptErrorTest.java Changeset: b300e73a Author: Aleksey Shipilev Date: 2023-05-17 09:19:08 +0000 URL: https://git.openjdk.org/loom/commit/b300e73a4acb5c64f68a355e0ad70d3862084ff4 8308088: Improve class check in CollectedHeap::is_oop Reviewed-by: zgu, tschatzl, ayang, stuefe ! src/hotspot/share/gc/shared/collectedHeap.cpp Changeset: 1a6f9810 Author: Jaikiran Pai Date: 2023-05-17 10:06:22 +0000 URL: https://git.openjdk.org/loom/commit/1a6f9810cd5bcd3cdbdd1505900c0e8c7f091b22 8308185: Update Http2TestServerConnection to use SSLSocket.startHandshake() Reviewed-by: djelinski ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java Changeset: 285c833f Author: Erik ?sterlund Date: 2023-05-17 11:47:30 +0000 URL: https://git.openjdk.org/loom/commit/285c833ffacdaabe7c4955cbbafb3bc459d26784 8308043: Deadlock in TestCSLocker.java due to blocking GC while allocating Reviewed-by: stefank, ayang, tschatzl ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/gc/cslocker/TestCSLocker.java Changeset: c7951cf6 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-17 11:48:56 +0000 URL: https://git.openjdk.org/loom/commit/c7951cf674581ccd021e7403f5c3bd898e0542f4 8306304: Fix xlc17 clang warnings in ppc and aix code Reviewed-by: erikj, tsteele, mbaesken ! make/hotspot/lib/CompileJvm.gmk ! src/hotspot/cpu/ppc/assembler_ppc.cpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp ! src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp ! src/java.desktop/aix/native/libawt/porting_aix.c Changeset: 5763be72 Author: Adam Sotona Date: 2023-05-17 12:45:19 +0000 URL: https://git.openjdk.org/loom/commit/5763be726700be322de3bbaf345d80e11936b472 8307326: Package jdk.internal.classfile.java.lang.constant become obsolete Reviewed-by: erikj, liach ! make/RunTests.gmk ! make/test/BuildMicrobenchmark.gmk ! make/test/BuildTestLib.gmk ! src/java.base/share/classes/jdk/internal/classfile/Classfile.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleExportInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleHashInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleOpenInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModulePackagesAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleRequireInfo.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ModuleEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/PackageEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractPoolEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ClassPrinterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ModuleAttributeBuilderImpl.java - src/java.base/share/classes/jdk/internal/classfile/impl/ModuleDescImpl.java - src/java.base/share/classes/jdk/internal/classfile/impl/PackageDescImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/Util.java - src/java.base/share/classes/jdk/internal/classfile/java/lang/constant/ModuleDesc.java - src/java.base/share/classes/jdk/internal/classfile/java/lang/constant/PackageDesc.java ! src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java ! test/hotspot/jtreg/serviceability/dcmd/framework/VMVersionTest.java ! test/hotspot/jtreg/testlibrary/ctw/Makefile ! test/jdk/java/lang/ClassLoader/securityManager/ClassLoaderTest.java ! test/jdk/java/lang/ModuleTests/AnnotationsTest.java ! test/jdk/java/lang/module/ClassFileVersionsTest.java ! test/jdk/java/lang/module/ConfigurationTest.java ! test/jdk/java/lang/module/ModuleDescriptorTest.java ! test/jdk/java/lang/module/ModuleFinderTest.java ! test/jdk/java/lang/module/ModuleNamesTest.java ! test/jdk/java/lang/module/MultiReleaseJarTest.java ! test/jdk/java/security/Provider/SecurityProviderModularTest.java ! test/jdk/javax/security/auth/login/modules/JaasModularClientTest.java ! test/jdk/javax/security/auth/login/modules/JaasModularDefaultHandlerTest.java ! test/jdk/jdk/classfile/AdvancedTransformationsTest.java ! test/jdk/jdk/classfile/ModuleBuilderTest.java - test/jdk/jdk/classfile/ModuleDescTest.java - test/jdk/jdk/classfile/PackageDescTest.java ! test/jdk/jdk/classfile/TEST.properties ! test/jdk/jdk/classfile/examples/ModuleExamples.java ! test/jdk/jdk/classfile/helpers/RebuildingTransformation.java ! test/jdk/jdk/modules/incubator/ServiceBinding.java ! test/jdk/sun/tools/jcmd/TestProcessHelper.java ! test/jdk/tools/jlink/JLinkNegativeTest.java ! test/lib/jdk/test/lib/util/ModuleInfoWriter.java Changeset: 64f6681c Author: Martin Doerr Date: 2023-05-17 15:10:46 +0000 URL: https://git.openjdk.org/loom/commit/64f6681cc7bb184112adcf2b4f2c313e1b0a5c4f 8308246: PPC64le build broken after JDK-8304913 Reviewed-by: shade, mbaesken ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java Changeset: f57c7833 Author: Joe Darcy Date: 2023-05-17 15:31:03 +0000 URL: https://git.openjdk.org/loom/commit/f57c78337e4f968c2e6a924acbebf725d4e46d59 8308239: Tighten up accessibility of nested classes in java.lang.invoke Reviewed-by: alanb ! src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java Changeset: 6d4782bc Author: Brian Burkhalter Date: 2023-05-17 16:04:08 +0000 URL: https://git.openjdk.org/loom/commit/6d4782bc737d5933b9476cadb5e87ceee94c4f68 8307976: (fs) Files.createDirectories(dir) returns dir::toAbsolutePath instead of dir Reviewed-by: alanb ! src/java.base/share/classes/java/nio/file/Files.java ! test/jdk/java/nio/file/Files/CreateDirectories.java Changeset: dd3a68c8 Author: Alan Bateman Date: 2023-05-18 09:26:27 +0000 URL: https://git.openjdk.org/loom/commit/dd3a68c822192d7f093a78d9c80ae01657741144 Merge with jdk-21+23 ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList-Virtual.txt ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList-Virtual.txt From duke at openjdk.org Thu May 18 08:41:27 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 08:41:27 GMT Subject: git: openjdk/loom: master: 107 new changesets Message-ID: Changeset: f250ab2c Author: Jonathan Gibbons Date: 2023-05-10 22:05:58 +0000 URL: https://git.openjdk.org/loom/commit/f250ab2c2ae120c9b25da1486e919f2acf08f7d1 8307377: Remove use of `tagName` from TagletWriterImpl.linkSeeReferenceOutput Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties ! test/langtools/jdk/javadoc/doclet/testDoclintDocletMessages/TestDocLintDocletMessages.java ! test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java ! test/langtools/jdk/javadoc/doclet/testInherited/TestInherited.java ! test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletPrimitive.java ! test/langtools/jdk/javadoc/doclet/testSeeLinkAnchor/TestSeeLinkAnchor.java ! test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java Changeset: 958d4a75 Author: Jonathan Gibbons Date: 2023-05-10 22:23:04 +0000 URL: https://git.openjdk.org/loom/commit/958d4a750537320bf4e4f5cedd2e1a9a2e52ae33 8307563: make most fields final in `JavacTrees` Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Changeset: 4795c395 Author: Justin Lu Date: 2023-05-10 23:57:48 +0000 URL: https://git.openjdk.org/loom/commit/4795c395e9799719dfcdd947fe8905f25f3a11a2 8281103: Give example for Locale that is English and follows the ISO standards Reviewed-by: rriggs, lancea, naoto ! src/java.base/share/classes/java/time/temporal/WeekFields.java Changeset: 3cb606ef Author: David Holmes Date: 2023-05-11 00:51:15 +0000 URL: https://git.openjdk.org/loom/commit/3cb606ef5b21b5d65cb97b459f30cdeacd035669 8306965: osThread allocation failures should not abort the VM Reviewed-by: lfoltan ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/windows/os_windows.cpp Changeset: 39f4e4d3 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-11 01:32:29 +0000 URL: https://git.openjdk.org/loom/commit/39f4e4d3c3450ed8fe314e2abde6a6cecd5fa0a5 8307758: RISC-V: Improve bit test code introduced by JDK-8291555 Co-authored-by: Fei Yang Reviewed-by: fyang ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp Changeset: 984fbbbc Author: Thomas Stuefe Date: 2023-05-11 04:47:14 +0000 URL: https://git.openjdk.org/loom/commit/984fbbbcabca475c3c3af7c10a843759744c1472 8307810: Consistently use LockingMode instead of UseHeavyMonitors Reviewed-by: dcubed, mdoerr, dholmes, amitkumar ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp Changeset: 8ac71863 Author: Thomas Stuefe Date: 2023-05-11 04:50:37 +0000 URL: https://git.openjdk.org/loom/commit/8ac7186331489ccff7eb2908074c6ab9a39ff90c 8305416: runtime/Thread/TestAlwaysPreTouchStacks.java failed with "Did not find expected NMT output" Reviewed-by: dholmes, gziemski ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java Changeset: 08fa2698 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-11 07:40:38 +0000 URL: https://git.openjdk.org/loom/commit/08fa269886467e6d468d00158a601c3143c32790 8307349: Support xlc17 clang toolchain on AIX Reviewed-by: erikj, mbaesken ! make/autoconf/flags-cflags.m4 ! make/autoconf/flags-ldflags.m4 ! make/autoconf/toolchain.m4 ! make/hotspot/gensrc/GensrcAdlc.gmk ! make/hotspot/lib/JvmOverrideFiles.gmk ! src/hotspot/share/utilities/globalDefinitions_xlc.hpp Changeset: ecc1d85d Author: Thomas Stuefe Date: 2023-05-11 09:24:30 +0000 URL: https://git.openjdk.org/loom/commit/ecc1d85dbea84c291c4014f2237ae9326f14cccb 8307869: Remove unnecessary log statements from arm32 fastlocking code Reviewed-by: shade ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/c2_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp Changeset: ba9714d4 Author: Maurizio Cimadamore Date: 2023-05-11 09:45:45 +0000 URL: https://git.openjdk.org/loom/commit/ba9714d44ceabdb98078a4338fb8e8a3e22adcbe 8307610: Linker::nativeLinker should not be restricted (mainline) Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! test/jdk/java/foreign/enablenativeaccess/org/openjdk/foreigntest/PanamaMainUnnamedModule.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMain.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/PanamaMainJNI.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/PanamaMainReflection.java ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/libLinkerInvokerModule.cpp ! test/jdk/java/foreign/handles/invoker_module/handle/invoker/MethodHandleInvoker.java ! test/jdk/java/foreign/handles/lookup_module/handle/lookup/MethodHandleLookup.java Changeset: 0cbfbc40 Author: Yudi Zheng Committer: Doug Simon Date: 2023-05-11 10:38:28 +0000 URL: https://git.openjdk.org/loom/commit/0cbfbc400aac53b098a3d8a7dda1aec2180a47a7 8307813: [JVMCI] Export markWord::lock_mask_in_place to JVMCI compilers. Reviewed-by: dnsimon, kvn, never ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp Changeset: d20034b0 Author: Stefan Karlsson Date: 2023-05-11 13:59:37 +0000 URL: https://git.openjdk.org/loom/commit/d20034b09c99026e7dc2213f7d88ebdc85e5b1e7 8307058: Implementation of Generational ZGC Co-authored-by: Stefan Karlsson Co-authored-by: Erik ?sterlund Co-authored-by: Axel Boldt-Christmas Co-authored-by: Per Liden Co-authored-by: Stefan Johansson Co-authored-by: Albert Mingkun Yang Co-authored-by: Erik Helin Co-authored-by: Roberto Casta?eda Lozano Co-authored-by: Nils Eliasson Co-authored-by: Martin Doerr Co-authored-by: Leslie Zhai Co-authored-by: Fei Yang Co-authored-by: Yadong Wang Reviewed-by: eosterlund, aboldtch, rcastanedalo ! make/hotspot/gensrc/GensrcAdlc.gmk ! make/hotspot/lib/JvmFeatures.gmk ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shared/barrierSetNMethod_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xBarrierSetAssembler_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xBarrierSetAssembler_aarch64.hpp = src/hotspot/cpu/aarch64/gc/x/xGlobals_aarch64.cpp + src/hotspot/cpu/aarch64/gc/x/xGlobals_aarch64.hpp + src/hotspot/cpu/aarch64/gc/x/x_aarch64.ad + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.cpp + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.hpp + src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.inline.hpp ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/z/zGlobals_aarch64.hpp ! src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad ! src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp ! src/hotspot/cpu/aarch64/stubRoutines_aarch64.hpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp + src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.cpp + src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.hpp = src/hotspot/cpu/ppc/gc/x/xGlobals_ppc.cpp + src/hotspot/cpu/ppc/gc/x/xGlobals_ppc.hpp + src/hotspot/cpu/ppc/gc/x/x_ppc.ad + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.cpp + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.hpp + src/hotspot/cpu/ppc/gc/z/zAddress_ppc.inline.hpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.hpp ! src/hotspot/cpu/ppc/gc/z/zGlobals_ppc.hpp ! src/hotspot/cpu/ppc/gc/z/z_ppc.ad ! src/hotspot/cpu/ppc/macroAssembler_ppc.inline.hpp ! src/hotspot/cpu/ppc/relocInfo_ppc.hpp ! src/hotspot/cpu/ppc/stubGenerator_ppc.cpp ! src/hotspot/cpu/riscv/c1_LIRAssembler_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xBarrierSetAssembler_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xBarrierSetAssembler_riscv.hpp = src/hotspot/cpu/riscv/gc/x/xGlobals_riscv.cpp + src/hotspot/cpu/riscv/gc/x/xGlobals_riscv.hpp + src/hotspot/cpu/riscv/gc/x/x_riscv64.ad + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.cpp + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.hpp + src/hotspot/cpu/riscv/gc/z/zAddress_riscv.inline.hpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.hpp ! src/hotspot/cpu/riscv/gc/z/zGlobals_riscv.hpp ! src/hotspot/cpu/riscv/gc/z/z_riscv64.ad ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/nativeInst_riscv.cpp ! src/hotspot/cpu/riscv/nativeInst_riscv.hpp ! src/hotspot/cpu/riscv/relocInfo_riscv.hpp ! src/hotspot/cpu/riscv/stubGenerator_riscv.cpp ! src/hotspot/cpu/riscv/stubRoutines_riscv.hpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp + src/hotspot/cpu/x86/gc/x/xBarrierSetAssembler_x86.cpp + src/hotspot/cpu/x86/gc/x/xBarrierSetAssembler_x86.hpp = src/hotspot/cpu/x86/gc/x/xGlobals_x86.cpp + src/hotspot/cpu/x86/gc/x/xGlobals_x86.hpp + src/hotspot/cpu/x86/gc/x/x_x86_64.ad + src/hotspot/cpu/x86/gc/z/zAddress_x86.cpp + src/hotspot/cpu/x86/gc/z/zAddress_x86.hpp + src/hotspot/cpu/x86/gc/z/zAddress_x86.inline.hpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp ! src/hotspot/cpu/x86/gc/z/zGlobals_x86.hpp ! src/hotspot/cpu/x86/gc/z/z_x86_64.ad ! src/hotspot/cpu/x86/relocInfo_x86.hpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/cpu/x86/templateTable_x86.cpp + src/hotspot/os/bsd/gc/x/xLargePages_bsd.cpp + src/hotspot/os/bsd/gc/x/xNUMA_bsd.cpp + src/hotspot/os/bsd/gc/x/xPhysicalMemoryBacking_bsd.cpp + src/hotspot/os/bsd/gc/x/xPhysicalMemoryBacking_bsd.hpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.hpp + src/hotspot/os/linux/gc/x/xLargePages_linux.cpp + src/hotspot/os/linux/gc/x/xMountPoint_linux.cpp + src/hotspot/os/linux/gc/x/xMountPoint_linux.hpp + src/hotspot/os/linux/gc/x/xNUMA_linux.cpp + src/hotspot/os/linux/gc/x/xPhysicalMemoryBacking_linux.cpp + src/hotspot/os/linux/gc/x/xPhysicalMemoryBacking_linux.hpp + src/hotspot/os/linux/gc/x/xSyscall_linux.cpp + src/hotspot/os/linux/gc/x/xSyscall_linux.hpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.cpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.hpp = src/hotspot/os/posix/gc/x/xArguments_posix.cpp = src/hotspot/os/posix/gc/x/xInitialize_posix.cpp + src/hotspot/os/posix/gc/x/xUtils_posix.cpp + src/hotspot/os/posix/gc/x/xVirtualMemory_posix.cpp ! src/hotspot/os/posix/gc/z/zArguments_posix.cpp ! src/hotspot/os/posix/gc/z/zVirtualMemory_posix.cpp + src/hotspot/os/windows/gc/x/xArguments_windows.cpp + src/hotspot/os/windows/gc/x/xInitialize_windows.cpp + src/hotspot/os/windows/gc/x/xLargePages_windows.cpp + src/hotspot/os/windows/gc/x/xMapper_windows.cpp = src/hotspot/os/windows/gc/x/xMapper_windows.hpp + src/hotspot/os/windows/gc/x/xNUMA_windows.cpp + src/hotspot/os/windows/gc/x/xPhysicalMemoryBacking_windows.cpp + src/hotspot/os/windows/gc/x/xPhysicalMemoryBacking_windows.hpp + src/hotspot/os/windows/gc/x/xSyscall_windows.cpp + src/hotspot/os/windows/gc/x/xSyscall_windows.hpp + src/hotspot/os/windows/gc/x/xUtils_windows.cpp + src/hotspot/os/windows/gc/x/xVirtualMemory_windows.cpp ! src/hotspot/os/windows/gc/z/zArguments_windows.cpp ! src/hotspot/os/windows/gc/z/zMapper_windows.cpp ! src/hotspot/os/windows/gc/z/zMapper_windows.hpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.hpp ! src/hotspot/os/windows/gc/z/zVirtualMemory_windows.cpp ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp + src/hotspot/os_cpu/linux_aarch64/gc/x/xSyscall_linux_aarch64.hpp + src/hotspot/os_cpu/linux_ppc/gc/x/xSyscall_linux_ppc.hpp + src/hotspot/os_cpu/linux_riscv/gc/x/xSyscall_linux_riscv.hpp + src/hotspot/os_cpu/linux_x86/gc/x/xSyscall_linux_x86.hpp ! src/hotspot/share/asm/assembler.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/asm/codeBuffer.hpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp ! src/hotspot/share/code/relocInfo.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/gcConfig.cpp ! src/hotspot/share/gc/shared/gcConfiguration.cpp ! src/hotspot/share/gc/shared/gcId.cpp ! src/hotspot/share/gc/shared/gcId.hpp ! src/hotspot/share/gc/shared/gcName.hpp ! src/hotspot/share/gc/shared/gcThreadLocalData.hpp ! src/hotspot/share/gc/shared/gcTraceSend.cpp ! src/hotspot/share/gc/shared/gcVMOperations.cpp ! src/hotspot/share/gc/shared/gcVMOperations.hpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/isGCActiveMark.cpp ! src/hotspot/share/gc/shared/isGCActiveMark.hpp ! src/hotspot/share/gc/shared/suspendibleThreadSet.cpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp ! src/hotspot/share/gc/shared/workerThread.cpp ! src/hotspot/share/gc/shared/workerThread.hpp + src/hotspot/share/gc/x/c1/xBarrierSetC1.cpp + src/hotspot/share/gc/x/c1/xBarrierSetC1.hpp + src/hotspot/share/gc/x/c2/xBarrierSetC2.cpp + src/hotspot/share/gc/x/c2/xBarrierSetC2.hpp + src/hotspot/share/gc/x/vmStructs_x.cpp + src/hotspot/share/gc/x/vmStructs_x.hpp = src/hotspot/share/gc/x/xAbort.cpp = src/hotspot/share/gc/x/xAbort.hpp + src/hotspot/share/gc/x/xAbort.inline.hpp + src/hotspot/share/gc/x/xAddress.cpp = src/hotspot/share/gc/x/xAddress.hpp + src/hotspot/share/gc/x/xAddress.inline.hpp + src/hotspot/share/gc/x/xAddressSpaceLimit.cpp + src/hotspot/share/gc/x/xAddressSpaceLimit.hpp + src/hotspot/share/gc/x/xAllocationFlags.hpp + src/hotspot/share/gc/x/xArguments.cpp + src/hotspot/share/gc/x/xArguments.hpp + src/hotspot/share/gc/x/xArray.hpp + src/hotspot/share/gc/x/xArray.inline.hpp + src/hotspot/share/gc/x/xAttachedArray.hpp + src/hotspot/share/gc/x/xAttachedArray.inline.hpp + src/hotspot/share/gc/x/xBarrier.cpp = src/hotspot/share/gc/x/xBarrier.hpp + src/hotspot/share/gc/x/xBarrier.inline.hpp + src/hotspot/share/gc/x/xBarrierSet.cpp + src/hotspot/share/gc/x/xBarrierSet.hpp + src/hotspot/share/gc/x/xBarrierSet.inline.hpp + src/hotspot/share/gc/x/xBarrierSetAssembler.cpp + src/hotspot/share/gc/x/xBarrierSetAssembler.hpp + src/hotspot/share/gc/x/xBarrierSetNMethod.cpp + src/hotspot/share/gc/x/xBarrierSetNMethod.hpp + src/hotspot/share/gc/x/xBarrierSetRuntime.cpp = src/hotspot/share/gc/x/xBarrierSetRuntime.hpp + src/hotspot/share/gc/x/xBarrierSetStackChunk.cpp + src/hotspot/share/gc/x/xBarrierSetStackChunk.hpp + src/hotspot/share/gc/x/xBitField.hpp + src/hotspot/share/gc/x/xBitMap.hpp + src/hotspot/share/gc/x/xBitMap.inline.hpp + src/hotspot/share/gc/x/xBreakpoint.cpp + src/hotspot/share/gc/x/xBreakpoint.hpp + src/hotspot/share/gc/x/xCPU.cpp + src/hotspot/share/gc/x/xCPU.hpp + src/hotspot/share/gc/x/xCPU.inline.hpp + src/hotspot/share/gc/x/xCollectedHeap.cpp + src/hotspot/share/gc/x/xCollectedHeap.hpp + src/hotspot/share/gc/x/xDebug.gdb + src/hotspot/share/gc/x/xDirector.cpp + src/hotspot/share/gc/x/xDirector.hpp + src/hotspot/share/gc/x/xDriver.cpp + src/hotspot/share/gc/x/xDriver.hpp + src/hotspot/share/gc/x/xErrno.cpp + src/hotspot/share/gc/x/xErrno.hpp + src/hotspot/share/gc/x/xForwarding.cpp + src/hotspot/share/gc/x/xForwarding.hpp + src/hotspot/share/gc/x/xForwarding.inline.hpp + src/hotspot/share/gc/x/xForwardingAllocator.cpp + src/hotspot/share/gc/x/xForwardingAllocator.hpp + src/hotspot/share/gc/x/xForwardingAllocator.inline.hpp + src/hotspot/share/gc/x/xForwardingEntry.hpp + src/hotspot/share/gc/x/xForwardingTable.hpp + src/hotspot/share/gc/x/xForwardingTable.inline.hpp + src/hotspot/share/gc/x/xFuture.hpp + src/hotspot/share/gc/x/xFuture.inline.hpp + src/hotspot/share/gc/x/xGlobals.cpp + src/hotspot/share/gc/x/xGlobals.hpp + src/hotspot/share/gc/x/xGranuleMap.hpp + src/hotspot/share/gc/x/xGranuleMap.inline.hpp = src/hotspot/share/gc/x/xHash.hpp = src/hotspot/share/gc/x/xHash.inline.hpp + src/hotspot/share/gc/x/xHeap.cpp + src/hotspot/share/gc/x/xHeap.hpp + src/hotspot/share/gc/x/xHeap.inline.hpp + src/hotspot/share/gc/x/xHeapIterator.cpp + src/hotspot/share/gc/x/xHeapIterator.hpp + src/hotspot/share/gc/x/xHeuristics.cpp + src/hotspot/share/gc/x/xHeuristics.hpp + src/hotspot/share/gc/x/xInitialize.cpp + src/hotspot/share/gc/x/xInitialize.hpp + src/hotspot/share/gc/x/xLargePages.cpp + src/hotspot/share/gc/x/xLargePages.hpp + src/hotspot/share/gc/x/xLargePages.inline.hpp + src/hotspot/share/gc/x/xList.hpp + src/hotspot/share/gc/x/xList.inline.hpp + src/hotspot/share/gc/x/xLiveMap.cpp = src/hotspot/share/gc/x/xLiveMap.hpp + src/hotspot/share/gc/x/xLiveMap.inline.hpp + src/hotspot/share/gc/x/xLock.hpp + src/hotspot/share/gc/x/xLock.inline.hpp + src/hotspot/share/gc/x/xMark.cpp + src/hotspot/share/gc/x/xMark.hpp + src/hotspot/share/gc/x/xMark.inline.hpp + src/hotspot/share/gc/x/xMarkCache.cpp + src/hotspot/share/gc/x/xMarkCache.hpp + src/hotspot/share/gc/x/xMarkCache.inline.hpp + src/hotspot/share/gc/x/xMarkContext.hpp + src/hotspot/share/gc/x/xMarkContext.inline.hpp + src/hotspot/share/gc/x/xMarkStack.cpp + src/hotspot/share/gc/x/xMarkStack.hpp + src/hotspot/share/gc/x/xMarkStack.inline.hpp + src/hotspot/share/gc/x/xMarkStackAllocator.cpp + src/hotspot/share/gc/x/xMarkStackAllocator.hpp + src/hotspot/share/gc/x/xMarkStackEntry.hpp + src/hotspot/share/gc/x/xMarkTerminate.hpp + src/hotspot/share/gc/x/xMarkTerminate.inline.hpp + src/hotspot/share/gc/x/xMemory.cpp + src/hotspot/share/gc/x/xMemory.hpp + src/hotspot/share/gc/x/xMemory.inline.hpp + src/hotspot/share/gc/x/xMessagePort.hpp + src/hotspot/share/gc/x/xMessagePort.inline.hpp + src/hotspot/share/gc/x/xMetronome.cpp + src/hotspot/share/gc/x/xMetronome.hpp + src/hotspot/share/gc/x/xNMethod.cpp + src/hotspot/share/gc/x/xNMethod.hpp + src/hotspot/share/gc/x/xNMethodData.cpp + src/hotspot/share/gc/x/xNMethodData.hpp + src/hotspot/share/gc/x/xNMethodTable.cpp + src/hotspot/share/gc/x/xNMethodTable.hpp + src/hotspot/share/gc/x/xNMethodTableEntry.hpp + src/hotspot/share/gc/x/xNMethodTableIteration.cpp + src/hotspot/share/gc/x/xNMethodTableIteration.hpp + src/hotspot/share/gc/x/xNUMA.cpp + src/hotspot/share/gc/x/xNUMA.hpp + src/hotspot/share/gc/x/xNUMA.inline.hpp + src/hotspot/share/gc/x/xObjArrayAllocator.cpp + src/hotspot/share/gc/x/xObjArrayAllocator.hpp + src/hotspot/share/gc/x/xObjectAllocator.cpp + src/hotspot/share/gc/x/xObjectAllocator.hpp = src/hotspot/share/gc/x/xOop.hpp + src/hotspot/share/gc/x/xOop.inline.hpp + src/hotspot/share/gc/x/xPage.cpp + src/hotspot/share/gc/x/xPage.hpp + src/hotspot/share/gc/x/xPage.inline.hpp + src/hotspot/share/gc/x/xPageAllocator.cpp + src/hotspot/share/gc/x/xPageAllocator.hpp + src/hotspot/share/gc/x/xPageAllocator.inline.hpp + src/hotspot/share/gc/x/xPageCache.cpp + src/hotspot/share/gc/x/xPageCache.hpp + src/hotspot/share/gc/x/xPageTable.cpp + src/hotspot/share/gc/x/xPageTable.hpp + src/hotspot/share/gc/x/xPageTable.inline.hpp + src/hotspot/share/gc/x/xPhysicalMemory.cpp + src/hotspot/share/gc/x/xPhysicalMemory.hpp + src/hotspot/share/gc/x/xPhysicalMemory.inline.hpp + src/hotspot/share/gc/x/xReferenceProcessor.cpp + src/hotspot/share/gc/x/xReferenceProcessor.hpp + src/hotspot/share/gc/x/xRelocate.cpp + src/hotspot/share/gc/x/xRelocate.hpp + src/hotspot/share/gc/x/xRelocationSet.cpp + src/hotspot/share/gc/x/xRelocationSet.hpp + src/hotspot/share/gc/x/xRelocationSet.inline.hpp + src/hotspot/share/gc/x/xRelocationSetSelector.cpp + src/hotspot/share/gc/x/xRelocationSetSelector.hpp + src/hotspot/share/gc/x/xRelocationSetSelector.inline.hpp + src/hotspot/share/gc/x/xResurrection.cpp + src/hotspot/share/gc/x/xResurrection.hpp + src/hotspot/share/gc/x/xResurrection.inline.hpp + src/hotspot/share/gc/x/xRootsIterator.cpp + src/hotspot/share/gc/x/xRootsIterator.hpp + src/hotspot/share/gc/x/xRuntimeWorkers.cpp + src/hotspot/share/gc/x/xRuntimeWorkers.hpp + src/hotspot/share/gc/x/xSafeDelete.hpp + src/hotspot/share/gc/x/xSafeDelete.inline.hpp + src/hotspot/share/gc/x/xServiceability.cpp + src/hotspot/share/gc/x/xServiceability.hpp + src/hotspot/share/gc/x/xStackWatermark.cpp + src/hotspot/share/gc/x/xStackWatermark.hpp + src/hotspot/share/gc/x/xStat.cpp + src/hotspot/share/gc/x/xStat.hpp + src/hotspot/share/gc/x/xTask.cpp + src/hotspot/share/gc/x/xTask.hpp + src/hotspot/share/gc/x/xThread.cpp + src/hotspot/share/gc/x/xThread.hpp + src/hotspot/share/gc/x/xThread.inline.hpp + src/hotspot/share/gc/x/xThreadLocalAllocBuffer.cpp + src/hotspot/share/gc/x/xThreadLocalAllocBuffer.hpp + src/hotspot/share/gc/x/xThreadLocalData.hpp + src/hotspot/share/gc/x/xTracer.cpp + src/hotspot/share/gc/x/xTracer.hpp + src/hotspot/share/gc/x/xTracer.inline.hpp + src/hotspot/share/gc/x/xUncommitter.cpp + src/hotspot/share/gc/x/xUncommitter.hpp + src/hotspot/share/gc/x/xUnload.cpp + src/hotspot/share/gc/x/xUnload.hpp + src/hotspot/share/gc/x/xUnmapper.cpp + src/hotspot/share/gc/x/xUnmapper.hpp = src/hotspot/share/gc/x/xUtils.hpp + src/hotspot/share/gc/x/xUtils.inline.hpp + src/hotspot/share/gc/x/xValue.hpp + src/hotspot/share/gc/x/xValue.inline.hpp + src/hotspot/share/gc/x/xVerify.cpp + src/hotspot/share/gc/x/xVerify.hpp + src/hotspot/share/gc/x/xVirtualMemory.cpp + src/hotspot/share/gc/x/xVirtualMemory.hpp + src/hotspot/share/gc/x/xVirtualMemory.inline.hpp + src/hotspot/share/gc/x/xWeakRootsProcessor.cpp + src/hotspot/share/gc/x/xWeakRootsProcessor.hpp + src/hotspot/share/gc/x/xWorkers.cpp + src/hotspot/share/gc/x/xWorkers.hpp + src/hotspot/share/gc/x/x_globals.hpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.hpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp + src/hotspot/share/gc/z/shared/vmStructs_z_shared.hpp + src/hotspot/share/gc/z/shared/zSharedArguments.cpp + src/hotspot/share/gc/z/shared/zSharedArguments.hpp + src/hotspot/share/gc/z/shared/z_shared_globals.hpp ! src/hotspot/share/gc/z/vmStructs_z.cpp ! src/hotspot/share/gc/z/vmStructs_z.hpp ! src/hotspot/share/gc/z/zAbort.cpp ! src/hotspot/share/gc/z/zAbort.hpp ! src/hotspot/share/gc/z/zAbort.inline.hpp ! src/hotspot/share/gc/z/zAddress.cpp ! src/hotspot/share/gc/z/zAddress.hpp ! src/hotspot/share/gc/z/zAddress.inline.hpp ! src/hotspot/share/gc/z/zAddressSpaceLimit.cpp ! src/hotspot/share/gc/z/zAddressSpaceLimit.hpp ! src/hotspot/share/gc/z/zAllocationFlags.hpp + src/hotspot/share/gc/z/zAllocator.cpp + src/hotspot/share/gc/z/zAllocator.hpp + src/hotspot/share/gc/z/zAllocator.inline.hpp ! src/hotspot/share/gc/z/zArguments.cpp ! src/hotspot/share/gc/z/zArguments.hpp ! src/hotspot/share/gc/z/zArray.hpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zBarrier.cpp ! src/hotspot/share/gc/z/zBarrier.hpp ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zBarrierSet.cpp ! src/hotspot/share/gc/z/zBarrierSet.hpp ! src/hotspot/share/gc/z/zBarrierSet.inline.hpp ! src/hotspot/share/gc/z/zBarrierSetAssembler.cpp ! src/hotspot/share/gc/z/zBarrierSetAssembler.hpp ! src/hotspot/share/gc/z/zBarrierSetNMethod.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.hpp ! src/hotspot/share/gc/z/zBarrierSetStackChunk.cpp ! src/hotspot/share/gc/z/zBitMap.hpp ! src/hotspot/share/gc/z/zBitMap.inline.hpp ! src/hotspot/share/gc/z/zCPU.cpp ! src/hotspot/share/gc/z/zCPU.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zCollectedHeap.hpp + src/hotspot/share/gc/z/zContinuation.cpp + src/hotspot/share/gc/z/zContinuation.hpp + src/hotspot/share/gc/z/zContinuation.inline.hpp ! src/hotspot/share/gc/z/zDebug.gdb ! src/hotspot/share/gc/z/zDirector.cpp ! src/hotspot/share/gc/z/zDirector.hpp ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zDriver.hpp + src/hotspot/share/gc/z/zDriverPort.cpp + src/hotspot/share/gc/z/zDriverPort.hpp ! src/hotspot/share/gc/z/zForwarding.cpp ! src/hotspot/share/gc/z/zForwarding.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.cpp ! src/hotspot/share/gc/z/zForwardingEntry.hpp ! src/hotspot/share/gc/z/zForwardingTable.hpp ! src/hotspot/share/gc/z/zForwardingTable.inline.hpp + src/hotspot/share/gc/z/zGCIdPrinter.cpp + src/hotspot/share/gc/z/zGCIdPrinter.hpp + src/hotspot/share/gc/z/zGeneration.cpp + src/hotspot/share/gc/z/zGeneration.hpp + src/hotspot/share/gc/z/zGeneration.inline.hpp + src/hotspot/share/gc/z/zGenerationId.hpp ! src/hotspot/share/gc/z/zGlobals.cpp ! src/hotspot/share/gc/z/zGlobals.hpp ! src/hotspot/share/gc/z/zGranuleMap.hpp ! src/hotspot/share/gc/z/zGranuleMap.inline.hpp ! src/hotspot/share/gc/z/zHash.hpp ! src/hotspot/share/gc/z/zHash.inline.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zHeap.inline.hpp ! src/hotspot/share/gc/z/zHeapIterator.cpp ! src/hotspot/share/gc/z/zHeapIterator.hpp ! src/hotspot/share/gc/z/zHeuristics.cpp ! src/hotspot/share/gc/z/zHeuristics.hpp + src/hotspot/share/gc/z/zIndexDistributor.hpp + src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zInitialize.cpp + src/hotspot/share/gc/z/zIterator.hpp + src/hotspot/share/gc/z/zIterator.inline.hpp + src/hotspot/share/gc/z/zJNICritical.cpp + src/hotspot/share/gc/z/zJNICritical.hpp ! src/hotspot/share/gc/z/zList.inline.hpp ! src/hotspot/share/gc/z/zLiveMap.cpp ! src/hotspot/share/gc/z/zLiveMap.hpp ! src/hotspot/share/gc/z/zLiveMap.inline.hpp ! src/hotspot/share/gc/z/zLock.hpp ! src/hotspot/share/gc/z/zLock.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp ! src/hotspot/share/gc/z/zMark.inline.hpp ! src/hotspot/share/gc/z/zMarkCache.cpp ! src/hotspot/share/gc/z/zMarkCache.hpp ! src/hotspot/share/gc/z/zMarkCache.inline.hpp ! src/hotspot/share/gc/z/zMarkContext.hpp ! src/hotspot/share/gc/z/zMarkContext.inline.hpp ! src/hotspot/share/gc/z/zMarkStack.cpp ! src/hotspot/share/gc/z/zMarkStack.hpp ! src/hotspot/share/gc/z/zMarkStack.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zMarkStackAllocator.hpp ! src/hotspot/share/gc/z/zMarkTerminate.hpp ! src/hotspot/share/gc/z/zMarkTerminate.inline.hpp ! src/hotspot/share/gc/z/zMemory.cpp ! src/hotspot/share/gc/z/zMemory.hpp ! src/hotspot/share/gc/z/zMemory.inline.hpp - src/hotspot/share/gc/z/zMessagePort.hpp - src/hotspot/share/gc/z/zMessagePort.inline.hpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethod.hpp ! src/hotspot/share/gc/z/zNMethodData.cpp ! src/hotspot/share/gc/z/zNMethodData.hpp ! src/hotspot/share/gc/z/zNMethodTable.cpp ! src/hotspot/share/gc/z/zNMethodTable.hpp ! src/hotspot/share/gc/z/zNMethodTableEntry.hpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zObjArrayAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.hpp - src/hotspot/share/gc/z/zOop.inline.hpp ! src/hotspot/share/gc/z/zPage.cpp ! src/hotspot/share/gc/z/zPage.hpp ! src/hotspot/share/gc/z/zPage.inline.hpp + src/hotspot/share/gc/z/zPageAge.hpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.hpp ! src/hotspot/share/gc/z/zPageAllocator.inline.hpp ! src/hotspot/share/gc/z/zPageCache.cpp ! src/hotspot/share/gc/z/zPageCache.hpp ! src/hotspot/share/gc/z/zPageTable.cpp ! src/hotspot/share/gc/z/zPageTable.hpp ! src/hotspot/share/gc/z/zPageTable.inline.hpp + src/hotspot/share/gc/z/zPageType.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.cpp ! src/hotspot/share/gc/z/zPhysicalMemory.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp ! src/hotspot/share/gc/z/zReferenceProcessor.cpp ! src/hotspot/share/gc/z/zReferenceProcessor.hpp ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRelocate.hpp ! src/hotspot/share/gc/z/zRelocationSet.cpp ! src/hotspot/share/gc/z/zRelocationSet.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.cpp ! src/hotspot/share/gc/z/zRelocationSetSelector.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.inline.hpp + src/hotspot/share/gc/z/zRemembered.cpp + src/hotspot/share/gc/z/zRemembered.hpp + src/hotspot/share/gc/z/zRemembered.inline.hpp + src/hotspot/share/gc/z/zRememberedSet.cpp + src/hotspot/share/gc/z/zRememberedSet.hpp + src/hotspot/share/gc/z/zRememberedSet.inline.hpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/gc/z/zRuntimeWorkers.cpp ! src/hotspot/share/gc/z/zSafeDelete.hpp ! src/hotspot/share/gc/z/zSafeDelete.inline.hpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zServiceability.hpp + src/hotspot/share/gc/z/zStackChunkGCData.hpp + src/hotspot/share/gc/z/zStackChunkGCData.inline.hpp ! src/hotspot/share/gc/z/zStackWatermark.cpp ! src/hotspot/share/gc/z/zStackWatermark.hpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zStat.hpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.cpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.hpp + src/hotspot/share/gc/z/zStoreBarrierBuffer.inline.hpp ! src/hotspot/share/gc/z/zTask.cpp ! src/hotspot/share/gc/z/zTask.hpp ! src/hotspot/share/gc/z/zThread.cpp ! src/hotspot/share/gc/z/zThread.hpp - src/hotspot/share/gc/z/zThread.inline.hpp ! src/hotspot/share/gc/z/zThreadLocalAllocBuffer.cpp ! src/hotspot/share/gc/z/zThreadLocalAllocBuffer.hpp ! src/hotspot/share/gc/z/zThreadLocalData.hpp ! src/hotspot/share/gc/z/zTracer.cpp ! src/hotspot/share/gc/z/zTracer.hpp ! src/hotspot/share/gc/z/zTracer.inline.hpp + src/hotspot/share/gc/z/zUncoloredRoot.cpp + src/hotspot/share/gc/z/zUncoloredRoot.hpp + src/hotspot/share/gc/z/zUncoloredRoot.inline.hpp ! src/hotspot/share/gc/z/zUncommitter.cpp ! src/hotspot/share/gc/z/zUncommitter.hpp ! src/hotspot/share/gc/z/zUnload.cpp ! src/hotspot/share/gc/z/zUnmapper.cpp ! src/hotspot/share/gc/z/zUnmapper.hpp + src/hotspot/share/gc/z/zUtils.cpp ! src/hotspot/share/gc/z/zUtils.hpp ! src/hotspot/share/gc/z/zUtils.inline.hpp ! src/hotspot/share/gc/z/zValue.hpp ! src/hotspot/share/gc/z/zValue.inline.hpp ! src/hotspot/share/gc/z/zVerify.cpp ! src/hotspot/share/gc/z/zVerify.hpp ! src/hotspot/share/gc/z/zVirtualMemory.cpp ! src/hotspot/share/gc/z/zVirtualMemory.hpp ! src/hotspot/share/gc/z/zVirtualMemory.inline.hpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.cpp ! src/hotspot/share/gc/z/zWorkers.cpp ! src/hotspot/share/gc/z/zWorkers.hpp + src/hotspot/share/gc/z/zWorkers.inline.hpp ! src/hotspot/share/gc/z/z_globals.hpp ! src/hotspot/share/jfr/metadata/metadata.xml ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/logging/logPrefix.hpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/universe.cpp ! src/hotspot/share/memory/universe.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp ! src/hotspot/share/oops/oopsHierarchy.hpp ! src/hotspot/share/oops/stackChunkOop.inline.hpp ! src/hotspot/share/opto/output.hpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp ! src/hotspot/share/runtime/continuationJavaClasses.hpp ! src/hotspot/share/runtime/continuationJavaClasses.inline.hpp ! src/hotspot/share/runtime/stackWatermark.cpp ! src/hotspot/share/runtime/stackWatermark.hpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vmOperation.hpp ! src/hotspot/share/services/heapDumper.cpp ! src/hotspot/share/utilities/events.cpp ! src/hotspot/share/utilities/events.hpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XAddress.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XAttachedArrayForForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XBarrier.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XCollectedHeap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XExternalBitMap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTable.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTableCursor.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XForwardingTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGlobals.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGlobalsForVMStructs.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGranuleMapForForwarding.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XGranuleMapForPageTable.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XHash.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XHeap.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XOop.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPage.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageAllocator.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageTable.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XPageTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XRelocate.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XUtils.java = src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/x/XVirtualMemory.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAddress.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAttachedArrayForForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZBarrier.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZCollectedHeap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZExternalBitMap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingEntry.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingTable.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobals.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobalsForVMStructs.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGranuleMapForForwarding.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGranuleMapForPageTable.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZHeap.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTable.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTableEntry.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZRelocate.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Universe.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc + test/hotspot/gtest/gc/x/test_xAddress.cpp + test/hotspot/gtest/gc/x/test_xArray.cpp + test/hotspot/gtest/gc/x/test_xBitField.cpp + test/hotspot/gtest/gc/x/test_xBitMap.cpp + test/hotspot/gtest/gc/x/test_xForwarding.cpp + test/hotspot/gtest/gc/x/test_xList.cpp + test/hotspot/gtest/gc/x/test_xLiveMap.cpp + test/hotspot/gtest/gc/x/test_xPhysicalMemory.cpp + test/hotspot/gtest/gc/x/test_xVirtualMemory.cpp ! test/hotspot/gtest/gc/z/test_zAddress.cpp ! test/hotspot/gtest/gc/z/test_zForwarding.cpp + test/hotspot/gtest/gc/z/test_zIndexDistributor.cpp ! test/hotspot/gtest/gc/z/test_zLiveMap.cpp + test/hotspot/gtest/gc/z/test_zMemory.cpp ! test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp ! test/hotspot/gtest/gc/z/test_zVirtualMemory.cpp ! test/hotspot/gtest/runtime/test_vmStructs.cpp + test/hotspot/jtreg/ProblemList-generational-zgc.txt + test/hotspot/jtreg/compiler/gcbarriers/TestZGCBarrierElision.java ! test/hotspot/jtreg/compiler/gcbarriers/UnsafeIntrinsicsTest.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java ! test/hotspot/jtreg/gc/TestSystemGC.java ! test/hotspot/jtreg/gc/TestVerifySubSet.java ! test/hotspot/jtreg/gc/stress/gcbasher/TestGCBasherWithZ.java ! test/hotspot/jtreg/gc/stress/gcold/TestGCOldWithZ.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTools.java + test/hotspot/jtreg/gc/x/TestAllocateHeapAt.java + test/hotspot/jtreg/gc/x/TestAlwaysPreTouch.java = test/hotspot/jtreg/gc/x/TestGarbageCollectorMXBean.java = test/hotspot/jtreg/gc/x/TestHighUsage.java + test/hotspot/jtreg/gc/x/TestMemoryMXBean.java = test/hotspot/jtreg/gc/x/TestMemoryManagerMXBean.java + test/hotspot/jtreg/gc/x/TestNoUncommit.java = test/hotspot/jtreg/gc/x/TestPageCacheFlush.java = test/hotspot/jtreg/gc/x/TestRelocateInPlace.java = test/hotspot/jtreg/gc/x/TestSmallHeap.java = test/hotspot/jtreg/gc/x/TestUncommit.java ! test/hotspot/jtreg/gc/z/TestAllocateHeapAt.java ! test/hotspot/jtreg/gc/z/TestAlwaysPreTouch.java ! test/hotspot/jtreg/gc/z/TestGarbageCollectorMXBean.java ! test/hotspot/jtreg/gc/z/TestHighUsage.java ! test/hotspot/jtreg/gc/z/TestMemoryMXBean.java ! test/hotspot/jtreg/gc/z/TestMemoryManagerMXBean.java ! test/hotspot/jtreg/gc/z/TestNoUncommit.java ! test/hotspot/jtreg/gc/z/TestPageCacheFlush.java ! test/hotspot/jtreg/gc/z/TestRelocateInPlace.java ! test/hotspot/jtreg/gc/z/TestSmallHeap.java ! test/hotspot/jtreg/gc/z/TestUncommit.java ! test/hotspot/jtreg/runtime/stringtable/StringTableCleaningTest.java + test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt ! test/jdk/java/io/ObjectStreamClass/ObjectStreamClassCaching.java ! test/jdk/java/lang/ProcessBuilder/CloseRace.java ! test/jdk/java/lang/Thread/virtual/stress/Skynet.java ! test/jdk/java/lang/management/MemoryMXBean/MemoryTest.java + test/jdk/jdk/jfr/event/gc/collection/TestGarbageCollectionEventWithZMajor.java + test/jdk/jdk/jfr/event/gc/collection/TestGarbageCollectionEventWithZMinor.java + test/jdk/jdk/jfr/event/gc/collection/TestZOldGarbageCollectionEvent.java + test/jdk/jdk/jfr/event/gc/collection/TestZYoungGarbageCollectionEvent.java ! test/jdk/jdk/jfr/event/gc/detailed/TestGCPhaseConcurrent.java ! test/jtreg-ext/requires/VMProps.java ! test/lib/jdk/test/lib/jfr/EventNames.java Changeset: 2bf7ac58 Author: Fredrik Bredberg Committer: Coleen Phillimore Date: 2023-05-11 14:02:54 +0000 URL: https://git.openjdk.org/loom/commit/2bf7ac58b7971f6813066dac7e88a855d597d731 8297657: name demangling intermittently fails Reviewed-by: stefank, coleenp ! src/hotspot/os/aix/decoder_aix.hpp ! src/hotspot/os/bsd/decoder_machO.hpp ! src/hotspot/share/utilities/decoder.hpp ! src/hotspot/share/utilities/decoder_elf.hpp Changeset: 9ad38cbe Author: Daniel Fuchs Date: 2023-05-11 16:31:04 +0000 URL: https://git.openjdk.org/loom/commit/9ad38cbeaf446776c4ab4fdb4605663fc517f11f 8307626: java/net/httpclient/FlowAdapter* tests should close the HttpClient instances Reviewed-by: aefimov, jpai ! test/jdk/java/net/httpclient/FlowAdapterPublisherTest.java ! test/jdk/java/net/httpclient/FlowAdapterSubscriberTest.java Changeset: 489658db Author: Chris Plummer Date: 2023-05-11 17:07:27 +0000 URL: https://git.openjdk.org/loom/commit/489658dbd2cd518a17611dcc01c0109046cf97a8 8307885: com/sun/jdi/ConnectedVMs.java fails with "Invalid debuggee exitValue: 0" Reviewed-by: kevinw, sspitsyn ! test/jdk/com/sun/jdi/ConnectedVMs.java Changeset: 51b8f3cf Author: Serguei Spitsyn Date: 2023-05-11 17:48:39 +0000 URL: https://git.openjdk.org/loom/commit/51b8f3cfb9df3444b6226a5d5cb7f01a9ab6db6c 8306034: add support of virtual threads to JVMTI StopThread Reviewed-by: cjplummer ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiEnv.cpp ! src/hotspot/share/prims/jvmtiEnvBase.cpp ! src/hotspot/share/prims/jvmtiEnvBase.hpp ! src/hotspot/share/runtime/javaThread.cpp ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/serviceability/jvmti/vthread/BoundVThreadTest/libBoundVThreadTest.cpp + test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/libStopThreadTest.cpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/VThreadUnsupportedTest.java ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/libVThreadUnsupportedTest.cpp Changeset: 5d6cce0f Author: Robert Toyonaga Committer: Severin Gehwolf Date: 2023-05-11 18:05:58 +0000 URL: https://git.openjdk.org/loom/commit/5d6cce0f8543e8ae966798aad685b190cc8101aa 8307298: JFR: Ensure jdk.jfr.internal.TypeLibrary is initialized only once Reviewed-by: sgehwolf, egahlin ! src/jdk.jfr/share/classes/jdk/jfr/internal/TypeLibrary.java Changeset: 7fcb0fdc Author: Dean Long Date: 2023-05-11 18:06:43 +0000 URL: https://git.openjdk.org/loom/commit/7fcb0fdcd453d02002b751db6d59ad274b3b59c7 8307139: Fix signed integer overflow in compiler code, part 1 Reviewed-by: thartmann, rcastanedalo, kvn ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/c1/c1_Canonicalizer.cpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.hpp ! src/hotspot/share/memory/metaspace/virtualSpaceNode.cpp ! src/hotspot/share/opto/c2_globals.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/intrinsicnode.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/macroArrayCopy.cpp ! src/hotspot/share/opto/mathexactnode.cpp ! src/hotspot/share/opto/mulnode.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/stringopts.cpp ! src/hotspot/share/opto/subnode.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/utilities/globalDefinitions.hpp Changeset: cbecf422 Author: Xue-Lei Andrew Fan Date: 2023-05-11 18:07:54 +0000 URL: https://git.openjdk.org/loom/commit/cbecf422dfef1b53f3a159d2db63ba028d84f152 8307850: update for deprecated sprintf for jdk.jdi Reviewed-by: cjplummer ! src/jdk.jdi/share/native/libdt_shmem/SharedMemoryTransport.c ! src/jdk.jdi/share/native/libdt_shmem/shmemBase.c Changeset: 15358636 Author: Xue-Lei Andrew Fan Date: 2023-05-11 18:09:43 +0000 URL: https://git.openjdk.org/loom/commit/15358636cf67fb570231ec8521533bd2d3146b65 8307848: update for deprecated sprintf for jdk.attach Reviewed-by: sspitsyn, cjplummer ! src/jdk.attach/windows/native/libattach/VirtualMachineImpl.c Changeset: 4f355c35 Author: Guoxiong Li Date: 2023-05-11 18:21:30 +0000 URL: https://git.openjdk.org/loom/commit/4f355c3525072681ed1fb48dfdb8924b1cf0cc7c 8307653: Adjust delay time and gc log argument in TestAbortOnVMOperationTimeout Reviewed-by: dholmes, dcubed ! test/hotspot/jtreg/runtime/Safepoint/TestAbortOnVMOperationTimeout.java Changeset: 29b8242e Author: Joe Darcy Date: 2023-05-11 18:22:10 +0000 URL: https://git.openjdk.org/loom/commit/29b8242e07b3e85887e916bc76f37eefb4403e1d 8307954: Update string template regression tests to be robust on release updates Reviewed-by: jlaskey ! test/langtools/tools/javac/diags/examples/StringTemplate.java ! test/langtools/tools/javac/diags/examples/StringTemplateNoProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateNotProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateRawProcessor.java ! test/langtools/tools/javac/diags/examples/StringTemplateUnclosedString.java ! test/langtools/tools/javac/diags/examples/StringTemplateUnclosedTextBlock.java Changeset: a667213e Author: Matias Saavedra Silva Date: 2023-05-11 19:37:16 +0000 URL: https://git.openjdk.org/loom/commit/a667213ec595ceb86a0196aff0e1236138fab2ef 8281715: Move "base CDS archive not loaded" tests to SharedArchiveFileOption.java Reviewed-by: ccheung, iklam ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/SharedArchiveFileOption.java Changeset: ce590772 Author: Jie Fu Date: 2023-05-11 22:35:40 +0000 URL: https://git.openjdk.org/loom/commit/ce5907727e835cb2bdf9362d7c3ad249cc29d5e7 8307945: Build of Client VM is broken after JDK-8307058 Reviewed-by: kvn ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Changeset: 54c06d2d Author: Chris Plummer Date: 2023-05-11 23:16:22 +0000 URL: https://git.openjdk.org/loom/commit/54c06d2d915e57d822136b403ea7a7675325d6fb 8307559: Add better checking in com/sun/jdi tests for debuggee exiting unexpectedly with an exception Reviewed-by: kevinw, lmesnik ! test/jdk/com/sun/jdi/ExceptionEvents.java ! test/jdk/com/sun/jdi/ResumeOneThreadTest.java ! test/jdk/com/sun/jdi/TestScaffold.java Changeset: 9a7b4431 Author: Daniel D. Daugherty Date: 2023-05-12 00:51:49 +0000 URL: https://git.openjdk.org/loom/commit/9a7b4431ecde03f37d9f1c1b06dab6ef8d60a94c 8307966: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java on linux-x64 Reviewed-by: naoto, lmesnik ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt Changeset: 33d9a857 Author: Ningsheng Jian Date: 2023-05-12 02:05:18 +0000 URL: https://git.openjdk.org/loom/commit/33d9a857308eed53e06b448691910bc8aa2f8fc9 8307572: AArch64: Vector registers are clobbered by some macroassemblers Reviewed-by: aph, adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp + test/hotspot/jtreg/compiler/c2/aarch64/TestIntrinsicsRegStress.java Changeset: 73491fa4 Author: Abhishek Kumar Date: 2023-05-12 02:52:43 +0000 URL: https://git.openjdk.org/loom/commit/73491fa452e73cf7c02c577f4e3f1a34c02bea6d 8306996: Open source Swing MenuItem related tests Reviewed-by: dnguyen, honkar, psadhukhan + test/jdk/javax/swing/JMenuItem/bug4198809.java + test/jdk/javax/swing/JMenuItem/bug4304129.java + test/jdk/javax/swing/JMenuItem/bug4839464.java + test/jdk/javax/swing/JMenuItem/bug4966168.java Changeset: ccb4dd61 Author: Jie Fu Date: 2023-05-12 06:31:09 +0000 URL: https://git.openjdk.org/loom/commit/ccb4dd614483c11903dfde3e249c5ea8c8b04070 8307969: [zgc] Missing includes in gc/z/zTracer.cpp Reviewed-by: stefank ! src/hotspot/share/gc/z/zTracer.cpp Changeset: 5f1f9460 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-12 07:02:45 +0000 URL: https://git.openjdk.org/loom/commit/5f1f9460d75731513048a3bf205bc1ee6e5c483b 8307520: set minimum supported CPU architecture to Power8 on AIX Reviewed-by: mbaesken, erikj ! make/autoconf/flags-cflags.m4 ! make/hotspot/gensrc/GensrcAdlc.gmk Changeset: f3bd031c Author: Matthias Baesken Date: 2023-05-12 07:06:45 +0000 URL: https://git.openjdk.org/loom/commit/f3bd031ccd1924f4b785fad145641f396ec1aa30 8307891: ProblemList gtest/NMTGtest.java subtests on aix Reviewed-by: mdoerr, lucy ! test/hotspot/jtreg/ProblemList.txt Changeset: e32de7ef Author: Xiaolin Zheng Committer: Fei Yang Date: 2023-05-12 07:10:53 +0000 URL: https://git.openjdk.org/loom/commit/e32de7efd6f3173a0bba5829e8de3edd01cfdbab 8306667: RISC-V: Fix storeImmN0 matching rule by using zr register Reviewed-by: shade, gli, fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 1ce1611e Author: Thomas Schatzl Date: 2023-05-12 07:23:28 +0000 URL: https://git.openjdk.org/loom/commit/1ce1611ead1e3eccd9a6b82857740e27e37f05f7 8307518: Remove G1 workaround in jstat about zero sized generation sizes Reviewed-by: kbarrett, ayang ! src/hotspot/share/gc/g1/g1MonitoringSupport.cpp ! src/hotspot/share/gc/g1/g1MonitoringSupport.hpp Changeset: e1e758a7 Author: Afshin Zafari Date: 2023-05-12 07:32:46 +0000 URL: https://git.openjdk.org/loom/commit/e1e758a7b43c29840296d337bd2f0213ab0ca3c9 8305083: Remove finalize() from test/hotspot/jtreg/vmTestbase/nsk/share/ and /jpda that are used in serviceability/dcmd/framework tests Reviewed-by: coleenp, dholmes ! test/hotspot/jtreg/vmTestbase/nsk/share/Finalizable.java ! test/hotspot/jtreg/vmTestbase/nsk/share/FinalizableObject.java ! test/hotspot/jtreg/vmTestbase/nsk/share/LocalProcess.java ! test/hotspot/jtreg/vmTestbase/nsk/share/Log.java ! test/hotspot/jtreg/vmTestbase/nsk/share/MainWrapper.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Binder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jdwp/Binder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/BindServer.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeBinder.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/SocketIOPipe.java Changeset: b6bcbc0c Author: Yasumasa Suenaga Date: 2023-05-12 08:48:29 +0000 URL: https://git.openjdk.org/loom/commit/b6bcbc0cbcb3729e4eb298f2198e0b6570e1f566 8305770: os::Linux::available_memory() should refer MemAvailable in /proc/meminfo Reviewed-by: stuefe, sgehwolf, rcastanedalo, dholmes ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/aix/os_aix.hpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/bsd/os_bsd.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/os/windows/os_windows.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/runtime/os.hpp Changeset: f09a0f5c Author: Kim Barrett Date: 2023-05-12 09:50:52 +0000 URL: https://git.openjdk.org/loom/commit/f09a0f5ca787e139f240a33bb12491792b8e7003 8307806: Rename Atomic::fetch_and_add and friends Reviewed-by: stefank, dholmes ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os_cpu/aix_ppc/atomic_aix_ppc.hpp ! src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp ! src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp ! src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp ! src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp ! src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp ! src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp ! src/hotspot/os_cpu/linux_riscv/atomic_linux_riscv.hpp ! src/hotspot/os_cpu/linux_s390/atomic_linux_s390.hpp ! src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp ! src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp ! src/hotspot/os_cpu/windows_aarch64/atomic_windows_aarch64.hpp ! src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp ! src/hotspot/share/classfile/classLoaderDataGraph.inline.hpp ! src/hotspot/share/gc/g1/g1BatchedTask.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1EvacFailureRegions.inline.hpp ! src/hotspot/share/gc/g1/g1MonotonicArena.inline.hpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/shared/partialArrayTaskStepper.inline.hpp ! src/hotspot/share/gc/shared/workerThread.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahNMethod.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp ! src/hotspot/share/gc/x/xForwardingAllocator.inline.hpp ! src/hotspot/share/gc/x/xMarkStackAllocator.cpp ! src/hotspot/share/gc/x/xNMethodTableIteration.cpp ! src/hotspot/share/gc/x/xPageAllocator.cpp ! src/hotspot/share/gc/x/xRelocationSet.cpp ! src/hotspot/share/gc/x/xRootsIterator.cpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.inline.hpp ! src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/runtime/atomic.hpp ! src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp ! test/hotspot/gtest/gc/g1/test_stressCommitUncommit.cpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 13a3fce2 Author: Maurizio Cimadamore Date: 2023-05-12 10:38:27 +0000 URL: https://git.openjdk.org/loom/commit/13a3fce29e696354b2e79fbcfd3557dc4a1fece7 8307961: java/foreign/enablenativeaccess/TestEnableNativeAccess.java fails with ShouldNotReachHere Reviewed-by: jvernee ! test/jdk/java/foreign/enablenativeaccess/panama_module/org/openjdk/foreigntest/libLinkerInvokerModule.cpp Changeset: f7bbbc65 Author: Albert Mingkun Yang Date: 2023-05-12 13:13:34 +0000 URL: https://git.openjdk.org/loom/commit/f7bbbc6590d93a5566ae0ea1f44476ec0e55f59e 8307808: G1: Remove partial object-count report after gc Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Changeset: 39dc40fe Author: Afshin Zafari Date: 2023-05-12 14:25:46 +0000 URL: https://git.openjdk.org/loom/commit/39dc40fed4e1af3e77355fa9f4abb0c72279a140 8305081: Remove finalize() from test/hotspot/jtreg/compiler/runtime/Test8168712 Reviewed-by: coleenp, thartmann ! test/hotspot/jtreg/compiler/runtime/Test8168712.java Changeset: 4b0f4213 Author: Xue-Lei Andrew Fan Date: 2023-05-12 14:52:28 +0000 URL: https://git.openjdk.org/loom/commit/4b0f4213a566c3c6d49c034ab6e022c93c4289b1 8307855: update for deprecated sprintf for src/utils Reviewed-by: thartmann ! src/utils/hsdis/binutils/hsdis-binutils.c Changeset: e512a206 Author: Thomas Schatzl Date: 2023-05-12 15:07:48 +0000 URL: https://git.openjdk.org/loom/commit/e512a20679ee03ae6d3c2219e4ad10c92e362e14 8306541: Refactor collection set candidate handling to prepare for JDK-8140326 Reviewed-by: iwalulya, ayang ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.cpp ! src/hotspot/share/gc/g1/g1CollectionSetCandidates.hpp + src/hotspot/share/gc/g1/g1CollectionSetCandidates.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp ! src/hotspot/share/gc/g1/g1CollectionSetChooser.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1HeapVerifier.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1RootClosures.cpp ! src/hotspot/share/gc/g1/g1RootClosures.hpp ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/utilities/growableArray.hpp Changeset: 9fa8b9a4 Author: Brian Burkhalter Date: 2023-05-12 15:17:22 +0000 URL: https://git.openjdk.org/loom/commit/9fa8b9a4a6e9658ee5f8084745ac84a1289a2d27 8307409: Refactor usage examples to use @snippet in the java.nio packages Reviewed-by: alanb, rriggs ! src/java.base/share/classes/java/nio/Buffer.java ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java ! src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java ! src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java ! src/java.base/share/classes/java/nio/channels/Channels.java ! src/java.base/share/classes/java/nio/channels/FileChannel.java ! src/java.base/share/classes/java/nio/channels/GatheringByteChannel.java ! src/java.base/share/classes/java/nio/channels/MulticastChannel.java ! src/java.base/share/classes/java/nio/channels/ScatteringByteChannel.java ! src/java.base/share/classes/java/nio/channels/SelectionKey.java ! src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java ! src/java.base/share/classes/java/nio/channels/spi/AbstractInterruptibleChannel.java ! src/java.base/share/classes/java/nio/channels/spi/AbstractSelector.java ! src/java.base/share/classes/java/nio/charset/Charset.java ! src/java.base/share/classes/java/nio/file/DirectoryStream.java ! src/java.base/share/classes/java/nio/file/FileStore.java ! src/java.base/share/classes/java/nio/file/FileSystem.java ! src/java.base/share/classes/java/nio/file/FileSystems.java ! src/java.base/share/classes/java/nio/file/FileTreeIterator.java ! src/java.base/share/classes/java/nio/file/FileTreeWalker.java ! src/java.base/share/classes/java/nio/file/FileVisitor.java ! src/java.base/share/classes/java/nio/file/Files.java ! src/java.base/share/classes/java/nio/file/Path.java ! src/java.base/share/classes/java/nio/file/WatchKey.java ! src/java.base/share/classes/java/nio/file/Watchable.java ! src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributes.java ! src/java.base/share/classes/java/nio/file/attribute/DosFileAttributes.java ! src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java ! src/java.base/share/classes/java/nio/file/attribute/PosixFilePermissions.java ! src/java.base/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java Changeset: 3c68c352 Author: Daniel Fuchs Date: 2023-05-12 15:24:11 +0000 URL: https://git.openjdk.org/loom/commit/3c68c352fc3d3bff3d80bafcf04118759f4a2acf 8307535: java.util.logging.Handlers should be more VirtualThread friendly Reviewed-by: jpai ! src/java.logging/share/classes/java/util/logging/ErrorManager.java ! src/java.logging/share/classes/java/util/logging/FileHandler.java ! src/java.logging/share/classes/java/util/logging/Handler.java ! src/java.logging/share/classes/java/util/logging/MemoryHandler.java ! src/java.logging/share/classes/java/util/logging/SocketHandler.java ! src/java.logging/share/classes/java/util/logging/StreamHandler.java Changeset: 6ebea897 Author: Maurizio Cimadamore Date: 2023-05-12 16:18:00 +0000 URL: https://git.openjdk.org/loom/commit/6ebea8973feb08a7443d8d86ff52f453dc4aec43 8307911: javadoc for MemorySegment::reinterpret has duplicate restricted method paragraph Reviewed-by: jvernee ! src/java.base/share/classes/java/lang/foreign/Linker.java ! src/java.base/share/classes/java/lang/foreign/MemorySegment.java Changeset: 7455bb23 Author: Jonathan Gibbons Date: 2023-05-12 17:18:37 +0000 URL: https://git.openjdk.org/loom/commit/7455bb23c1d18224e48e91aae4f11fe114d04fab 8308015: Syntax of "import static" is incorrect in com.sun.source.tree.ImportTree.java Reviewed-by: jlaskey, darcy ! src/jdk.compiler/share/classes/com/sun/source/tree/ImportTree.java Changeset: a284920b Author: Sergey Chernyshev Committer: Valerie Peng Date: 2023-05-12 19:24:45 +0000 URL: https://git.openjdk.org/loom/commit/a284920b3432b00496a2a32a284a91a9bd49fb06 8168469: Memory leak in JceSecurity Reviewed-by: valeriep ! src/java.base/share/classes/javax/crypto/JceSecurity.java.template + test/jdk/javax/crypto/JceSecurity/VerificationResults.java Changeset: 4441a230 Author: Justin Lu Date: 2023-05-12 19:58:37 +0000 URL: https://git.openjdk.org/loom/commit/4441a2306fb12f60ac879f7fda6c7446ac130dcb 6714245: [Col] Collator - Faster Comparison for identical strings. Reviewed-by: rriggs, naoto ! src/java.base/share/classes/java/text/RuleBasedCollator.java Changeset: d809823f Author: Chris Plummer Date: 2023-05-12 20:05:21 +0000 URL: https://git.openjdk.org/loom/commit/d809823fe486dfa0fe0bf1c3deff31e81bbc5f28 8306471: Add virtual threads support to JDWP ThreadReference.Stop and JDI ThreadReference.stop() Reviewed-by: sspitsyn, alanb ! src/java.se/share/data/jdwp/jdwp.spec ! src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java ! src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/Commands.java ! src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources.java ! src/jdk.jdi/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002t.java Changeset: 9842ff41 Author: Jonathan Gibbons Date: 2023-05-12 20:29:06 +0000 URL: https://git.openjdk.org/loom/commit/9842ff4129b756abb5761cdca71126508224875f 8306607: Apply 80-column output to javac supported version output Reviewed-by: darcy ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties Changeset: 38838b34 Author: Chris Plummer Date: 2023-05-12 20:36:38 +0000 URL: https://git.openjdk.org/loom/commit/38838b344af00b32251b3141350ba4deb3962d6f 8307480: Improve SA "transported core" documentation for windows Reviewed-by: sspitsyn, kevinw, poonam ! src/jdk.hotspot.agent/doc/transported_core.html Changeset: d8afc7be Author: Chen Liang Committer: Jonathan Gibbons Date: 2023-05-12 20:59:31 +0000 URL: https://git.openjdk.org/loom/commit/d8afc7beeb4c41c2dae4ec1dd6671464eaec4720 8300204: Sealed-class hierarchy graph missing nodes Reviewed-by: jjg ! make/jdk/src/classes/build/tools/taglet/SealedGraph.java Changeset: 3bf38761 Author: Alisen Chung Date: 2023-05-12 21:23:25 +0000 URL: https://git.openjdk.org/loom/commit/3bf3876185f7b9e7679af3fa22ec20887cd4e498 8307297: Move some DnD tests to open Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DragSourceSerializationTest.java + test/jdk/java/awt/dnd/DragTriggerEventTest.java + test/jdk/java/awt/dnd/DropActionChangeTest.java + test/jdk/java/awt/dnd/DropActionChangedTest.java + test/jdk/java/awt/dnd/DropPerformanceTest.java + test/jdk/java/awt/dnd/DropTargetAddNotifyNPETest.java + test/jdk/java/awt/dnd/DropTargetNullFlavorMapTest.java Changeset: 46e3d24a Author: Valerie Peng Date: 2023-05-12 23:00:00 +0000 URL: https://git.openjdk.org/loom/commit/46e3d24a6ff7d52d11f441d92628669d86d8bfaf 8155191: Specify that SecureRandom.nextBytes(byte[]) throws NullPointerException when byte array is null Reviewed-by: mullan ! src/java.base/share/classes/java/security/SecureRandom.java ! src/java.base/share/classes/sun/security/provider/AbstractDrbg.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11SecureRandom.java + test/jdk/java/security/SecureRandom/NextBytesNull.java Changeset: e54051ae Author: Thomas Stuefe Date: 2023-05-13 06:35:17 +0000 URL: https://git.openjdk.org/loom/commit/e54051ae9e1cdaa51a2d569227996a96b79bfa0d 8307935: Class space argument processing can be simplified Reviewed-by: stefank, coleenp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp Changeset: 5e26e64c Author: Daniel D. Daugherty Date: 2023-05-13 14:39:58 +0000 URL: https://git.openjdk.org/loom/commit/5e26e64cbfa4baf81024efeb57768458e59971f5 8307067: remove broken EnableThreadSMRExtraValidityChecks option Reviewed-by: coleenp, dholmes, sspitsyn, rehn ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/threadSMR.cpp Changeset: ceca198e Author: Daniel D. Daugherty Date: 2023-05-13 14:41:19 +0000 URL: https://git.openjdk.org/loom/commit/ceca198ef21b9003492b456d87180d2f48774f73 8307068: store a JavaThread* in the java.lang.Thread object after the JavaThread* is added to the main ThreadsList Reviewed-by: dholmes, rehn, apangin ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/threadSMR.cpp Changeset: f030937a Author: Daniel D. Daugherty Date: 2023-05-13 14:44:57 +0000 URL: https://git.openjdk.org/loom/commit/f030937a51b95dde33ce33537ee830153b2c3b56 8305670: Performance regression in LockSupport.unpark with lots of idle threads Co-authored-by: Robbin Ehn Reviewed-by: rehn, dholmes ! src/hotspot/share/prims/unsafe.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp Changeset: 646747fd Author: Kim Barrett Date: 2023-05-13 23:03:06 +0000 URL: https://git.openjdk.org/loom/commit/646747fd7c7320910eed682ae6da3cd4c60a51a5 8307926: Support byte-sized atomic bitset operations Reviewed-by: aboldtch, coleenp ! src/hotspot/share/runtime/atomic.hpp ! test/hotspot/gtest/runtime/test_atomic.cpp Changeset: 37093441 Author: Vladimir Kempik Date: 2023-05-14 06:56:03 +0000 URL: https://git.openjdk.org/loom/commit/37093441661c26f333aac00d16aea00c3341d314 8291550: RISC-V: jdk uses misaligned memory access when AvoidUnalignedAccess enabled Co-authored-by: Xiaolin Zheng Co-authored-by: Feilong Jiang Reviewed-by: fjiang, fyang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/gc/shared/barrierSetNMethod_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/nativeInst_riscv.cpp ! src/hotspot/cpu/riscv/nativeInst_riscv.hpp ! src/hotspot/cpu/riscv/relocInfo_riscv.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp ! src/hotspot/cpu/riscv/templateTable_riscv.cpp Changeset: 0ee196be Author: Julian Waters Date: 2023-05-14 13:57:42 +0000 URL: https://git.openjdk.org/loom/commit/0ee196bef199c3d32c1f88b26eb4333a7ea73c10 8307163: JLONG_FORMAT_SPECIFIER should be updated on Windows Reviewed-by: stuefe ! src/hotspot/share/utilities/globalDefinitions_visCPP.hpp ! src/java.base/windows/native/libjli/java_md.h Changeset: 8d49ba9e Author: Tobias Hartmann Date: 2023-05-15 05:42:23 +0000 URL: https://git.openjdk.org/loom/commit/8d49ba9e8d3095f850b3007b56488a0c0cf8ddff 8308072: [BACKOUT] update for deprecated sprintf for src/utils Reviewed-by: iris ! src/utils/hsdis/binutils/hsdis-binutils.c Changeset: 911cc7cb Author: gaogao-mem Committer: Yi Yang Date: 2023-05-15 09:16:32 +0000 URL: https://git.openjdk.org/loom/commit/911cc7cb07ed44b24b4c20977d7d6e475bd1b234 8305819: LogConfigurationTest intermittently fails on AArch64 Reviewed-by: aph, dholmes, xliu ! src/hotspot/share/logging/logOutputList.cpp ! src/hotspot/share/logging/logOutputList.hpp Changeset: ad348a8c Author: Tobias Hartmann Date: 2023-05-15 11:06:20 +0000 URL: https://git.openjdk.org/loom/commit/ad348a8cec50561d3e295b6289772530f541c6b1 8303512: Race condition when computing is_loaded property of TypePtr::InterfaceSet Reviewed-by: roland, qamai, kvn ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp ! src/hotspot/share/utilities/growableArray.hpp Changeset: ffab1ea9 Author: Aleksey Shipilev Date: 2023-05-15 13:51:04 +0000 URL: https://git.openjdk.org/loom/commit/ffab1ea9e730204df5ab823eaa3ab7fdb3bef876 8308086: GHA: x86_32 host configuration failing with unmet dependencies Reviewed-by: stuefe ! .github/workflows/main.yml Changeset: 97b2ca3d Author: Stefan Karlsson Date: 2023-05-15 13:52:34 +0000 URL: https://git.openjdk.org/loom/commit/97b2ca3de76046c6f52d3649d8787feea7b9ac83 8307997: gtest:ZIndexDistributorTest fails on PPC64 Reviewed-by: mdoerr ! test/hotspot/gtest/gc/z/test_zIndexDistributor.cpp Changeset: 57e7a3fb Author: Ioi Lam Date: 2023-05-15 16:33:37 +0000 URL: https://git.openjdk.org/loom/commit/57e7a3fbeae56f39f9434b4a97dd915fa14af93d 8307959: Remove explicit type casts from SerializeClosure::do_xxx() calls Reviewed-by: matsaave, ccheung ! src/hotspot/share/cds/archiveUtils.cpp ! src/hotspot/share/cds/archiveUtils.hpp ! src/hotspot/share/cds/cppVtables.cpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/lambdaFormInvokers.cpp ! src/hotspot/share/classfile/classLoaderDataShared.cpp ! src/hotspot/share/classfile/compactHashtable.cpp ! src/hotspot/share/classfile/javaClassesImpl.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/universe.cpp ! src/hotspot/share/memory/universe.hpp ! src/hotspot/share/oops/instanceMirrorKlass.cpp ! src/hotspot/share/oops/instanceStackChunkKlass.cpp Changeset: 0f7b1c54 Author: Roger Riggs Date: 2023-05-15 18:02:43 +0000 URL: https://git.openjdk.org/loom/commit/0f7b1c549fbe4a90819fe3065dadf0b3e0ae94f3 8299340: CreateProcessW lpCommandLine must be mutable Reviewed-by: naoto ! src/java.base/windows/native/libjava/ProcessImpl_md.c Changeset: 01892f9c Author: Roger Riggs Date: 2023-05-15 18:03:24 +0000 URL: https://git.openjdk.org/loom/commit/01892f9c6ed1ff6593f77b89fcc2c5da8d094abf 8304913: Use OperatingSystem, Architecture, and Version in jlink Reviewed-by: jpai, alanb, mchung ! src/java.base/share/classes/module-info.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/ImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java ! test/jdk/tools/jlink/plugins/CDSPluginTest.java Changeset: 43c8c650 Author: Yi-Fan Tsai Committer: Paul Hohensee Date: 2023-05-15 18:41:53 +0000 URL: https://git.openjdk.org/loom/commit/43c8c650afe3c86ce4d59390eb0648548ed33126 8307555: Reduce memory reads in x86 MD5 intrinsic Reviewed-by: simonis, phh ! src/hotspot/cpu/x86/macroAssembler_x86_md5.cpp Changeset: cc80ada7 Author: Chris Plummer Date: 2023-05-15 18:59:08 +0000 URL: https://git.openjdk.org/loom/commit/cc80ada739066d0099085f1a388e96852f43a7d4 8306593: Fix nsk/jdi/stop/stop001 for virtual threads and remove from problem list Reviewed-by: lmesnik, sspitsyn ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001a.java Changeset: 7b0b9b57 Author: Joe Darcy Date: 2023-05-15 20:09:12 +0000 URL: https://git.openjdk.org/loom/commit/7b0b9b570b5d6e90e0b79fbe19396c6e908a1dae 8308049: Refactor nested class declarations in FdLibm.java Reviewed-by: smarks ! src/java.base/share/classes/java/lang/FdLibm.java Changeset: 31683722 Author: Justin Lu Date: 2023-05-15 23:19:02 +0000 URL: https://git.openjdk.org/loom/commit/316837226ecceb4daa14e2bc1be8ce120edbfdc9 8306597: Improve string formatting in EquivMapsGenerator.java Reviewed-by: naoto ! make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java Changeset: 05b51c75 Author: Ioi Lam Date: 2023-05-16 01:40:07 +0000 URL: https://git.openjdk.org/loom/commit/05b51c75b9ffea93f396b0afb0ded8b313cea51b 8307567: Avoid relocating global roots to metaspaceObjs in CDS dump Reviewed-by: matsaave, ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/archiveUtils.cpp ! src/hotspot/share/cds/archiveUtils.hpp ! src/hotspot/share/cds/cppVtables.cpp ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.cpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.hpp ! src/hotspot/share/cds/metaspaceShared.cpp ! src/hotspot/share/cds/runTimeClassInfo.cpp ! src/hotspot/share/cds/runTimeClassInfo.hpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/memory/allocation.hpp Changeset: 2210e067 Author: Jayathirth D V Date: 2023-05-16 04:09:08 +0000 URL: https://git.openjdk.org/loom/commit/2210e06788d14dab38f78d8b20a2397e633195af 8306638: Open source some AWT tests related to datatransfer and Toolkit Reviewed-by: prr, serb, dnguyen + test/jdk/java/awt/Toolkit/ToolkitListenerTest/ToolkitListenerTest.java + test/jdk/java/awt/datatransfer/CRLFTest/CRLFTest.java + test/jdk/java/awt/datatransfer/DataConversionDeadlockTest/DataConversionDeadlockTest.java + test/jdk/java/awt/datatransfer/DataFlavor/BestTextFlavorTest/BestTextFlavorTest.java + test/jdk/java/awt/datatransfer/FileTransferAWTLockTest/FileTransferAWTLockTest.java Changeset: d22bcc81 Author: Jaikiran Pai Date: 2023-05-16 05:06:46 +0000 URL: https://git.openjdk.org/loom/commit/d22bcc813eea719b817d3d541a843594675c0ca9 8307403: java/util/zip/DeInflate.java timed out Reviewed-by: simonis, lancea ! test/jdk/java/util/zip/DeInflate.java Changeset: c2ef3024 Author: Serguei Spitsyn Date: 2023-05-16 07:20:01 +0000 URL: https://git.openjdk.org/loom/commit/c2ef3024689d60c79320ab3ef9a2fdeccb4cde72 8307968: serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java timed out Reviewed-by: cjplummer, lmesnik ! test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java Changeset: 0790f704 Author: Kevin Walls Date: 2023-05-16 08:28:53 +0000 URL: https://git.openjdk.org/loom/commit/0790f704fdc82d8152219b280a51c8c1aad7a358 8306806: JMX agent with JDP enabled won't start when PerfData is disabled Reviewed-by: dholmes, cjplummer ! src/jdk.management.agent/share/classes/jdk/internal/agent/Agent.java Changeset: c9b6bb5b Author: Doug Simon Date: 2023-05-16 08:50:22 +0000 URL: https://git.openjdk.org/loom/commit/c9b6bb5bd7d5ca17825f8eb4f181fb42ca14a5d5 8308041: [JVMCI] WB_IsGCSupportedByJVMCICompiler must enter correct JVMCI env Reviewed-by: thartmann ! src/hotspot/share/prims/whitebox.cpp Changeset: 72294c54 Author: Daniel Fuchs Date: 2023-05-16 09:13:17 +0000 URL: https://git.openjdk.org/loom/commit/72294c5402dd11e3eb4922ad26e1b153098495ff 8308024: HttpClient (HTTP/1.1) sends an extraneous empty chunk if the BodyPublisher supplies an empty buffer Reviewed-by: djelinski, michaelm ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Request.java ! test/jdk/java/net/httpclient/AbstractNoBody.java ! test/jdk/java/net/httpclient/NoBodyPartOne.java + test/jdk/java/net/httpclient/NoBodyPartThree.java ! test/jdk/java/net/httpclient/NoBodyPartTwo.java Changeset: 19c8c30d Author: Christian Hagedorn Date: 2023-05-16 13:30:07 +0000 URL: https://git.openjdk.org/loom/commit/19c8c30d1cfe611945f1bf97018280ae6b48ee8b 8305634: Renaming predicates, simple cleanups, and adding summary about current predicates Reviewed-by: epeter, thartmann, roland ! src/hotspot/share/opto/cfgnode.cpp ! src/hotspot/share/opto/cfgnode.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/idealKit.cpp ! src/hotspot/share/opto/ifnode.cpp ! src/hotspot/share/opto/loopPredicate.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopUnswitch.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/split_if.cpp ! src/hotspot/share/opto/stringopts.cpp Changeset: be54b54f Author: Leonid Mesnik Date: 2023-05-16 13:39:04 +0000 URL: https://git.openjdk.org/loom/commit/be54b54fb3a6a7108f5f7ee6bf475cf1784d3297 8307369: Add execution of all svc tests in CI Reviewed-by: cjplummer, sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt ! test/lib/jdk/test/lib/process/ProcessTools.java Changeset: 23cbb2d1 Author: Christoph Dreis Committer: Vicente Romero Date: 2023-05-16 14:22:40 +0000 URL: https://git.openjdk.org/loom/commit/23cbb2d1709b5e7509e373d4642806d6436cbbcb 8306860: Avoid unnecessary allocation in List.map() when list is empty Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/List.java Changeset: 8686a36b Author: Calvin Cheung Date: 2023-05-16 14:42:33 +0000 URL: https://git.openjdk.org/loom/commit/8686a36b405fb3bb95f51493c1ef3e470acf2e85 8307315: Missing ResourceMark in CDS and JVMTI code Reviewed-by: coleenp, iklam ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/classfile/klassFactory.cpp Changeset: 316bc79e Author: Stefan Karlsson Date: 2023-05-16 14:48:46 +0000 URL: https://git.openjdk.org/loom/commit/316bc79e0e097bb752ba61551fd0e2502c0ed9f1 8308188: ProblemList java/util/concurrent/locks/Lock/OOMEInAQS.java with ZGC on all platforms Reviewed-by: dcubed ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt Changeset: 41ee125a Author: Amit Kumar Committer: Martin Doerr Date: 2023-05-16 15:25:19 +0000 URL: https://git.openjdk.org/loom/commit/41ee125a0f6cf17c20d148bf2c06db1707e4d889 8278411: Implement UseHeavyMonitors consistently, s390 port Reviewed-by: mdoerr, stuefe, lucy ! src/hotspot/cpu/s390/c1_MacroAssembler_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/synchronizer.cpp ! test/jdk/java/util/concurrent/ConcurrentHashMap/MapLoops.java Changeset: 9d5bab11 Author: Johan Sj?len Date: 2023-05-16 15:40:39 +0000 URL: https://git.openjdk.org/loom/commit/9d5bab11f08a992803399f422d75b17f8607df72 8300081: Replace NULL with nullptr in share/asm/ Reviewed-by: coleenp ! src/hotspot/share/asm/assembler.cpp ! src/hotspot/share/asm/assembler.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/asm/codeBuffer.hpp ! src/hotspot/share/asm/codeBuffer.inline.hpp Changeset: 682359cb Author: Stefan Karlsson Date: 2023-05-16 16:04:18 +0000 URL: https://git.openjdk.org/loom/commit/682359cb4871d779425a9468e8a307169b3651d6 8299075: TestStringDeduplicationInterned.java fails because extra deduplication Reviewed-by: kbarrett, tschatzl ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTools.java Changeset: 599fa774 Author: Stefan Karlsson Date: 2023-05-16 16:12:20 +0000 URL: https://git.openjdk.org/loom/commit/599fa774b875da971d66f79e5e43ede2b5ce18aa 8308092: Replace NULL with nullptr in gc/x Reviewed-by: eosterlund, aboldtch, tschatzl, dholmes ! src/hotspot/cpu/ppc/gc/x/xBarrierSetAssembler_ppc.hpp ! src/hotspot/cpu/ppc/gc/x/x_ppc.ad ! src/hotspot/share/gc/x/c1/xBarrierSetC1.cpp ! src/hotspot/share/gc/x/c2/xBarrierSetC2.cpp ! src/hotspot/share/gc/x/xArray.inline.hpp ! src/hotspot/share/gc/x/xBarrier.cpp ! src/hotspot/share/gc/x/xBarrier.inline.hpp ! src/hotspot/share/gc/x/xBarrierSet.inline.hpp ! src/hotspot/share/gc/x/xBarrierSetStackChunk.cpp ! src/hotspot/share/gc/x/xCPU.cpp ! src/hotspot/share/gc/x/xCPU.inline.hpp ! src/hotspot/share/gc/x/xCollectedHeap.cpp ! src/hotspot/share/gc/x/xForwarding.cpp ! src/hotspot/share/gc/x/xForwardingAllocator.cpp ! src/hotspot/share/gc/x/xForwardingTable.inline.hpp ! src/hotspot/share/gc/x/xHeap.cpp ! src/hotspot/share/gc/x/xHeap.inline.hpp ! src/hotspot/share/gc/x/xHeapIterator.cpp ! src/hotspot/share/gc/x/xList.inline.hpp ! src/hotspot/share/gc/x/xLock.inline.hpp ! src/hotspot/share/gc/x/xMark.cpp ! src/hotspot/share/gc/x/xMarkCache.cpp ! src/hotspot/share/gc/x/xMarkCache.inline.hpp ! src/hotspot/share/gc/x/xMarkStack.cpp ! src/hotspot/share/gc/x/xMarkStack.inline.hpp ! src/hotspot/share/gc/x/xMarkStackAllocator.cpp ! src/hotspot/share/gc/x/xMemory.cpp ! src/hotspot/share/gc/x/xNMethod.cpp ! src/hotspot/share/gc/x/xNMethodData.cpp ! src/hotspot/share/gc/x/xNMethodTable.cpp ! src/hotspot/share/gc/x/xNMethodTableEntry.hpp ! src/hotspot/share/gc/x/xNMethodTableIteration.cpp ! src/hotspot/share/gc/x/xObjectAllocator.cpp ! src/hotspot/share/gc/x/xPage.cpp ! src/hotspot/share/gc/x/xPageAllocator.cpp ! src/hotspot/share/gc/x/xPageCache.cpp ! src/hotspot/share/gc/x/xPageTable.cpp ! src/hotspot/share/gc/x/xPageTable.inline.hpp ! src/hotspot/share/gc/x/xReferenceProcessor.cpp ! src/hotspot/share/gc/x/xRelocate.cpp ! src/hotspot/share/gc/x/xRelocationSet.cpp ! src/hotspot/share/gc/x/xRelocationSetSelector.cpp ! src/hotspot/share/gc/x/xSafeDelete.inline.hpp ! src/hotspot/share/gc/x/xServiceability.cpp ! src/hotspot/share/gc/x/xStackWatermark.cpp ! src/hotspot/share/gc/x/xStat.cpp ! src/hotspot/share/gc/x/xStat.hpp ! src/hotspot/share/gc/x/xThreadLocalAllocBuffer.cpp ! src/hotspot/share/gc/x/xThreadLocalData.hpp ! src/hotspot/share/gc/x/xTracer.cpp ! src/hotspot/share/gc/x/xUnload.cpp ! src/hotspot/share/gc/x/xUnmapper.cpp ! src/hotspot/share/gc/x/xVerify.cpp ! src/hotspot/share/gc/x/xWeakRootsProcessor.cpp Changeset: 60ab1358 Author: Stefan Karlsson Date: 2023-05-16 16:13:58 +0000 URL: https://git.openjdk.org/loom/commit/60ab1358da662977e94759eccb95d75a389fd256 8308097: Generational ZGC: Update constructor syntax Reviewed-by: eosterlund, aboldtch ! src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.cpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp ! src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/vmStructs_z.cpp ! src/hotspot/share/gc/z/zAllocationFlags.hpp ! src/hotspot/share/gc/z/zAllocator.cpp ! src/hotspot/share/gc/z/zArray.inline.hpp ! src/hotspot/share/gc/z/zAttachedArray.inline.hpp ! src/hotspot/share/gc/z/zBarrierSet.cpp ! src/hotspot/share/gc/z/zBitMap.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zContinuation.cpp ! src/hotspot/share/gc/z/zDirector.cpp ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zDriverPort.cpp ! src/hotspot/share/gc/z/zErrno.cpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.cpp ! src/hotspot/share/gc/z/zForwardingEntry.hpp ! src/hotspot/share/gc/z/zForwardingTable.inline.hpp ! src/hotspot/share/gc/z/zFuture.inline.hpp ! src/hotspot/share/gc/z/zGCIdPrinter.cpp ! src/hotspot/share/gc/z/zGeneration.cpp ! src/hotspot/share/gc/z/zGranuleMap.inline.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp ! src/hotspot/share/gc/z/zIndexDistributor.inline.hpp ! src/hotspot/share/gc/z/zIterator.inline.hpp ! src/hotspot/share/gc/z/zList.inline.hpp ! src/hotspot/share/gc/z/zLiveMap.cpp ! src/hotspot/share/gc/z/zLock.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMarkCache.cpp ! src/hotspot/share/gc/z/zMarkContext.inline.hpp ! src/hotspot/share/gc/z/zMarkStack.cpp ! src/hotspot/share/gc/z/zMarkStack.inline.hpp ! src/hotspot/share/gc/z/zMarkStackAllocator.cpp ! src/hotspot/share/gc/z/zMarkStackEntry.hpp ! src/hotspot/share/gc/z/zMarkTerminate.inline.hpp ! src/hotspot/share/gc/z/zMemory.cpp ! src/hotspot/share/gc/z/zMemory.inline.hpp ! src/hotspot/share/gc/z/zMetronome.cpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethodData.cpp ! src/hotspot/share/gc/z/zNMethodTableEntry.hpp ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zObjArrayAllocator.cpp ! src/hotspot/share/gc/z/zObjectAllocator.cpp ! src/hotspot/share/gc/z/zPage.cpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.inline.hpp ! src/hotspot/share/gc/z/zPageCache.cpp ! src/hotspot/share/gc/z/zPageTable.cpp ! src/hotspot/share/gc/z/zPageTable.inline.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.cpp ! src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp ! src/hotspot/share/gc/z/zReferenceProcessor.cpp ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRelocationSet.cpp ! src/hotspot/share/gc/z/zRelocationSet.inline.hpp ! src/hotspot/share/gc/z/zRelocationSetSelector.cpp ! src/hotspot/share/gc/z/zRemembered.cpp ! src/hotspot/share/gc/z/zRememberedSet.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/gc/z/zRuntimeWorkers.cpp ! src/hotspot/share/gc/z/zSafeDelete.inline.hpp ! src/hotspot/share/gc/z/zServiceability.cpp ! src/hotspot/share/gc/z/zStackWatermark.cpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zStat.hpp ! src/hotspot/share/gc/z/zStoreBarrierBuffer.cpp ! src/hotspot/share/gc/z/zTask.cpp ! src/hotspot/share/gc/z/zThreadLocalData.hpp ! src/hotspot/share/gc/z/zTracer.cpp ! src/hotspot/share/gc/z/zTracer.hpp ! src/hotspot/share/gc/z/zTracer.inline.hpp ! src/hotspot/share/gc/z/zUncoloredRoot.inline.hpp ! src/hotspot/share/gc/z/zUncommitter.cpp ! src/hotspot/share/gc/z/zUnload.cpp ! src/hotspot/share/gc/z/zUnmapper.cpp ! src/hotspot/share/gc/z/zValue.inline.hpp ! src/hotspot/share/gc/z/zVerify.cpp ! src/hotspot/share/gc/z/zVirtualMemory.cpp ! src/hotspot/share/gc/z/zVirtualMemory.inline.hpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.cpp ! src/hotspot/share/gc/z/zWorkers.cpp ! test/hotspot/gtest/gc/z/test_zList.cpp ! test/hotspot/gtest/gc/z/test_zMemory.cpp Changeset: 488330d5 Author: Coleen Phillimore Date: 2023-05-16 16:46:09 +0000 URL: https://git.openjdk.org/loom/commit/488330d53bb782657378424421a9ce2f2eed5e88 8307533: Use atomic bitset functions for metadata flags Reviewed-by: ccheung, kbarrett ! src/hotspot/share/oops/fieldInfo.inline.hpp ! src/hotspot/share/oops/instanceKlassFlags.cpp ! src/hotspot/share/oops/instanceKlassFlags.hpp ! src/hotspot/share/oops/methodFlags.cpp ! src/hotspot/share/oops/methodFlags.hpp Changeset: 64d51571 Author: Chris Plummer Date: 2023-05-16 17:02:12 +0000 URL: https://git.openjdk.org/loom/commit/64d51571166e69f724c6329f4a4c23be143e7f95 8306467: Fix nsk/jdb/kill/kill001 to work with new JVMTI StopThread support for virtual threads. Reviewed-by: sspitsyn, amenkov ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdb/kill/kill001/kill001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdb/kill/kill001/kill001a.java Changeset: 4e929918 Author: Justin Lu Date: 2023-05-16 17:10:21 +0000 URL: https://git.openjdk.org/loom/commit/4e92991809aa62cf98543a58bec352ab8a2c7b3d 8300794: Use @snippet in java.util:i18n Reviewed-by: naoto, lancea ! src/java.base/share/classes/java/util/Currency.java ! src/java.base/share/classes/java/util/ListResourceBundle.java ! src/java.base/share/classes/java/util/Locale.java ! src/java.base/share/classes/java/util/PropertyResourceBundle.java ! src/java.base/share/classes/java/util/ResourceBundle.java Changeset: f9a785e8 Author: Naoto Sato Date: 2023-05-16 18:00:45 +0000 URL: https://git.openjdk.org/loom/commit/f9a785e855287ff6746ac8dc8f8f2e2f90c5be07 8307547: Support variant collations Reviewed-by: srl, jlu, alanb ! src/java.base/share/classes/java/text/Collator.java ! src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java ! src/jdk.localedata/share/classes/sun/text/resources/ext/CollationData_sv.java ! test/jdk/sun/text/resources/Collator/SwedishTest.java Changeset: cb8b8cdd Author: Erik Helin Date: 2023-05-16 18:53:58 +0000 URL: https://git.openjdk.org/loom/commit/cb8b8cdd6861a0843f3b1036155eac9f9afc432a 8307458: Add periodic heap usage JFR events Reviewed-by: stefank, aboldtch ! src/hotspot/share/jfr/metadata/metadata.xml ! src/hotspot/share/jfr/periodic/jfrPeriodic.cpp ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc + test/jdk/jdk/jfr/event/gc/detailed/TestGCHeapMemoryPoolUsageEvent.java + test/jdk/jdk/jfr/event/gc/detailed/TestGCHeapMemoryUsageEvent.java ! test/lib/jdk/test/lib/jfr/EventNames.java Changeset: 563152f3 Author: Leonid Mesnik Date: 2023-05-16 19:44:38 +0000 URL: https://git.openjdk.org/loom/commit/563152f32dd2c8617c0e0955d55c5bbce23627fb 8308223: failure handler missed jcmd.vm.info command Reviewed-by: stefank ! test/failure_handler/src/share/conf/common.properties Changeset: d3e50652 Author: Ashutosh Mehra Committer: Ioi Lam Date: 2023-05-16 22:36:44 +0000 URL: https://git.openjdk.org/loom/commit/d3e5065284441647564a9eede79d69e7b0ac80be 8306460: Clear JVM_ACC_QUEUED flag on methods when dumping dynamic CDS archive Reviewed-by: coleenp, iklam ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp Changeset: 2f1c6548 Author: Guoxiong Li Date: 2023-05-17 03:07:56 +0000 URL: https://git.openjdk.org/loom/commit/2f1c65486b1e584f9c4a2eb7af2414d032a02748 8307955: Prefer to PTRACE_GETREGSET instead of PTRACE_GETREGS in method 'ps_proc.c::process_get_lwp_regs' Reviewed-by: cjplummer, kevinw ! src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c Changeset: 5a92aae1 Author: Matthias Baesken Date: 2023-05-17 06:42:19 +0000 URL: https://git.openjdk.org/loom/commit/5a92aae1d967f5be01f05d9cc56c433a5eca61e8 8308156: VerifyCACerts.java misses blank in error output Reviewed-by: mullan, rhalade ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: e34ecc97 Author: Axel Boldt-Christmas Date: 2023-05-17 07:07:41 +0000 URL: https://git.openjdk.org/loom/commit/e34ecc97e63c4565f09b0c80d194c4708c408c10 8296469: Instrument VMError::report with reentrant iteration step for register and stack printing Reviewed-by: eosterlund, stuefe ! src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp ! src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp ! src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp ! src/hotspot/os_cpu/bsd_zero/os_bsd_zero.cpp ! src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp ! src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp ! src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp ! src/hotspot/os_cpu/linux_riscv/os_linux_riscv.cpp ! src/hotspot/os_cpu/linux_s390/os_linux_s390.cpp ! src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp ! src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp ! src/hotspot/os_cpu/windows_aarch64/os_windows_aarch64.cpp ! src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/os.hpp ! src/hotspot/share/utilities/vmError.cpp ! src/hotspot/share/utilities/vmError.hpp ! test/hotspot/jtreg/TEST.groups + test/hotspot/jtreg/runtime/ErrorHandling/ReattemptErrorTest.java Changeset: b300e73a Author: Aleksey Shipilev Date: 2023-05-17 09:19:08 +0000 URL: https://git.openjdk.org/loom/commit/b300e73a4acb5c64f68a355e0ad70d3862084ff4 8308088: Improve class check in CollectedHeap::is_oop Reviewed-by: zgu, tschatzl, ayang, stuefe ! src/hotspot/share/gc/shared/collectedHeap.cpp Changeset: 1a6f9810 Author: Jaikiran Pai Date: 2023-05-17 10:06:22 +0000 URL: https://git.openjdk.org/loom/commit/1a6f9810cd5bcd3cdbdd1505900c0e8c7f091b22 8308185: Update Http2TestServerConnection to use SSLSocket.startHandshake() Reviewed-by: djelinski ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java Changeset: 285c833f Author: Erik ?sterlund Date: 2023-05-17 11:47:30 +0000 URL: https://git.openjdk.org/loom/commit/285c833ffacdaabe7c4955cbbafb3bc459d26784 8308043: Deadlock in TestCSLocker.java due to blocking GC while allocating Reviewed-by: stefank, ayang, tschatzl ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/gc/cslocker/TestCSLocker.java Changeset: c7951cf6 Author: JoKern65 Committer: Matthias Baesken Date: 2023-05-17 11:48:56 +0000 URL: https://git.openjdk.org/loom/commit/c7951cf674581ccd021e7403f5c3bd898e0542f4 8306304: Fix xlc17 clang warnings in ppc and aix code Reviewed-by: erikj, tsteele, mbaesken ! make/hotspot/lib/CompileJvm.gmk ! src/hotspot/cpu/ppc/assembler_ppc.cpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp ! src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp ! src/java.desktop/aix/native/libawt/porting_aix.c Changeset: 5763be72 Author: Adam Sotona Date: 2023-05-17 12:45:19 +0000 URL: https://git.openjdk.org/loom/commit/5763be726700be322de3bbaf345d80e11936b472 8307326: Package jdk.internal.classfile.java.lang.constant become obsolete Reviewed-by: erikj, liach ! make/RunTests.gmk ! make/test/BuildMicrobenchmark.gmk ! make/test/BuildTestLib.gmk ! src/java.base/share/classes/jdk/internal/classfile/Classfile.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleExportInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleHashInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleOpenInfo.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModulePackagesAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/attribute/ModuleRequireInfo.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ModuleEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/PackageEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractPoolEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ClassPrinterImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/ModuleAttributeBuilderImpl.java - src/java.base/share/classes/jdk/internal/classfile/impl/ModuleDescImpl.java - src/java.base/share/classes/jdk/internal/classfile/impl/PackageDescImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/Util.java - src/java.base/share/classes/jdk/internal/classfile/java/lang/constant/ModuleDesc.java - src/java.base/share/classes/jdk/internal/classfile/java/lang/constant/PackageDesc.java ! src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java ! test/hotspot/jtreg/serviceability/dcmd/framework/VMVersionTest.java ! test/hotspot/jtreg/testlibrary/ctw/Makefile ! test/jdk/java/lang/ClassLoader/securityManager/ClassLoaderTest.java ! test/jdk/java/lang/ModuleTests/AnnotationsTest.java ! test/jdk/java/lang/module/ClassFileVersionsTest.java ! test/jdk/java/lang/module/ConfigurationTest.java ! test/jdk/java/lang/module/ModuleDescriptorTest.java ! test/jdk/java/lang/module/ModuleFinderTest.java ! test/jdk/java/lang/module/ModuleNamesTest.java ! test/jdk/java/lang/module/MultiReleaseJarTest.java ! test/jdk/java/security/Provider/SecurityProviderModularTest.java ! test/jdk/javax/security/auth/login/modules/JaasModularClientTest.java ! test/jdk/javax/security/auth/login/modules/JaasModularDefaultHandlerTest.java ! test/jdk/jdk/classfile/AdvancedTransformationsTest.java ! test/jdk/jdk/classfile/ModuleBuilderTest.java - test/jdk/jdk/classfile/ModuleDescTest.java - test/jdk/jdk/classfile/PackageDescTest.java ! test/jdk/jdk/classfile/TEST.properties ! test/jdk/jdk/classfile/examples/ModuleExamples.java ! test/jdk/jdk/classfile/helpers/RebuildingTransformation.java ! test/jdk/jdk/modules/incubator/ServiceBinding.java ! test/jdk/sun/tools/jcmd/TestProcessHelper.java ! test/jdk/tools/jlink/JLinkNegativeTest.java ! test/lib/jdk/test/lib/util/ModuleInfoWriter.java Changeset: 64f6681c Author: Martin Doerr Date: 2023-05-17 15:10:46 +0000 URL: https://git.openjdk.org/loom/commit/64f6681cc7bb184112adcf2b4f2c313e1b0a5c4f 8308246: PPC64le build broken after JDK-8304913 Reviewed-by: shade, mbaesken ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java Changeset: f57c7833 Author: Joe Darcy Date: 2023-05-17 15:31:03 +0000 URL: https://git.openjdk.org/loom/commit/f57c78337e4f968c2e6a924acbebf725d4e46d59 8308239: Tighten up accessibility of nested classes in java.lang.invoke Reviewed-by: alanb ! src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java Changeset: 6d4782bc Author: Brian Burkhalter Date: 2023-05-17 16:04:08 +0000 URL: https://git.openjdk.org/loom/commit/6d4782bc737d5933b9476cadb5e87ceee94c4f68 8307976: (fs) Files.createDirectories(dir) returns dir::toAbsolutePath instead of dir Reviewed-by: alanb ! src/java.base/share/classes/java/nio/file/Files.java ! test/jdk/java/nio/file/Files/CreateDirectories.java From duke at openjdk.org Thu May 18 17:14:59 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 17:14:59 GMT Subject: git: openjdk/loom: fibers: STS updates Message-ID: <381bd225-2084-42b9-a576-877710663792@openjdk.org> Changeset: cf9b521e Author: Alan Bateman Date: 2023-05-18 17:03:52 +0000 URL: https://git.openjdk.org/loom/commit/cf9b521e57e9120263784bb7bb678b358ff0e60c STS updates - TaskHandle -> Substack - Change State to reflect state of subtask - Remi's suggestion for generic signatures - csm API to help logging ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! src/java.base/share/classes/module-info.java + src/jdk.management/share/classes/com/sun/management/Threads.java ! test/jdk/TEST.groups + test/jdk/com/sun/management/Threads/CurrentThreadEnclosingScopes.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java ! test/jdk/java/util/concurrent/StructuredTaskScope/WithScopedValue.java From ron.pressler at oracle.com Thu May 18 18:59:54 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Thu, 18 May 2023 18:59:54 +0000 Subject: Changes to JEP 453 Message-ID: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Hi. We have made several changes to structured concurrency (JEP 453) due to feedback: 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename :) 2. We've fixed the generic signature of handleComplete (thank you R?mi for pointing out the mistake) 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks that are forked after `shutdown` is called will have the `STILLBORN` state. Running subtasks will be interrupted, but the state of their `Subtask` will remain `RUNNING` until completed, probably sometime after `join` has returned, because `join` returns immediately when `shutdown` is called. When completed, their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the task itself, not of the handle. 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() method that returns a string with the description of the current structured context -- i.e. the stack trace for the current thread and the enclosing scopes with their owners' respective stack traces -- all the way up the hierarchy. https://openjdk.org/jeps/453 -- Ron From attila.kelemen85 at gmail.com Thu May 18 19:54:32 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Thu, 18 May 2023 21:54:32 +0200 Subject: Changes to JEP 453 In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: Thanks for the improvements, I think all of them are for the better. Just a few remarks: This does not affect the JEP itself, but in `StructuredTaskScope.SubtaskImpl.get()`, can we have some small quality of life improvement: >From this: ``` if (result instanceof AltResult) { if (result == RESULT_NULL) return null; } else if (result != null) { @SuppressWarnings("unchecked") T r = (T) result; return r; } throw new IllegalStateException("Task not completed or did not complete successfully"); ``` to this: ``` if (result instanceof AltResult alt) { if (result == RESULT_NULL) return null; throw new IllegalStateException("Task did not complete successfully", alt.exception()); } else if (result != null) { @SuppressWarnings("unchecked") T r = (T) result; return r; } throw new IllegalStateException("Task not completed"); ``` Since the information is known, it would help debugging when people make a mistake, rather than punishing them by hiding the exception (even though it is readily available). > 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() method that returns a string with the description of the current structured context -- i.e. the stack trace for the current thread and the enclosing scopes with their owners' respective stack traces -- all the way up the hierarchy. > Very minor thing: There is a typo in the javadoc: it says "purpoes" instead of "purpose". Attila From duke at openjdk.org Thu May 18 19:59:24 2023 From: duke at openjdk.org (duke) Date: Thu, 18 May 2023 19:59:24 GMT Subject: git: openjdk/loom: fibers: 2 new changesets Message-ID: Changeset: c9b19ee0 Author: Leonid Mesnik Date: 2023-05-18 13:55:47 +0000 URL: https://git.openjdk.org/loom/commit/c9b19ee0bd0d075083a382b14c8ecbe4257ec561 fixed for 8308291 8303635 ! test/hotspot/jtreg/compiler/jvmci/meta/ProfilingInfoTest.java ! test/jdk/java/lang/Thread/virtual/stress/Skynet.java Changeset: cebbbc26 Author: Leonid Mesnik Date: 2023-05-18 13:57:31 +0000 URL: https://git.openjdk.org/loom/commit/cebbbc262ebf84d8dc233ea11e738eaf804b9a40 Merge branch 'fibers' of https://github.com/openjdk/loom into fibers ! test/jdk/java/lang/Thread/virtual/stress/Skynet.java ! test/jdk/java/lang/Thread/virtual/stress/Skynet.java From eric at kolotyluk.net Thu May 18 21:44:01 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Thu, 18 May 2023 14:44:01 -0700 Subject: Changes to JEP 453 In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> ??? There are only two hard things in Computer Science: cache invalidation and naming things. ??? -- Phil Karlton So, what does "Subtask" mean when there is no "Task"? Personally, I would go with either just "Task" or "StructuredScopeTask" as "Subtask" is sort of inventing new terminology. If you renamed "StructuredTaskScope" to just "Task" then "Subtask" would make more sense as it is something spawned from a Task. This would be my preferred choice. Shorter names for common things... in particular things that should become common. However, what is the relationship to "Task" with all those other things called "...Task..." Maybe just "ConcurrentTask" and "ConcurrentSubtask" are more meaningful, but "java.util.concurrent.Task" and "java.util.concurrent.Subtask" are probably clear enough. In a sense, we would be saying that all Concurrent Tasks should be Structured. Cheers, Eric On 2023-05-18 11:59 a.m., Ron Pressler wrote: > Hi. > > We have made several changes to structured concurrency (JEP 453) due to feedback: > > 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename :) > > 2. We've fixed the generic signature of handleComplete (thank you R?mi for pointing out the mistake) > > 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks that are forked after `shutdown` is called will have the `STILLBORN` state. Running subtasks will be interrupted, but the state of their `Subtask` will remain `RUNNING` until completed, probably sometime after `join` has returned, because `join` returns immediately when `shutdown` is called. When completed, their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the task itself, not of the handle. > > 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() method that returns a string with the description of the current structured context -- i.e. the stack trace for the current thread and the enclosing scopes with their owners' respective stack traces -- all the way up the hierarchy. > > https://openjdk.org/jeps/453 > > > -- Ron > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: fWYk8D7XGdMvTRbm.png Type: image/png Size: 37091 bytes Desc: not available URL: From attila.kelemen85 at gmail.com Thu May 18 22:01:30 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 00:01:30 +0200 Subject: Changes to JEP 453 In-Reply-To: <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: > > So, what does "Subtask" mean when there is no "Task"? > > > Personally, I would go with either just "Task" or "StructuredScopeTask" as "Subtask" is sort of inventing new terminology. > > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" would make more sense as it is something spawned from a Task. This would be my preferred choice. Shorter names for common things... in particular things that should become common. > > However, what is the relationship to "Task" with all those other things called "...Task..." Maybe just "ConcurrentTask" and "ConcurrentSubtask" are more meaningful, but "java.util.concurrent.Task" and "java.util.concurrent.Subtask" are probably clear enough. > > In a sense, we would be saying that all Concurrent Tasks should be Structured. `StructuredTaskScope` is not a task though, but it is really a scope (besides, a simple name like `Task` would conflict with a lot of existing things, which would be horrible, even if others shouldn't have given such a simple name as well). The way I imagine it is that the "task" you are looking for is the block between the creation and closing of `StructuredTaskScope`. Still, obviously naming this is difficult, because it is also not exactly a task (I mean it has a task() method for confusion, and that is not the parent, but actually the action of the `Subtask`, but I believe the `task()` method should be removed, as it is harmful). As far as usage goes, this wants to be a reference to the result of the task, but the existence of `state()` would make it awkward to call it some kind of result (also then `get` would return the result of a result, which is also awkward). So yeah, it should be `ResultReferenceWithStateOfComputation` :). Though, on a second note, it could be called result, and you could think of state as the state the result is in (since you are not really expected to rely on this changing, and should not use it before `join`). From eric at kolotyluk.net Thu May 18 23:06:56 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Thu, 18 May 2023 16:06:56 -0700 Subject: Naming Things - Task and Subtask In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: Just some thoughts on Threads, Task, etc... please ignore if you think I am out to lunch... Originally, Project Loom started with the notion of Fibers, but then change the name to VirtualThreads. I liked "Fibers" but I agree that "VirtualTreads" makes more sense in some ways. When we talk about "Tasks" we usually think about concurrent things, where a Task is an abstract concept of concurrency and a Thread is an implementation. Task is what Thread is how If we changed the term "VirtualThread" to "Subthread" then there would be better symmetry with "Task" and "Subtask" but it's far too late to change the name "VirtualThread" and I am not sure if I like the term "VirtualTask" but I could live with it. In a way, we could create a symmetry between Task and Thread, where every Task has a Thread. Maybe this is a useless symmetry, but creating a Task does not mean you have to start the thread, just that it's the root of abstraction on concurrency, where thread is the root of implementation. Then comes the question of Scope... I proposed something like this a long time ago, but at the time people claimed this was unnecessary abstraction, and then later came Structured Concurrency... oh well... I have since seen discussions on StructuredTaskScope and now ScopedValue, but it's not clear to me that StructuredTaskScope implies ScopedValue? It doesn't but it can. Both StructuredTaskScope and ScopedValue are examples of dynamic scope. Maybe instead of saying ?try (var scope = new StructuredTaskScope()) { ??????? Subtask subtask1 = scope.fork(task1); ??????? Subtask subtask2 = scope.fork(task2); ??????? scope.join(); ??????? ... process results/exceptions ... ??? } // close we should be saying |try (var scope = Task.StructuredScope()) { Subtask subtask1 = scope.fork(task1); Subtask subtask2 = scope.fork(task2); scope.join(); ... process results/exceptions ... } // close| where we have to figure out what we really mean by "Task" and "Subtask" Given that Subtask is a sub-interface of Supplier , maybe Task should also be a sub-interface of Supplier where C is some Collection class. This might make concurrent collection based coding more elegant, where we state our intention to 'Supply' some collection via get(). Where we have |private static final ScopedValue USERNAME = ScopedValue.newInstance(); ScopedValue.runWhere(USERNAME, "duke", () -> { try (var scope = new StructuredTaskScope()) { scope.fork(() -> childTask1()); scope.fork(() -> childTask2()); scope.fork(() -> childTask3()); ... } });| we might have |private static final Scope.Value USERNAME = Scope.Value(); Scope.Value.runWhere(USERNAME, "duke", () -> { try (var scope = new Task.StructuredScope()) { scope.fork(() -> childTask1()); scope.fork(() -> childTask2()); scope.fork(() -> childTask3()); ... } }); | but I want to say something (not well thought out yet) like| | || |List results = Task.Builder(workers) .scope.value("USERNAME", "duke") .scope.structured( context-> { |||List> subtasks = workers.stream().map(scope::fork).toList(); context.join() .throwIfFailed(); // Propagate exception if any subtask fails // Here, all tasks have succeeded, so compose their results return subtasks.stream().map(Subtask::get).toList(); | }) .start(); | || Where the "try" is implicitly there... where it's boilerplate I don't need to see. I am learning to appreciate the Builder Pattern a little more, and wondering if Loom could make better use of it. Anyway, just thinking out loud, and perhaps these discussions are better shared over beer? I know that the Scala community prefer Scotch, primarily Ardbeg, which is perhaps why Scala Architecture looks different than Java Architecture ;-) Again There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton -------------- next part -------------- An HTML attachment was scrubbed... URL: From robin.bygrave at gmail.com Fri May 19 00:17:50 2023 From: robin.bygrave at gmail.com (Rob Bygrave) Date: Fri, 19 May 2023 12:17:50 +1200 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: *> all Concurrent Tasks should be Structured* That was my thought too, there isn't a "UnstructuredTaskScope" per se [and I don't think there will be one in the future?] ... so the "Structured" part of StructuredTaskScope can seem unnecessary. It feels like it could be "TaskScope" perhaps? *> `StructuredTaskScope` is not a task though, but it is really a scope* fwiw I agree, I think of it as a "scope" that contains "tasks" [that will usually run concurrently]. My 1c On Fri, 19 May 2023 at 10:01, Attila Kelemen wrote: > > > > So, what does "Subtask" mean when there is no "Task"? > > > > > > Personally, I would go with either just "Task" or "StructuredScopeTask" > as "Subtask" is sort of inventing new terminology. > > > > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" would > make more sense as it is something spawned from a Task. This would be my > preferred choice. Shorter names for common things... in particular things > that should become common. > > > > However, what is the relationship to "Task" with all those other things > called "...Task..." Maybe just "ConcurrentTask" and "ConcurrentSubtask" are > more meaningful, but "java.util.concurrent.Task" and > "java.util.concurrent.Subtask" are probably clear enough. > > > > In a sense, we would be saying that all Concurrent Tasks should be > Structured. > > `StructuredTaskScope` is not a task though, but it is really a scope > (besides, a simple name like `Task` would conflict with a lot of > existing things, which would be horrible, even if others shouldn't > have given such a simple name as well). > > The way I imagine it is that the "task" you are looking for is the > block between the creation and closing of `StructuredTaskScope`. > Still, obviously naming this is difficult, because it is also not > exactly a task (I mean it has a task() method for confusion, and that > is not the parent, but actually the action of the `Subtask`, but I > believe the `task()` method should be removed, as it is harmful). As > far as usage goes, this wants to be a reference to the result of the > task, but the existence of `state()` would make it awkward to call it > some kind of result (also then `get` would return the result of a > result, which is also awkward). So yeah, it should be > `ResultReferenceWithStateOfComputation` :). Though, on a second note, > it could be called result, and you could think of state as the state > the result is in (since you are not really expected to rely on this > changing, and should not use it before `join`). > -------------- next part -------------- An HTML attachment was scrubbed... URL: From robin.bygrave at gmail.com Fri May 19 00:26:32 2023 From: robin.bygrave at gmail.com (Rob Bygrave) Date: Fri, 19 May 2023 12:26:32 +1200 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: *> `STILLBORN` state* My feedback - I'd look for another name for this state. That word might be a fairly deep emotional trigger for some folks so imo I'd hope for an alternative for that state. Now 2c On Fri, 19 May 2023 at 12:17, Rob Bygrave wrote: > *> all Concurrent Tasks should be Structured* > > That was my thought too, there isn't a "UnstructuredTaskScope" per se [and > I don't think there will be one in the future?] ... so the "Structured" > part of StructuredTaskScope can seem unnecessary. It feels like it could be > "TaskScope" perhaps? > > > > *> `StructuredTaskScope` is not a task though, but it is really a scope* > > fwiw I agree, I think of it as a "scope" that contains "tasks" [that will > usually run concurrently]. > > > My 1c > > > On Fri, 19 May 2023 at 10:01, Attila Kelemen > wrote: > >> > >> > So, what does "Subtask" mean when there is no "Task"? >> > >> > >> > Personally, I would go with either just "Task" or "StructuredScopeTask" >> as "Subtask" is sort of inventing new terminology. >> > >> > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" >> would make more sense as it is something spawned from a Task. This would be >> my preferred choice. Shorter names for common things... in particular >> things that should become common. >> > >> > However, what is the relationship to "Task" with all those other things >> called "...Task..." Maybe just "ConcurrentTask" and "ConcurrentSubtask" are >> more meaningful, but "java.util.concurrent.Task" and >> "java.util.concurrent.Subtask" are probably clear enough. >> > >> > In a sense, we would be saying that all Concurrent Tasks should be >> Structured. >> >> `StructuredTaskScope` is not a task though, but it is really a scope >> (besides, a simple name like `Task` would conflict with a lot of >> existing things, which would be horrible, even if others shouldn't >> have given such a simple name as well). >> >> The way I imagine it is that the "task" you are looking for is the >> block between the creation and closing of `StructuredTaskScope`. >> Still, obviously naming this is difficult, because it is also not >> exactly a task (I mean it has a task() method for confusion, and that >> is not the parent, but actually the action of the `Subtask`, but I >> believe the `task()` method should be removed, as it is harmful). As >> far as usage goes, this wants to be a reference to the result of the >> task, but the existence of `state()` would make it awkward to call it >> some kind of result (also then `get` would return the result of a >> result, which is also awkward). So yeah, it should be >> `ResultReferenceWithStateOfComputation` :). Though, on a second note, >> it could be called result, and you could think of state as the state >> the result is in (since you are not really expected to rely on this >> changing, and should not use it before `join`). >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From josiahnoel at gmail.com Fri May 19 00:30:17 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Thu, 18 May 2023 20:30:17 -0400 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: I suppose it is a bit morbid, perhaps NOT_STARTED would be better? On Thu, May 18, 2023, 8:26 PM Rob Bygrave wrote: > *> `STILLBORN` state* > > My feedback - I'd look for another name for this state. That word might be > a fairly deep emotional trigger for some folks so imo I'd hope for an > alternative for that state. > > Now 2c > > On Fri, 19 May 2023 at 12:17, Rob Bygrave wrote: > >> *> all Concurrent Tasks should be Structured* >> >> That was my thought too, there isn't a "UnstructuredTaskScope" per se >> [and I don't think there will be one in the future?] ... so the >> "Structured" part of StructuredTaskScope can seem unnecessary. It feels >> like it could be "TaskScope" perhaps? >> >> >> >> *> `StructuredTaskScope` is not a task though, but it is really a scope* >> >> fwiw I agree, I think of it as a "scope" that contains "tasks" [that will >> usually run concurrently]. >> >> >> My 1c >> >> >> On Fri, 19 May 2023 at 10:01, Attila Kelemen >> wrote: >> >>> > >>> > So, what does "Subtask" mean when there is no "Task"? >>> > >>> > >>> > Personally, I would go with either just "Task" or >>> "StructuredScopeTask" as "Subtask" is sort of inventing new terminology. >>> > >>> > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" >>> would make more sense as it is something spawned from a Task. This would be >>> my preferred choice. Shorter names for common things... in particular >>> things that should become common. >>> > >>> > However, what is the relationship to "Task" with all those other >>> things called "...Task..." Maybe just "ConcurrentTask" and >>> "ConcurrentSubtask" are more meaningful, but "java.util.concurrent.Task" >>> and "java.util.concurrent.Subtask" are probably clear enough. >>> > >>> > In a sense, we would be saying that all Concurrent Tasks should be >>> Structured. >>> >>> `StructuredTaskScope` is not a task though, but it is really a scope >>> (besides, a simple name like `Task` would conflict with a lot of >>> existing things, which would be horrible, even if others shouldn't >>> have given such a simple name as well). >>> >>> The way I imagine it is that the "task" you are looking for is the >>> block between the creation and closing of `StructuredTaskScope`. >>> Still, obviously naming this is difficult, because it is also not >>> exactly a task (I mean it has a task() method for confusion, and that >>> is not the parent, but actually the action of the `Subtask`, but I >>> believe the `task()` method should be removed, as it is harmful). As >>> far as usage goes, this wants to be a reference to the result of the >>> task, but the existence of `state()` would make it awkward to call it >>> some kind of result (also then `get` would return the result of a >>> result, which is also awkward). So yeah, it should be >>> `ResultReferenceWithStateOfComputation` :). Though, on a second note, >>> it could be called result, and you could think of state as the state >>> the result is in (since you are not really expected to rely on this >>> changing, and should not use it before `join`). >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From robin.bygrave at gmail.com Fri May 19 02:02:25 2023 From: robin.bygrave at gmail.com (Rob Bygrave) Date: Fri, 19 May 2023 14:02:25 +1200 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: NOT_STARTED would be great imo !!! *> a bit morbid* Apologies if I'm being too blunt here. I think people will relate 'stillborn' to *'miscarriage'* and that to me means it has the potential to "cut very deep" for too many people. IMO we don't want to be anywhere near this subject. On Fri, 19 May 2023 at 12:30, Josiah Noel wrote: > I suppose it is a bit morbid, perhaps NOT_STARTED would be better? > > On Thu, May 18, 2023, 8:26 PM Rob Bygrave wrote: > >> *> `STILLBORN` state* >> >> My feedback - I'd look for another name for this state. That word might >> be a fairly deep emotional trigger for some folks so imo I'd hope for an >> alternative for that state. >> >> Now 2c >> >> On Fri, 19 May 2023 at 12:17, Rob Bygrave >> wrote: >> >>> *> all Concurrent Tasks should be Structured* >>> >>> That was my thought too, there isn't a "UnstructuredTaskScope" per se >>> [and I don't think there will be one in the future?] ... so the >>> "Structured" part of StructuredTaskScope can seem unnecessary. It feels >>> like it could be "TaskScope" perhaps? >>> >>> >>> >>> *> `StructuredTaskScope` is not a task though, but it is really a scope* >>> >>> fwiw I agree, I think of it as a "scope" that contains "tasks" [that >>> will usually run concurrently]. >>> >>> >>> My 1c >>> >>> >>> On Fri, 19 May 2023 at 10:01, Attila Kelemen >>> wrote: >>> >>>> > >>>> > So, what does "Subtask" mean when there is no "Task"? >>>> > >>>> > >>>> > Personally, I would go with either just "Task" or >>>> "StructuredScopeTask" as "Subtask" is sort of inventing new terminology. >>>> > >>>> > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" >>>> would make more sense as it is something spawned from a Task. This would be >>>> my preferred choice. Shorter names for common things... in particular >>>> things that should become common. >>>> > >>>> > However, what is the relationship to "Task" with all those other >>>> things called "...Task..." Maybe just "ConcurrentTask" and >>>> "ConcurrentSubtask" are more meaningful, but "java.util.concurrent.Task" >>>> and "java.util.concurrent.Subtask" are probably clear enough. >>>> > >>>> > In a sense, we would be saying that all Concurrent Tasks should be >>>> Structured. >>>> >>>> `StructuredTaskScope` is not a task though, but it is really a scope >>>> (besides, a simple name like `Task` would conflict with a lot of >>>> existing things, which would be horrible, even if others shouldn't >>>> have given such a simple name as well). >>>> >>>> The way I imagine it is that the "task" you are looking for is the >>>> block between the creation and closing of `StructuredTaskScope`. >>>> Still, obviously naming this is difficult, because it is also not >>>> exactly a task (I mean it has a task() method for confusion, and that >>>> is not the parent, but actually the action of the `Subtask`, but I >>>> believe the `task()` method should be removed, as it is harmful). As >>>> far as usage goes, this wants to be a reference to the result of the >>>> task, but the existence of `state()` would make it awkward to call it >>>> some kind of result (also then `get` would return the result of a >>>> result, which is also awkward). So yeah, it should be >>>> `ResultReferenceWithStateOfComputation` :). Though, on a second note, >>>> it could be called result, and you could think of state as the state >>>> the result is in (since you are not really expected to rely on this >>>> changing, and should not use it before `join`). >>>> >>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From spullara at gmail.com Fri May 19 04:24:57 2023 From: spullara at gmail.com (Sam Pullara) Date: Thu, 18 May 2023 21:24:57 -0700 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: I don't normally want to police language but yeah, this word is pretty bad. NOT_STARTED seems way better. On Thu, May 18, 2023 at 7:02?PM Rob Bygrave wrote: > NOT_STARTED would be great imo !!! > > *> a bit morbid* > > Apologies if I'm being too blunt here. I think people will relate > 'stillborn' to *'miscarriage'* and that to me means it has the potential > to "cut very deep" for too many people. IMO we don't want to be anywhere > near this subject. > > On Fri, 19 May 2023 at 12:30, Josiah Noel wrote: > >> I suppose it is a bit morbid, perhaps NOT_STARTED would be better? >> >> On Thu, May 18, 2023, 8:26 PM Rob Bygrave >> wrote: >> >>> *> `STILLBORN` state* >>> >>> My feedback - I'd look for another name for this state. That word might >>> be a fairly deep emotional trigger for some folks so imo I'd hope for an >>> alternative for that state. >>> >>> Now 2c >>> >>> On Fri, 19 May 2023 at 12:17, Rob Bygrave >>> wrote: >>> >>>> *> all Concurrent Tasks should be Structured* >>>> >>>> That was my thought too, there isn't a "UnstructuredTaskScope" per se >>>> [and I don't think there will be one in the future?] ... so the >>>> "Structured" part of StructuredTaskScope can seem unnecessary. It feels >>>> like it could be "TaskScope" perhaps? >>>> >>>> >>>> >>>> *> `StructuredTaskScope` is not a task though, but it is really a scope* >>>> >>>> fwiw I agree, I think of it as a "scope" that contains "tasks" [that >>>> will usually run concurrently]. >>>> >>>> >>>> My 1c >>>> >>>> >>>> On Fri, 19 May 2023 at 10:01, Attila Kelemen < >>>> attila.kelemen85 at gmail.com> wrote: >>>> >>>>> > >>>>> > So, what does "Subtask" mean when there is no "Task"? >>>>> > >>>>> > >>>>> > Personally, I would go with either just "Task" or >>>>> "StructuredScopeTask" as "Subtask" is sort of inventing new terminology. >>>>> > >>>>> > If you renamed "StructuredTaskScope" to just "Task" then "Subtask" >>>>> would make more sense as it is something spawned from a Task. This would be >>>>> my preferred choice. Shorter names for common things... in particular >>>>> things that should become common. >>>>> > >>>>> > However, what is the relationship to "Task" with all those other >>>>> things called "...Task..." Maybe just "ConcurrentTask" and >>>>> "ConcurrentSubtask" are more meaningful, but "java.util.concurrent.Task" >>>>> and "java.util.concurrent.Subtask" are probably clear enough. >>>>> > >>>>> > In a sense, we would be saying that all Concurrent Tasks should be >>>>> Structured. >>>>> >>>>> `StructuredTaskScope` is not a task though, but it is really a scope >>>>> (besides, a simple name like `Task` would conflict with a lot of >>>>> existing things, which would be horrible, even if others shouldn't >>>>> have given such a simple name as well). >>>>> >>>>> The way I imagine it is that the "task" you are looking for is the >>>>> block between the creation and closing of `StructuredTaskScope`. >>>>> Still, obviously naming this is difficult, because it is also not >>>>> exactly a task (I mean it has a task() method for confusion, and that >>>>> is not the parent, but actually the action of the `Subtask`, but I >>>>> believe the `task()` method should be removed, as it is harmful). As >>>>> far as usage goes, this wants to be a reference to the result of the >>>>> task, but the existence of `state()` would make it awkward to call it >>>>> some kind of result (also then `get` would return the result of a >>>>> result, which is also awkward). So yeah, it should be >>>>> `ResultReferenceWithStateOfComputation` :). Though, on a second note, >>>>> it could be called result, and you could think of state as the state >>>>> the result is in (since you are not really expected to rely on this >>>>> changing, and should not use it before `join`). >>>>> >>>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From Alan.Bateman at oracle.com Fri May 19 05:26:46 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 19 May 2023 06:26:46 +0100 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: <66bcda7c-a1dc-9e35-0462-f8b41e3ed9b4@oracle.com> On 18/05/2023 20:54, Attila Kelemen wrote: > : > > Since the information is known, it would help debugging when people > make a mistake, rather than punishing them by hiding the exception > (even though it is readily available). The exception message can be made more specific but adding it as a case to the ISE risks misuse of the API. The ISE means there is a bug in the code using the API, it shouldn't be used to get result|exception. > Very minor thing: There is a typo in the javadoc: it says "purpoes" > instead of "purpose". Thanks. -Alan From Alan.Bateman at oracle.com Fri May 19 05:29:22 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 19 May 2023 06:29:22 +0100 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: <11c211b7-0e0d-7287-6c8a-42abbbae82ba@oracle.com> On 19/05/2023 01:26, Rob Bygrave wrote: > /> `STILLBORN` state/ > My feedback - I'd look for another name for this state. That word > might be a fairly deep emotional trigger for some folks so imo I'd > hope for an alternative for that state. > Yes, there's an naming error there. -Alan -------------- next part -------------- An HTML attachment was scrubbed... URL: From ron.pressler at oracle.com Fri May 19 13:01:49 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Fri, 19 May 2023 13:01:49 +0000 Subject: Changes to JEP 453 In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: <63BC3515-4901-46C9-884D-BDC3F84D8848@oracle.com> On 18 May 2023, at 19:59, Ron Pressler wrote: > > Hi. > > We have made several changes to structured concurrency (JEP 453) due to feedback: > > 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename :) > > 2. We've fixed the generic signature of handleComplete (thank you R?mi for pointing out the mistake) > > 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks that are forked after `shutdown` is called will have the `STILLBORN` state. Running subtasks will be interrupted, but the state of their `Subtask` will remain `RUNNING` until completed, probably sometime after `join` has returned, because `join` returns immediately when `shutdown` is called. When completed, their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the task itself, not of the handle. > > 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() method that returns a string with the description of the current structured context -- i.e. the stack trace for the current thread and the enclosing scopes with their owners' respective stack traces -- all the way up the hierarchy. > > https://openjdk.org/jeps/453 > STILLBORN -> NOT_RUN ? Ron From forax at univ-mlv.fr Fri May 19 13:24:20 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Fri, 19 May 2023 15:24:20 +0200 (CEST) Subject: Changes to JEP 453 In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "loom-dev" > Sent: Thursday, May 18, 2023 8:59:54 PM > Subject: Changes to JEP 453 > Hi. Hi > > We have made several changes to structured concurrency (JEP 453) due to > feedback: > > 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename > :) If you are into the renaming, i propose to rename join/joinUntil to joinAll/joinAllUntil so it's clear that join() has to be called once per a group of subtasks and not once per subtask. > > 2. We've fixed the generic signature of handleComplete (thank you R?mi for > pointing out the mistake) > > 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks > that are forked after `shutdown` is called will have the `STILLBORN` state. > Running subtasks will be interrupted, but the state of their `Subtask` will > remain `RUNNING` until completed, probably sometime after `join` has returned, > because `join` returns immediately when `shutdown` is called. When completed, > their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or > `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the > task itself, not of the handle. In the JEP, the state CANCELLED has disappeared from the possible state of Subtask ? I'm puzzled by this change. > > 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() > method that returns a string with the description of the current structured > context -- i.e. the stack trace for the current thread and the enclosing scopes > with their owners' respective stack traces -- all the way up the hierarchy. > > https://openjdk.org/jeps/453 Minor detail, in the code of the example runAll(), the local variable 'handles' should be renamed to 'suppliers', and i do not believe it has to be typed List>, List> should be enough. > > > -- Ron R?mi From attila.kelemen85 at gmail.com Fri May 19 18:14:38 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 20:14:38 +0200 Subject: Changes to JEP 453 In-Reply-To: <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > In the JEP, the state CANCELLED has disappeared from the possible state of Subtask ? > I'm puzzled by this change. > I'm puzzled that you are puzzled :) Because you said: "I propose to simplify the design and remove the state CANCELLED". With which I wholeheartedly agree. In my opinion, this is a much cleaner design, because it leaves more options for the STS policy to decide what is actually meant by being cancelled. Also, conceptually simpler, because now the state of `Subtask` represents what is actually happening rather than what was wished from it (by a shutdown call. Also, it is of little concern to the client of STS, because it shouldn't really based its decision on that (since that decision should be centralized in the STS policy). From attila.kelemen85 at gmail.com Fri May 19 18:19:59 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 20:19:59 +0200 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <26eaa74d-900d-3de9-e004-7ce034febb42@kolotyluk.net> Message-ID: Rob Bygrave ezt ?rta (id?pont: 2023. m?j. 19., P, 2:18): > > > all Concurrent Tasks should be Structured > > That was my thought too, there isn't a "UnstructuredTaskScope" per se [and I don't think there will be one in the future?] ... so the "Structured" part of StructuredTaskScope can seem unnecessary. It feels like it could be "TaskScope" perhaps? > > There kinda is, it is just called `Executor` / `ExecutorService` which you still need, because not all concurrent tasks should be structured. For example, if you have an incoming HTTP request, and you respond to that by starting a task asynchronously and telling your client that you have started the task, then you have to break out of the structure. So, I think calling it simply `TaskScope` is too generic, besides name collision with the JDK is awful, and such generic names could easily be relatively common. From attila.kelemen85 at gmail.com Fri May 19 18:33:24 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 20:33:24 +0200 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: There could be some restrictions which I didn't notice, but STS takes a `ThreadFactory`, so it is not necessarily related to virtual threads (though I guess people will use it with virtual threads pretty much exclusively for performance reasons). > ... but it's not clear to me that StructuredTaskScope implies ScopedValue? Scoped values are captured by STS upon its creation and are propagated to forked tasks. So, the "Scope" in those names are well justified (and the normal calls naturally inherit scoped values of course like a thread local). As for combining scoped values and STS into a single builder: It doesn't seem that useful to me, because you don't just want to share the scoped values with an STS, but normal calls as well usually (at least the use cases I can think of, you would not immediately start an STS, but just call a method). However, the part where you don't have to use try-with-resources is good of course, but it is an easy to write utility (having the convenience in the JDK would be nice though of course). Eric Kolotyluk ezt ?rta (id?pont: 2023. m?j. 19., P, 1:07): > > Just some thoughts on Threads, Task, etc... please ignore if you think I am out to lunch... > > Originally, Project Loom started with the notion of Fibers, but then change the name to VirtualThreads. I liked "Fibers" but I agree that "VirtualTreads" makes more sense in some ways. > > When we talk about "Tasks" we usually think about concurrent things, where a Task is an abstract concept of concurrency and a Thread is an implementation. > > Task is what > > Thread is how > > If we changed the term "VirtualThread" to "Subthread" then there would be better symmetry with "Task" and "Subtask" but it's far too late to change the name "VirtualThread" and I am not sure if I like the term "VirtualTask" but I could live with it. > > In a way, we could create a symmetry between Task and Thread, where every Task has a Thread. Maybe this is a useless symmetry, but creating a Task does not mean you have to start the thread, just that it's the root of abstraction on concurrency, where thread is the root of implementation. > > Then comes the question of Scope... > > I proposed something like this a long time ago, but at the time people claimed this was unnecessary abstraction, and then later came Structured Concurrency... oh well... > > I have since seen discussions on StructuredTaskScope and now ScopedValue, but it's not clear to me that StructuredTaskScope implies ScopedValue? It doesn't but it can. Both StructuredTaskScope and ScopedValue are examples of dynamic scope. > > Maybe instead of saying > > try (var scope = new StructuredTaskScope()) { > > Subtask subtask1 = scope.fork(task1); > Subtask subtask2 = scope.fork(task2); > > scope.join(); > > ... process results/exceptions ... > > } // close > > we should be saying > > try (var scope = Task.StructuredScope()) { > > Subtask subtask1 = scope.fork(task1); > Subtask subtask2 = scope.fork(task2); > > scope.join(); > > ... process results/exceptions ... > > } // close > > where we have to figure out what we really mean by "Task" and "Subtask" > > Given that Subtask is a sub-interface of Supplier , maybe Task should also be a sub-interface of Supplier where C is some Collection class. This might make concurrent collection based coding more elegant, where we state our intention to 'Supply' some collection via get(). > > Where we have > > private static final ScopedValue USERNAME = ScopedValue.newInstance(); > > ScopedValue.runWhere(USERNAME, "duke", () -> { > try (var scope = new StructuredTaskScope()) { > > scope.fork(() -> childTask1()); > scope.fork(() -> childTask2()); > scope.fork(() -> childTask3()); > > ... > } > }); > > we might have > > private static final Scope.Value USERNAME = Scope.Value(); > > Scope.Value.runWhere(USERNAME, "duke", () -> { > try (var scope = new Task.StructuredScope()) { > > scope.fork(() -> childTask1()); > scope.fork(() -> childTask2()); > scope.fork(() -> childTask3()); > > ... > } > }); > > but I want to say something (not well thought out yet) like > > List results = Task.Builder(workers) > .scope.value("USERNAME", "duke") > .scope.structured( context-> { > List> subtasks > = workers.stream().map(scope::fork).toList(); > context.join() > .throwIfFailed(); // Propagate exception if any subtask fails > // Here, all tasks have succeeded, so compose their results > return subtasks.stream().map(Subtask::get).toList(); > }) > .start(); > > Where the "try" is implicitly there... where it's boilerplate I don't need to see. I am learning to appreciate the Builder Pattern a little more, and wondering if Loom could make better use of it. > > Anyway, just thinking out loud, and perhaps these discussions are better shared over beer? I know that the Scala community prefer Scotch, primarily Ardbeg, which is perhaps why Scala Architecture looks different than Java Architecture ;-) > > Again > > There are only two hard things in Computer Science: cache invalidation and naming things. > > -- Phil Karlton > > From Alan.Bateman at oracle.com Fri May 19 19:02:07 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 19 May 2023 20:02:07 +0100 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 19/05/2023 19:14, Attila Kelemen wrote: >> In the JEP, the state CANCELLED has disappeared from the possible state of Subtask ? >> I'm puzzled by this change. >> > I'm puzzled that you are puzzled :) Because you said: "I propose to > simplify the design and remove the state CANCELLED". With which I > wholeheartedly agree. > > In my opinion, this is a much cleaner design, because it leaves more > options for the STS policy to decide what is actually meant by being > cancelled. Also, conceptually simpler, because now the state of > `Subtask` represents what is actually happening rather than what was > wished from it (by a shutdown call. Also, it is of little concern to > the client of STS, because it shouldn't really based its decision on > that (since that decision should be centralized in the STS policy). The change proposed in JEP 453 is moving from Future to Subtask. Subtask does not define a cancel method, one reason for a cancelled state goes away. A second part to this is what happens when you call shutdown to short-circuit. With the JDK 19/20 API, shutdown effectively cancelled all unfinished subtasks so that Future::isCancelled returned true. It didn't storm the handleComplete method with the cancelled Futures as that wasn't too useful. With the updated API, Subtask::task reflects the state of the forked subtask, not the handle. If there are unfinished subtasks then they are interrupted (as before) and their terminal state will depend on how they react to the interrupt. The final case is forking when shutdown (at around the time that the task scope is shutdown). The JDK 19/20 API returned a cancelled Future, the updated API returns a Subtask in a "NOT_RUN" state. Same semantics, just a different state name. -Alan From holo3146 at gmail.com Fri May 19 19:16:38 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Fri, 19 May 2023 22:16:38 +0300 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: Eric, Then comes the question of Scope? I proposed something like this a long time ago, but at the time people claimed this was unnecessary abstraction I am not sure when exactly you talked about this so I don?t have a full timeline, but I talked in the mailing list of Loom and of Amber several time about the problem in Java?s current limitations of ?try-with-resources?, and I was told that there is a discussion about improving it. Having a stronger TWR mechanism that has out-of-the-box composition, and forces safe-use is a direct generalisation of an abstract Scope object. I actually thought about bringing this up again in a separate conversation when I will have a bit of free time, I think this is an extremely important tool to add to the Java ecosystem. but I want to say something (not well thought out yet) like Coincidentally, I have started working on something similar to this, but stopped because of (1) time problems and (2) fighting Java?s compiler?s plugin API wasn?t fun. My idea was that if you start a structured-task, the plugin that is shipped with the library will verify on compile time that you don?t use any scoped-variables that are not initialized. I am planning on finishing this when my current occupation will end (which will be in about 10 months unfortunately) Attila (and still Eric) It seems like both of you don?t like the TWR part, but I find it extremely nice to have, and a lot of times prefer it over a lambda argument. TWR allows us to propagate checked exceptions, which till we add union-types in generic levels is impossible to do with lambdas, and it doesn?t have the (justified) restrictions of lambdas. Scoped-concurrency are meant to be used with ?standard? Java coding-style, so the restrictions on lambdas is a big deal. I think that: var scopeBuilder = StructuredTask.ScopeBuilder() .value("USERNAME", "duke");try (var scope = scopeBuilder.build(strategy)) { ... }// alternatively var scopeBuilder = StructuredTask.ScopeBuilder(strategy) .value("USERNAME", "duke");try (var scope = scopeBuilder.start()) { ... } Is better (note that this is currently impossible because of how scopedValued are implemented. Something I talked about in this mailing-list long ago and was pushed back because Java?s TWR is not good enough to guarantee no memory leaks from mis-using ScopedValues), and to allow a different writing-style, we can add a new ?StructuredTask? implementation, of ?Stream?: var results = StructuredTask.StreamBuilder() .value("USERNAME", "duke") .flatFork(() -> Stream.of(workers)) .join() .throwIfFailed() // "StructuredTask.Stream" doesn't need a "strategy" because it exposes functions like this instead .map(Subtask::get) // "structured" comes into play here, you can't call terminating operators without first calling "join" .toList(); On Fri, May 19, 2023 at 9:33?PM Attila Kelemen wrote: > There could be some restrictions which I didn't notice, but STS takes > a `ThreadFactory`, so it is not necessarily related to virtual threads > (though I guess people will use it with virtual threads pretty much > exclusively for performance reasons). > > > ... but it's not clear to me that StructuredTaskScope implies > ScopedValue? > > Scoped values are captured by STS upon its creation and are propagated > to forked tasks. So, the "Scope" in those names are well justified > (and the normal calls naturally inherit scoped values of course like a > thread local). > > As for combining scoped values and STS into a single builder: It > doesn't seem that useful to me, because you don't just want to share > the scoped values with an STS, but normal calls as well usually (at > least the use cases I can think of, you would not immediately start an > STS, but just call a method). However, the part where you don't have > to use try-with-resources is good of course, but it is an easy to > write utility (having the convenience in the JDK would be nice though > of course). > > Eric Kolotyluk ezt ?rta (id?pont: 2023. m?j. 19., P, > 1:07): > > > > Just some thoughts on Threads, Task, etc... please ignore if you think I > am out to lunch... > > > > Originally, Project Loom started with the notion of Fibers, but then > change the name to VirtualThreads. I liked "Fibers" but I agree that > "VirtualTreads" makes more sense in some ways. > > > > When we talk about "Tasks" we usually think about concurrent things, > where a Task is an abstract concept of concurrency and a Thread is an > implementation. > > > > Task is what > > > > Thread is how > > > > If we changed the term "VirtualThread" to "Subthread" then there would > be better symmetry with "Task" and "Subtask" but it's far too late to > change the name "VirtualThread" and I am not sure if I like the term > "VirtualTask" but I could live with it. > > > > In a way, we could create a symmetry between Task and Thread, where > every Task has a Thread. Maybe this is a useless symmetry, but creating a > Task does not mean you have to start the thread, just that it's the root of > abstraction on concurrency, where thread is the root of implementation. > > > > Then comes the question of Scope... > > > > I proposed something like this a long time ago, but at the time people > claimed this was unnecessary abstraction, and then later came Structured > Concurrency... oh well... > > > > I have since seen discussions on StructuredTaskScope and now > ScopedValue, but it's not clear to me that StructuredTaskScope implies > ScopedValue? It doesn't but it can. Both StructuredTaskScope and > ScopedValue are examples of dynamic scope. > > > > Maybe instead of saying > > > > try (var scope = new StructuredTaskScope()) { > > > > Subtask subtask1 = scope.fork(task1); > > Subtask subtask2 = scope.fork(task2); > > > > scope.join(); > > > > ... process results/exceptions ... > > > > } // close > > > > we should be saying > > > > try (var scope = Task.StructuredScope()) { > > > > Subtask subtask1 = scope.fork(task1); > > Subtask subtask2 = scope.fork(task2); > > > > scope.join(); > > > > ... process results/exceptions ... > > > > } // close > > > > where we have to figure out what we really mean by "Task" and "Subtask" > > > > Given that Subtask is a sub-interface of Supplier , maybe Task should > also be a sub-interface of Supplier where C is some Collection class. > This might make concurrent collection based coding more elegant, where we > state our intention to 'Supply' some collection via get(). > > > > Where we have > > > > private static final ScopedValue USERNAME = > ScopedValue.newInstance(); > > > > ScopedValue.runWhere(USERNAME, "duke", () -> { > > try (var scope = new StructuredTaskScope()) { > > > > scope.fork(() -> childTask1()); > > scope.fork(() -> childTask2()); > > scope.fork(() -> childTask3()); > > > > ... > > } > > }); > > > > we might have > > > > private static final Scope.Value USERNAME = Scope.Value(); > > > > Scope.Value.runWhere(USERNAME, "duke", () -> { > > try (var scope = new Task.StructuredScope()) { > > > > scope.fork(() -> childTask1()); > > scope.fork(() -> childTask2()); > > scope.fork(() -> childTask3()); > > > > ... > > } > > }); > > > > but I want to say something (not well thought out yet) like > > > > List results = Task.Builder(workers) > > .scope.value("USERNAME", "duke") > > .scope.structured( context-> { > > List> subtasks > > = workers.stream().map(scope::fork).toList(); > > context.join() > > .throwIfFailed(); // Propagate exception if any subtask > fails > > // Here, all tasks have succeeded, so compose their results > > return subtasks.stream().map(Subtask::get).toList(); > > }) > > .start(); > > > > Where the "try" is implicitly there... where it's boilerplate I don't > need to see. I am learning to appreciate the Builder Pattern a little more, > and wondering if Loom could make better use of it. > > > > Anyway, just thinking out loud, and perhaps these discussions are better > shared over beer? I know that the Scala community prefer Scotch, primarily > Ardbeg, which is perhaps why Scala Architecture looks different than Java > Architecture ;-) > > > > Again > > > > There are only two hard things in Computer Science: cache invalidation > and naming things. > > > > -- Phil Karlton > > > > > -- Holo The Wise Wolf Of Yoitsu -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Fri May 19 19:43:22 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 21:43:22 +0200 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: > > Attila (and still Eric) > It seems like both of you don?t like the TWR part, but I find it extremely nice to have, and a lot of times prefer it over a lambda argument. > TWR allows us to propagate checked exceptions, which till we add union-types in generic levels is impossible to do with lambdas, and it doesn?t have the (justified) restrictions of lambdas. I'm not really against having the TWR way available as a low level construct, I just like to have these lambda blocks as utility to which you resort to (although tbh, it is a bit strange that scoped values give you lambda block only, while STS only TWR). Of course, checked exceptions are a nightmare in these constructs, and that is why I usually have `UnsafeFunction` (and its gazillion siblings) around (and I'm pretty sure there are many-many people creating their own "Unsafe" function interfaces). In an idea world we could have constructs similar to Kotlin's inline functions, which would solve this issue (fingers crossed for it :)) > > var results = StructuredTask.StreamBuilder() > .value("USERNAME", "duke") > .flatFork(() -> Stream.of(workers)) > .join() > .throwIfFailed() // "StructuredTask.Stream" doesn't need a "strategy" because it exposes functions like this instead > .map(Subtask::get) // "structured" comes into play here, you can't call terminating operators without first calling "join" > .toList(); > This could be nice actually, but I would just create something like this on top of STS, since an API like this could easily end up with unwanted limitation. If you have a working implementation of something like this, I would be curious to see it. Though I suspect an actual implementation has to go through some iterations (at least, when I'm designing APIs like this, I always have to seriously review my original idea). In this idea - for example - I can't see how you would do a conditional termination of starting new workers in a loop. For example, if this was a server waiting for TCP connections, and then it needed to fork new tasks for each incoming connection, I'm not sure how that would look. And also compare how particular cases would compare against `Stream`, because your example looks like more of a candidate of parallel `Stream`. From forax at univ-mlv.fr Fri May 19 19:51:18 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 19 May 2023 21:51:18 +0200 (CEST) Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "attila kelemen85" , "Remi Forax" > Cc: "loom-dev" > Sent: Friday, May 19, 2023 9:02:07 PM > Subject: Re: Changes to JEP 453 > On 19/05/2023 19:14, Attila Kelemen wrote: >>> In the JEP, the state CANCELLED has disappeared from the possible state of >>> Subtask ? >>> I'm puzzled by this change. >>> >> I'm puzzled that you are puzzled :) Because you said: "I propose to >> simplify the design and remove the state CANCELLED". With which I >> wholeheartedly agree. My idea was to remove the state CANCELLED when you read the state from inside handleComplete() not from outside. >> >> In my opinion, this is a much cleaner design, because it leaves more >> options for the STS policy to decide what is actually meant by being >> cancelled. Also, conceptually simpler, because now the state of >> `Subtask` represents what is actually happening rather than what was >> wished from it (by a shutdown call. Also, it is of little concern to >> the client of STS, because it shouldn't really based its decision on >> that (since that decision should be centralized in the STS policy). > > The change proposed in JEP 453 is moving from Future to Subtask. Subtask > does not define a cancel method, one reason for a cancelled state goes away. > > A second part to this is what happens when you call shutdown to > short-circuit. With the JDK 19/20 API, shutdown effectively cancelled > all unfinished subtasks so that Future::isCancelled returned true. It > didn't storm the handleComplete method with the cancelled Futures as > that wasn't too useful. With the updated API, Subtask::task reflects the > state of the forked subtask, not the handle. If there are unfinished > subtasks then they are interrupted (as before) and their terminal state > will depend on how they react to the interrupt. > > The final case is forking when shutdown (at around the time that the > task scope is shutdown). The JDK 19/20 API returned a cancelled Future, > the updated API returns a Subtask in a "NOT_RUN" state. Same semantics, > just a different state name. Okay, I think i understand the proposed change. The semantics for the JDK 19/20 has the invariant that after a call to join() the state of a Future was stable, i.e. it will never change later. Here you are breaking that invariant because a subtask with the state NOT_RUN will transition to either SUCCESS or FAILED depending how the subtask callable finished after the call to join(). So I've the follow up questions: - do we agree that handleComplete() can only be called with a task in state SUCCESS or FAILED, never with a task in state RUNNING or NOT_RUN ? - If a STS is used (but not a ShutdownOnXX), after a join(), a task state can return NOT_RUN. As a user how am i suppose to handle that case ? Do a busy loop to wait ? - If a STS is used (but not a ShutdownOnXX), do you have considered to make join() synchronous to keep the invariant (stable state after join()) ? > > -Alan R?mi From attila.kelemen85 at gmail.com Fri May 19 20:23:00 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Fri, 19 May 2023 22:23:00 +0200 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: Just to avoid misattribution, I just realized that the API sketch below in large part was written by Eric, I just got a little confused in all the text :). That said, what I wrote still stands of course, I would be curious if an API like that could be made to work. Attila Kelemen ezt ?rta (id?pont: 2023. m?j. 19., P, 21:43): > > > > > Attila (and still Eric) > > It seems like both of you don?t like the TWR part, but I find it extremely nice to have, and a lot of times prefer it over a lambda argument. > > TWR allows us to propagate checked exceptions, which till we add union-types in generic levels is impossible to do with lambdas, and it doesn?t have the (justified) restrictions of lambdas. > > I'm not really against having the TWR way available as a low level > construct, I just like to have these lambda blocks as utility to which > you resort to (although tbh, it is a bit strange that scoped values > give you lambda block only, while STS only TWR). Of course, checked > exceptions are a nightmare in these constructs, and that is why I > usually have `UnsafeFunction` (and its > gazillion siblings) around (and I'm pretty sure there are many-many > people creating their own "Unsafe" function interfaces). In an idea > world we could have constructs similar to Kotlin's inline functions, > which would solve this issue (fingers crossed for it :)) > > > > > var results = StructuredTask.StreamBuilder() > > .value("USERNAME", "duke") > > .flatFork(() -> Stream.of(workers)) > > .join() > > .throwIfFailed() // "StructuredTask.Stream" doesn't need a "strategy" because it exposes functions like this instead > > .map(Subtask::get) // "structured" comes into play here, you can't call terminating operators without first calling "join" > > .toList(); > > > > This could be nice actually, but I would just create something like > this on top of STS, since an API like this could easily end up with > unwanted limitation. If you have a working implementation of something > like this, I would be curious to see it. Though I suspect an actual > implementation has to go through some iterations (at least, when I'm > designing APIs like this, I always have to seriously review my > original idea). In this idea - for example - I can't see how you would > do a conditional termination of starting new workers in a loop. For > example, if this was a server waiting for TCP connections, and then it > needed to fork new tasks for each incoming connection, I'm not sure > how that would look. And also compare how particular cases would > compare against `Stream`, because your example looks like more of a > candidate of parallel `Stream`. From holo3146 at gmail.com Fri May 19 20:57:16 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Fri, 19 May 2023 23:57:16 +0300 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: but I would just create something like this on top of STS Definitely possible (and it is how I made my PoC), but the point I was trying to make is that there should be some base TaskScope that does not touch the other constructs and for other constructs we should use a different StructuredTask implementation. One can easily implement StructuredTask.lambdaScopedBuilder(...) (name in progress) which works as Eric?s example. Now that I re-read the mailing chain I realised that my StructuredTask.stream is not what Eric talked about, but I still stand by my point that if we add such a construct to the API, it should be separated from the ?basic? one. If you have a working implementation of something like this, I would be curious to see it Unfortunately I only have a partial implementation at the moment, and it is sitting in a closed network. I will try to get it out/rewrite it and upload it to git to share it when I can. Though I suspect an actual implementation has to go through some iterations Definitely, in the actual API I have apart from flatFork also fork (obviously), forkMulti, flatFanIn (see bellow) (I didn?t implement fanInMulti yet, but conceptually it is there, although a bit more tricky to implement because of short-circuit), exit (anly accessible after flatFanIn, you put a condition based on number of iterations and time for when to short-circuit the fanIn mod), joinAll (equivalent to the standard StructuredTaskScope), joinTillFirst (equivalent to ShutdownOnSuccess), joinTillFailure (equivalent to ShutdownOnFailure) and start (start can be called only after one of the joinX was called). After a ?start? call, you are left with a normal stream The API is certainly not perfect and is more of a PoC (e.g. it always saves the results and the exceptions in fanOut mod, and never in fanIn mod, apart maybe from the last task finished), also apart from heavy pipe-lines I prefer to not use this style of coding, so I never actually planned to promote this from PoC. To handle situations like you described I made the fanIn mod, which basically just runs repeatedly till the exit condition is met or is called to exit from one of the subtasks in creates: StructuredTask.streamBuilder() // in actuality it is not part of "StructuredTask" .flatFanIn(() -> serverSocket.accept()) .exit((count, time, absoluteTime) -> ...) // count is the number of "events" fired, "time" is time since last "event", "absoluteTime" is time since entering "fanIn" mod .fork(ctx -> ...) //in "fanIn" mod fork has a "context" of the mod, which allows an individual task to access it's `count, time, absoluteTime` as well as exiting the mod .joinAll() .start(); // empty stream, because it is fanIn mod And also compare how particular cases would compare against Stream, because your example looks like more of a candidate of parallel Stream It is a similar API to a stream, it is also structured concurrency. It also has nothing (okay, maybe not *nothing*) to do with parallel stream apart from the similar function call chaining, the semantics of ?parallel stream? in Java is that the parallelism works together in completing a transformation on the input (as evidenced by the reduceand collect methods), and in general in the Stream interface there are a lot of methods that doesn?t make sense for the StructuredTaskStream On Fri, May 19, 2023 at 10:43?PM Attila Kelemen attila.kelemen85 at gmail.com wrote: > > > Attila (and still Eric) > > It seems like both of you don?t like the TWR part, but I find it > extremely nice to have, and a lot of times prefer it over a lambda argument. > > TWR allows us to propagate checked exceptions, which till we add > union-types in generic levels is impossible to do with lambdas, and it > doesn?t have the (justified) restrictions of lambdas. > > I'm not really against having the TWR way available as a low level > construct, I just like to have these lambda blocks as utility to which > you resort to (although tbh, it is a bit strange that scoped values > give you lambda block only, while STS only TWR). Of course, checked > exceptions are a nightmare in these constructs, and that is why I > usually have `UnsafeFunction` (and its > gazillion siblings) around (and I'm pretty sure there are many-many > people creating their own "Unsafe" function interfaces). In an idea > world we could have constructs similar to Kotlin's inline functions, > which would solve this issue (fingers crossed for it :)) > > > > > var results = StructuredTask.StreamBuilder() > > .value("USERNAME", "duke") > > .flatFork(() -> Stream.of(workers)) > > .join() > > .throwIfFailed() // > "StructuredTask.Stream" doesn't need a "strategy" because it exposes > functions like this instead > > .map(Subtask::get) // "structured" > comes into play here, you can't call terminating operators without first > calling "join" > > .toList(); > > > > This could be nice actually, but I would just create something like > this on top of STS, since an API like this could easily end up with > unwanted limitation. If you have a working implementation of something > like this, I would be curious to see it. Though I suspect an actual > implementation has to go through some iterations (at least, when I'm > designing APIs like this, I always have to seriously review my > original idea). In this idea - for example - I can't see how you would > do a conditional termination of starting new workers in a loop. For > example, if this was a server waiting for TCP connections, and then it > needed to fork new tasks for each incoming connection, I'm not sure > how that would look. And also compare how particular cases would > compare against `Stream`, because your example looks like more of a > candidate of parallel `Stream`. > -- Holo The Wise Wolf Of Yoitsu -------------- next part -------------- An HTML attachment was scrubbed... URL: From ron.pressler at oracle.com Sat May 20 00:31:36 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Sat, 20 May 2023 00:31:36 +0000 Subject: Changes to JEP 453 In-Reply-To: <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <68E6D18C-4539-49D0-8EFC-CA8C03F9804D@oracle.com> > On 19 May 2023, at 20:51, forax at univ-mlv.fr wrote: > > Okay, I think i understand the proposed change. > > The semantics for the JDK 19/20 has the invariant that after a call to join() the state of a Future was stable, i.e. it will never change later. > > Here you are breaking that invariant because a subtask with the state NOT_RUN will transition to either SUCCESS or FAILED depending how the subtask callable finished after the call to join(). NOT_RUN will never be run and will never change, but RUNNING will change to SUCCESS or FAILED. > > So I've the follow up questions: > - do we agree that handleComplete() can only be called with a task in state SUCCESS or FAILED, never with a task in state RUNNING or NOT_RUN ? That?s correct. > - If a STS is used (but not a ShutdownOnXX), after a join(), a task state can return NOT_RUN. As a user how am i suppose to handle that case ? Do a busy loop to wait ? I think you mean RUNNING rather than NOT_RUN, but anyway: Structured concurrency is used when you want to treat subtasks that cooperate on a single task as a unit, not as individuals. After join you use the policy in a way that will let you know what the state of the subtasks is. For example, after throwIfFailed, all tasks have completed successfully. So if you?re even looking at what the state, you?re doing something wrong. You shouldn?t look at the state. If you?re not using a policy then you should be using a policy. If you?re an expert who knows what you're doing and choose to to ignore the recommendation of how the API should be used, then the RUNNING state after join means that the task has been cancelled, and it?s up to you what to do. In most situations you?ll probably want to ignore it; after all you shutdown the scope which means you?re not interested in the results of tasks that are still running (shutdown means: I have all the information I need to compute the scope?s result and I don?t care about the result of any further forks). If you?re doing something weird (I don?t even know what it would be) you could even call join again. But really, as a user, you shouldn?t query the state so there?s no case to handle. As far as you?re concerned, the only method on Subtask is get. That?s why the JEP recommends to assign the Subtask to a Supplier and forget it?s anything other than that. > - If a STS is used (but not a ShutdownOnXX), do you have considered to make join() synchronous to keep the invariant (stable state after join()) ? I?m not sure what that means, but I don?t think a stable state matters. First, it shouldn?t ever be queried. Seriously, don?t. We allow it to offer maximal flexibility for experts, and we may not allow it if we see it confuses people. For another, it is monotonic; the only state that could change is RUNNING, and then it can only change to SUCCESS or FAILED. So if you?re an expert who chooses to ignore the recommended use of the API, this invariant is good enough. ? Ron From Alan.Bateman at oracle.com Sat May 20 08:57:31 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sat, 20 May 2023 09:57:31 +0100 Subject: Changes to JEP 453 In-Reply-To: <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> Message-ID: On 19/05/2023 20:51, forax at univ-mlv.fr wrote: > : > My idea was to remove the state CANCELLED when you read the state from inside handleComplete() not from outside. I'm not sure that I understand this, it sounds like you are proposing there should be different views of the state, is that right? The intention with this API is that shutdown means you are done, the results from the unfinished subtasks is not interesting so cancel and get me out of here! Cancel means the unfinished subtasks are interrupted of course. Whether they complete with a result or fail will depend on timing and how they react to interrupt. It doesn't matter to the policy or the processing of results after join as that consumes the outcome of the subtasks that completed before the shutdown.? The close method has to block waiting for the stragglers so the only interesting thing may be diagnosability when stragglers are slow to finish. I don't quite see how having different views of the state help this but I may not understand what you are suggesting. > : > Okay, I think i understand the proposed change. > > The semantics for the JDK 19/20 has the invariant that after a call to join() the state of a Future was stable, i.e. it will never change later. > > Here you are breaking that invariant because a subtask with the state NOT_RUN will transition to either SUCCESS or FAILED depending how the subtask callable finished after the call to join(). The state transitions we had with Future were: RUNNING -> SUCCESS RUNNING -> FAILED RUNNING -> CANCELLED CANCELLED With Subtask right now it is: RUNNING -> SUCCESS RUNNING -> FAILED NOT_RUN so three terminal states as before. The outcome of unfinished subtasks after shutdown isn't interesting when using the API as intended. This means their state isn't going to examined, except maybe for troubleshooting purposes. If we've created an attractive nuisance then we can of course revert to reporting the state of the handle, which amounts to not revealing the internal state of the stragglers in the time between shutdown and when they finally finish. > So I've the follow up questions: > - do we agree that handleComplete() can only be called with a task in state SUCCESS or FAILED, never with a task in state RUNNING or NOT_RUN ? handleComplete is only called for subtasks in the terminal state. It's a coin toss as to whether it's interesting to invoke handleComplete for the NOT_RUN case but having handleComplete called for every fork is not an unreachable property to have. -Alan. From duke at openjdk.org Sat May 20 08:59:32 2023 From: duke at openjdk.org (duke) Date: Sat, 20 May 2023 08:59:32 GMT Subject: git: openjdk/loom: fibers: 3 new changesets Message-ID: <6e14eef6-69fb-411f-86f4-72bd648e335e@openjdk.org> Changeset: 1cea454b Author: Alan Bateman Date: 2023-05-20 09:11:46 +0000 URL: https://git.openjdk.org/loom/commit/1cea454b34f6e56c09127ff570a96b16fd66fdda Fix links and misc. cleanup ! src/java.base/share/classes/java/lang/ScopedValue.java Changeset: c939e7c9 Author: Alan Bateman Date: 2023-05-20 09:12:04 +0000 URL: https://git.openjdk.org/loom/commit/c939e7c9518719b1efdfe245e0f8c3ec2b0925f7 Fix typo ! src/jdk.management/share/classes/com/sun/management/Threads.java Changeset: 2c22a392 Author: Alan Bateman Date: 2023-05-20 09:25:55 +0000 URL: https://git.openjdk.org/loom/commit/2c22a392be54945e528802f133782de6a292dbac Rename to NOT_RUN state ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java ! test/jdk/java/util/concurrent/StructuredTaskScope/WithScopedValue.java From attila.kelemen85 at gmail.com Sat May 20 10:48:09 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Sat, 20 May 2023 12:48:09 +0200 Subject: Changes to JEP 453 In-Reply-To: <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > - If a STS is used (but not a ShutdownOnXX), after a join(), a task state can return NOT_RUN. As a user how am i suppose to handle that case ? Do a busy loop to wait ? I will assume you meant RUNNING instead of NOT_RUN, but I was thinking of the usefulness of the RUNNING state as well (obviously busy wait is a no go). However, I realized that it can actually be used by a custom STS implementation, because then a custom policy implementation is able to wait for the actual termination of the forked `Cancelable`. The wait it can do this is the following: 1. Override fork, and do something like this there: ``` var endSignal = new CountdownLatch(1); var subtask = super.fork(() -> { try { return task.call(); } finally { endSignal.countDown(); } }); if (subtask.state() == Subtask.State.NOT_RUN) { endSignal.countDown(); } // At this point `endSignal` is ensured to eventually complete, // so the policy can use it however it wants. return subtask; ``` From danielaveryj at gmail.com Sat May 20 11:36:16 2023 From: danielaveryj at gmail.com (Daniel Avery) Date: Sat, 20 May 2023 07:36:16 -0400 Subject: Changes to JEP 453 Message-ID: Naming is hard. To avoid some confusion about whether NOT_RUN tasks may eventually run, maybe NOT_RUN -> REJECTED? -Daniel -------------- next part -------------- An HTML attachment was scrubbed... URL: From forax at univ-mlv.fr Sat May 20 12:47:32 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sat, 20 May 2023 14:47:32 +0200 (CEST) Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1759289686.59477671.1684586852143.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Alan Bateman" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Saturday, May 20, 2023 10:57:31 AM > Subject: Re: Changes to JEP 453 > On 19/05/2023 20:51, forax at univ-mlv.fr wrote: >> : >> My idea was to remove the state CANCELLED when you read the state from inside >> handleComplete() not from outside. > I'm not sure that I understand this, it sounds like you are proposing > there should be different views of the state, is that right? > > The intention with this API is that shutdown means you are done, the > results from the unfinished subtasks is not interesting so cancel and > get me out of here! Cancel means the unfinished subtasks are interrupted > of course. Whether they complete with a result or fail will depend on > timing and how they react to interrupt. It doesn't matter to the policy > or the processing of results after join as that consumes the outcome of > the subtasks that completed before the shutdown.? The close method has > to block waiting for the stragglers so the only interesting thing may be > diagnosability when stragglers are slow to finish. I don't quite see how > having different views of the state help this but I may not understand > what you are suggesting. The interface Subtask is used differently inside handleComplete() and outside handleComplete(). inside handleComplete() | outside handleComplete() state() RUNNING, SUCCESS, FAILED, NOT_RUN | SUCESS, FAILED get() ISE thrown should wrap failure exception | ISE thrown should not wrap exception() yes | No, should not be called and i've no idea when using task(). > >> : >> Okay, I think i understand the proposed change. >> >> The semantics for the JDK 19/20 has the invariant that after a call to join() >> the state of a Future was stable, i.e. it will never change later. >> >> Here you are breaking that invariant because a subtask with the state NOT_RUN >> will transition to either SUCCESS or FAILED depending how the subtask callable >> finished after the call to join(). > > The state transitions we had with Future were: > > RUNNING -> SUCCESS > RUNNING -> FAILED > RUNNING -> CANCELLED > CANCELLED > > With Subtask right now it is: > > RUNNING -> SUCCESS > RUNNING -> FAILED > NOT_RUN > > so three terminal states as before. ok, thanks, i think i'm starting to slowly understand how it works. i was thinking that the transitions NOT_RUN -> SUCCESS, NOT_RUN -> FAILED were possible. So NOT_RUN is when a task was not run *and* never will. > > The outcome of unfinished subtasks after shutdown isn't interesting when > using the API as intended. This means their state isn't going to > examined, except maybe for troubleshooting purposes. If we've created an > attractive nuisance then we can of course revert to reporting the state > of the handle, which amounts to not revealing the internal state of the > stragglers in the time between shutdown and when they finally finish. To me, reporting the state of the task instead of the state of the handle is a better API from the user POV. So it's going in the right direction :) > > -Alan. R?mi From forax at univ-mlv.fr Sat May 20 12:49:07 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sat, 20 May 2023 14:49:07 +0200 (CEST) Subject: Changes to JEP 453 In-Reply-To: <68E6D18C-4539-49D0-8EFC-CA8C03F9804D@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> <68E6D18C-4539-49D0-8EFC-CA8C03F9804D@oracle.com> Message-ID: <1371531004.59478257.1684586947381.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "Alan Bateman" , "attila kelemen85" , "loom-dev" > > Sent: Saturday, May 20, 2023 2:31:36 AM > Subject: Re: Changes to JEP 453 >> On 19 May 2023, at 20:51, forax at univ-mlv.fr wrote: >> >> Okay, I think i understand the proposed change. >> >> The semantics for the JDK 19/20 has the invariant that after a call to join() >> the state of a Future was stable, i.e. it will never change later. >> >> Here you are breaking that invariant because a subtask with the state NOT_RUN >> will transition to either SUCCESS or FAILED depending how the subtask callable >> finished after the call to join(). > > NOT_RUN will never be run and will never change, but RUNNING will change to > SUCCESS or FAILED. Ok, thanks. I was confused. R?mi From ron.pressler at oracle.com Sat May 20 12:58:44 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Sat, 20 May 2023 12:58:44 +0000 Subject: Changes to JEP 453 In-Reply-To: <1759289686.59477671.1684586852143.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <686943484.58689057.1684502660192.JavaMail.zimbra@univ-eiffel.fr> <951128189.59217210.1684525878273.JavaMail.zimbra@univ-eiffel.fr> <1759289686.59477671.1684586852143.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > On 20 May 2023, at 13:47, forax at univ-mlv.fr wrote: > > get() ISE thrown should wrap failure exception | ISE thrown should not wrap get can only ever throw an exception if there?s a bug in the code calling it due to incorrect usage of the API. It is not possible for get to throw if STS is used correctly. There is no reasonable way to handle such an exception other than fix the (simple) bug that must exist in the code if that exception is ever encountered. ? Ron From duke at openjdk.org Mon May 22 07:15:32 2023 From: duke at openjdk.org (duke) Date: Mon, 22 May 2023 07:15:32 GMT Subject: git: openjdk/loom: jom-master: Nanos to millis conversion could yield 0 which triggered assert in updated unsafe code - so switched to new park_nanos method. Message-ID: <02e95dbc-cada-4adb-8c87-b5932ff8a196@openjdk.org> Changeset: c1af4549 Author: David Holmes Date: 2023-05-22 03:11:16 +0000 URL: https://git.openjdk.org/loom/commit/c1af4549765aedb8fd2fc44c12c7f4ea8e128f1c Nanos to millis conversion could yield 0 which triggered assert in updated unsafe code - so switched to new park_nanos method. ! src/hotspot/share/prims/unsafe.cpp From duke at openjdk.org Mon May 22 07:19:21 2023 From: duke at openjdk.org (duke) Date: Mon, 22 May 2023 07:19:21 GMT Subject: git: openjdk/loom: jom-master: 2 new changesets Message-ID: <269d146f-15cc-4120-aa01-b76f68c2cd86@openjdk.org> Changeset: e3d37721 Author: David Holmes Date: 2023-05-22 03:14:39 +0000 URL: https://git.openjdk.org/loom/commit/e3d3772136c920644a2737fac904e5117863aea5 Updated jcheck/conf file suitable for Loom repo development. ! .jcheck/conf Changeset: c700bbd3 Author: David Holmes Date: 2023-05-22 03:17:48 +0000 URL: https://git.openjdk.org/loom/commit/c700bbd332c69c73dc3cb435996c401a5e96f99f Merge branch 'jom-master' of github.com:dholmes-ora/loom into jom-master From duke at openjdk.org Mon May 22 18:50:31 2023 From: duke at openjdk.org (duke) Date: Mon, 22 May 2023 18:50:31 GMT Subject: git: openjdk/loom: fibers: 3 new changesets Message-ID: Changeset: f2493bc5 Author: Alan Bateman Date: 2023-05-21 15:10:11 +0000 URL: https://git.openjdk.org/loom/commit/f2493bc5994051bba0f3dba09fdf5f1e76935be5 Fix link ! src/java.base/share/classes/java/lang/ScopedValue.java Changeset: 11ffe276 Author: Alan Bateman Date: 2023-05-21 15:21:09 +0000 URL: https://git.openjdk.org/loom/commit/11ffe2760613a44f9ffe0663a85b214aebfb16ba Update copyright header ! src/java.base/share/classes/java/util/concurrent/StructureViolationException.java Changeset: 1c84a071 Author: Alan Bateman Date: 2023-05-22 19:43:26 +0000 URL: https://git.openjdk.org/loom/commit/1c84a07124a4120206e87b88c2d43858d3bb3a4f Undo ! src/java.base/share/classes/java/lang/ScopedValue.java From duke at openjdk.org Tue May 23 11:47:05 2023 From: duke at openjdk.org (duke) Date: Tue, 23 May 2023 11:47:05 GMT Subject: git: openjdk/loom: fibers: Replace RUNNING/NOT_RUN with UNAVAILABLE Message-ID: <30cecf04-f268-4a0b-b3db-ba0e14d8effc@openjdk.org> Changeset: e097cdb0 Author: Alan Bateman Date: 2023-05-23 12:06:31 +0000 URL: https://git.openjdk.org/loom/commit/e097cdb0fbcdea60465894f2b6f287b6af5ce20a Replace RUNNING/NOT_RUN with UNAVAILABLE ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java ! test/jdk/java/util/concurrent/StructuredTaskScope/WithScopedValue.java From ron.pressler at oracle.com Tue May 23 13:05:11 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Tue, 23 May 2023 13:05:11 +0000 Subject: Changes to JEP 453 In-Reply-To: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> Hi. The ensuing discussion has led us to another change of heart, as many of the cases that were brought up were about uses of StructuredTaskScope in ways for which it wasn't intended. Since STS is the first explicit introduction of structured concurrency to the JDK, we feel it is important to steer users to its intended use. In particular, when tracking the state of individual forks, we should report the state *only insofar as the scope should be concerned*. The scope treats the forks as a unit and must not concern itself with forks that cannot contribute to the scope's own outcome. The scope, preferably through a subclass implementing a shutdown policy, should describe how the forks' outcomes are composed to produce the scope's outcome but should show no further interest in the outcome of the individual forks. The code inside the scope's block performs not only the joining and handling of results, but also the forking, and so manipulating individual forks through functional composition (i.e. by wrapping the forked subtask) is always possible, and is an appropriate use of the API. Therefore: 1. A call to shutdown indicates that the scope has no interest in further results. Consequently, handleComplete will not be called for tasks that have not completed before shutdown (including tasks that were forked after shutdown); as before, handleComplete will only be called for forks in the SUCCESS/FAILED state. Tracking the state of individual forks following a shutdown for observability purposes (such as logging) should be done in the fork itself (this is always possible through functional composition). 2. While we recommend using a shutdown policy, we (still) don't require one. When a policy isn't used, the purpose of Subtask.state() is only to indicate whether it is legal to call Subtask.get() xor Subtask.exception(), and so Subtask.State now has only three values: SUCCESS (get() will return successfully), FAILED (exception() will return successfully), and UNAVAILABLE (neither method may be called). The UNAVAILABLE state indicates one of the following: 1. the subtask was forked but has not yet completed, 2. the subtask completed after shutdown, 3. the subtask was forked after shutdown and has therefore not started. An UNAVAILABLE state may or may not change to SUCCESS/FAILED (in practice, it will not change after join completes *normally*). As for exceptions, an exception in any fork may either contribute to the scope's ultimate failed outcome (as in the case of ShutdownOnFailure and ShutdownOnSuccess) or be turned into a value that will be composed into the result (as in the runAll example in the JEP). In the latter case, the intent of "I want to use the exception of this fork as a value", should be expressed by returning that exception from the fork rather than by throwing it; a fork that contributes positively to the scope's successful result is, after all, a successful fork. Even with some exception transparency mechanism (including as a future language feature), the type of an individual fork's exception could only matter only in that latter case, and then its type could be expressed through the existing single type parameter (fork's U / Subtask's T). The JEP and the Javadoc now reflect these changes. We may rename Subtask yet again before this JEP is targeted. -- Ron > On 18 May 2023, at 19:59, Ron Pressler wrote: > > Hi. > > We have made several changes to structured concurrency (JEP 453) due to feedback: > > 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename :) > > 2. We've fixed the generic signature of handleComplete (thank you R?mi for pointing out the mistake) > > 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks that are forked after `shutdown` is called will have the `STILLBORN` state. Running subtasks will be interrupted, but the state of their `Subtask` will remain `RUNNING` until completed, probably sometime after `join` has returned, because `join` returns immediately when `shutdown` is called. When completed, their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the task itself, not of the handle. > > 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() method that returns a string with the description of the current structured context -- i.e. the stack trace for the current thread and the enclosing scopes with their owners' respective stack traces -- all the way up the hierarchy. > > https://openjdk.org/jeps/453 > > > -- Ron > From forax at univ-mlv.fr Tue May 23 14:03:32 2023 From: forax at univ-mlv.fr (Remi Forax) Date: Tue, 23 May 2023 16:03:32 +0200 (CEST) Subject: Changes to JEP 453 In-Reply-To: <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> Message-ID: <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "loom-dev" > Sent: Tuesday, May 23, 2023 3:05:11 PM > Subject: Re: Changes to JEP 453 > Hi. > > The ensuing discussion has led us to another change of heart, as many of the > cases that were brought up were about uses of StructuredTaskScope in ways for > which it wasn't intended. Since STS is the first explicit introduction of > structured concurrency to the JDK, we feel it is important to steer users to > its intended use. In particular, when tracking the state of individual forks, > we should report the state *only insofar as the scope should be concerned*. > > The scope treats the forks as a unit and must not concern itself with forks that > cannot contribute to the scope's own outcome. The scope, preferably through a > subclass implementing a shutdown policy, should describe how the forks' > outcomes are composed to produce the scope's outcome but should show no further > interest in the outcome of the individual forks. The code inside the scope's > block performs not only the joining and handling of results, but also the > forking, and so manipulating individual forks through functional composition > (i.e. by wrapping the forked subtask) is always possible, and is an appropriate > use of the API. Therefore: > > 1. A call to shutdown indicates that the scope has no interest in further > results. Consequently, handleComplete will not be called for tasks that have > not completed before shutdown (including tasks that were forked after > shutdown); as before, handleComplete will only be called for forks in the > SUCCESS/FAILED state. Tracking the state of individual forks following a > shutdown for observability purposes (such as logging) should be done in the > fork itself (this is always possible through functional composition). Good idea ! > > 2. While we recommend using a shutdown policy, we (still) don't require one. > When a policy isn't used, the purpose of Subtask.state() is only to indicate > whether it is legal to call Subtask.get() xor Subtask.exception(), and so > Subtask.State now has only three values: SUCCESS (get() will return > successfully), FAILED (exception() will return successfully), and UNAVAILABLE > (neither method may be called). The UNAVAILABLE state indicates one of the > following: 1. the subtask was forked but has not yet completed, 2. the subtask > completed after shutdown, 3. the subtask was forked after shutdown and has > therefore not started. An UNAVAILABLE state may or may not change to > SUCCESS/FAILED (in practice, it will not change after join completes > *normally*). merging RUNNING and NOT_RUN into UNAVAILABLE is a good idea too. > > As for exceptions, an exception in any fork may either contribute to the scope's > ultimate failed outcome (as in the case of ShutdownOnFailure and > ShutdownOnSuccess) or be turned into a value that will be composed into the > result (as in the runAll example in the JEP). In the latter case, the intent of > "I want to use the exception of this fork as a value", should be expressed by > returning that exception from the fork rather than by throwing it; a fork that > contributes positively to the scope's successful result is, after all, a > successful fork. Even with some exception transparency mechanism (including as > a future language feature), the type of an individual fork's exception could > only matter only in that latter case, and then its type could be expressed > through the existing single type parameter (fork's U / Subtask's T). And here i disagree :) If a STS has no a shutdown policy, I believe there is a missing method "result" in SubTask that works like ShutdownOnSucess.result(). It may either return a result (SUCCESS), throw an ExceptionException (FAILED) or throw UnavailableException (UNAVAILABLE). Obviously, this method can be written with the current API (state() + get() or exception()) but it will be very convenient to have it, and unify how the different STSs work. Exception transparency is orthogonal to a specific policy (or no policy), it's a way to avoid exception erasure (exception seen as a Throwable) and its wrapping into ExecutionException. The wrapping into ExecutionException is quite bad because make the composition of several STSs awkward because the type of the lambda submitted to a fork and the type of exception thrown by the method containing the try-with-resources with a STS are not the same. Exception transparency is a way to replace the wrapping ExceptionException by a more precise exception tracked by the type system enabling easier composition. > > The JEP and the Javadoc now reflect these changes. > > We may rename Subtask yet again before this JEP is targeted. > > -- Ron regards, R?mi > > >> On 18 May 2023, at 19:59, Ron Pressler wrote: >> >> Hi. >> >> We have made several changes to structured concurrency (JEP 453) due to >> feedback: >> >> 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the last rename >> :) >> >> 2. We've fixed the generic signature of handleComplete (thank you R?mi for >> pointing out the mistake) >> >> 3. We've changed the states and behaviour of subtasks on cancellation. Subtasks >> that are forked after `shutdown` is called will have the `STILLBORN` state. >> Running subtasks will be interrupted, but the state of their `Subtask` will >> remain `RUNNING` until completed, probably sometime after `join` has returned, >> because `join` returns immediately when `shutdown` is called. When completed, >> their `Subtasks` will be passed to `handleComplete`, either in the `FAILED` or >> `SUCCESS` state. I.e., Unlike `Future`, the state reflects the state of the >> task itself, not of the handle. >> >> 4. We've added the com.sun.management.Threads.currentThreadEnclosingScopes() >> method that returns a string with the description of the current structured >> context -- i.e. the stack trace for the current thread and the enclosing scopes >> with their owners' respective stack traces -- all the way up the hierarchy. >> >> https://openjdk.org/jeps/453 >> >> >> -- Ron From attila.kelemen85 at gmail.com Tue May 23 14:07:36 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 23 May 2023 16:07:36 +0200 Subject: ScopedValue: Capturing current bindings Message-ID: I was contemplating on a dependency injection framework built on scoped values. For the sake of simplicity, I will make it trivial and unoptimized here. Consider the following as our mini limited DI framework: ``` ScopedValue, Supplier>> FACTORIES = ScopedValue.newInstance(); void withBinding( Class type, Supplier supplier, Runnable task ) { var prevValue = FACTORIES.orElse(Collections.emptyMap()); var newValue = new HashMap<>(prevValue); newValue.put(type, supplier); ScopedValue.where(FACTORIES, newValue, task); } T getByType(Class type) { Supplier provider = FACTORIES .orElse(Collections.emptyMap()) .get(type); if (provider == null) { throw new IllegalStateException(); } return type.cast(provider.get()); } ``` A trivial use of such framework would look like this: ``` withBinding(String.class, () -> "Hello!", () -> { System.out.println(getByType(String.class)); }); ``` This would print "Hello!" as expected. However, consider the following case: ``` ScopedValue testValue = ScopedValue.newInstance(); ScopedValue.where(testValue, "OuterValue", () -> { withBinding(String.class, testValue::get, () -> { ScopedValue.where(testValue, "InnerValue", () -> { System.out.println(getByType(String.class)); }); }); }); ``` While we would normally expect the injection to be uninfluenced by the calling context (especially, since you could even use this for lazy singletons). However, the above would obviously print "InnerValue", even though that was not the case when calling `withBinding`. This is because we can't capture the bindings (at least I don't know a way). Not even StructuredTaskScope can be (ab)used for this, because it would (rightfully) refuse the `fork`, if the current scoped value context changed. What I wish for is a way to capture the current scoped values, and later execute code with the captured scoped values. For example, we could have a `ScopedValues.withCurrentContext(Consumer)` (or similar , variants), where `CapturedScopedValueContext` could look like this (simplified for clarity): ``` interface CapturedScopedValueContext { T inContext(Callable task); } ``` in which case, now we could create our safe `withBinding` variant relying on the current unsafe version: ``` void withBindingSafe( Class type, Supplier supplier, Runnable task ) { ScopedValues.withCurrentContext(context -> { withBinding(type, () -> context.inContext(supplier::get), task); }); } ``` Replacing `withBinding` with `withBindingSafe` in our "complicated" use-case, we would receive "OuterValue" as intended. I hope we can have something like this or similar feature (obviously not in JDK 21) enabling this use-case. Attila From holo3146 at gmail.com Tue May 23 14:09:11 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Tue, 23 May 2023 17:09:11 +0300 Subject: Changes to JEP 453 In-Reply-To: <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> Message-ID: It is very nice to hear these news. I have 2 follow up questions: 1. Does there exists a/is the common scenario one such that handleComplete handle both FAILED and SUCCESS in a uniform way? I think that most implementations will look like: if (handle.state() == SUCCESS) handleSuccess(handle, handle.get()); else handleFailure(handle, handle.exception()); So why not split handleComplete into 2 functions in the base STS already? 2. I'm just making sure I understood the last point correctly as English is not my native language, you are saying that if I want to treat exceptions in the (sub)task as a successful state my STS should be of type Result (and variants)? Cheers, Yuval Paz On Tue, May 23, 2023, 16:05 Ron Pressler wrote: > Hi. > > The ensuing discussion has led us to another change of heart, as many of > the cases that were brought up were about uses of StructuredTaskScope in > ways for which it wasn't intended. Since STS is the first explicit > introduction of structured concurrency to the JDK, we feel it is important > to steer users to its intended use. In particular, when tracking the state > of individual forks, we should report the state *only insofar as the scope > should be concerned*. > > The scope treats the forks as a unit and must not concern itself with > forks that cannot contribute to the scope's own outcome. The scope, > preferably through a subclass implementing a shutdown policy, should > describe how the forks' outcomes are composed to produce the scope's > outcome but should show no further interest in the outcome of the > individual forks. The code inside the scope's block performs not only the > joining and handling of results, but also the forking, and so manipulating > individual forks through functional composition (i.e. by wrapping the > forked subtask) is always possible, and is an appropriate use of the API. > Therefore: > > 1. A call to shutdown indicates that the scope has no interest in further > results. Consequently, handleComplete will not be called for tasks that > have not completed before shutdown (including tasks that were forked after > shutdown); as before, handleComplete will only be called for forks in the > SUCCESS/FAILED state. Tracking the state of individual forks following a > shutdown for observability purposes (such as logging) should be done in the > fork itself (this is always possible through functional composition). > > 2. While we recommend using a shutdown policy, we (still) don't require > one. When a policy isn't used, the purpose of Subtask.state() is only to > indicate whether it is legal to call Subtask.get() xor Subtask.exception(), > and so Subtask.State now has only three values: SUCCESS (get() will return > successfully), FAILED (exception() will return successfully), and > UNAVAILABLE (neither method may be called). The UNAVAILABLE state indicates > one of the following: 1. the subtask was forked but has not yet completed, > 2. the subtask completed after shutdown, 3. the subtask was forked after > shutdown and has therefore not started. An UNAVAILABLE state may or may not > change to SUCCESS/FAILED (in practice, it will not change after join > completes *normally*). > > As for exceptions, an exception in any fork may either contribute to the > scope's ultimate failed outcome (as in the case of ShutdownOnFailure and > ShutdownOnSuccess) or be turned into a value that will be composed into the > result (as in the runAll example in the JEP). In the latter case, the > intent of "I want to use the exception of this fork as a value", should be > expressed by returning that exception from the fork rather than by throwing > it; a fork that contributes positively to the scope's successful result is, > after all, a successful fork. Even with some exception transparency > mechanism (including as a future language feature), the type of an > individual fork's exception could only matter only in that latter case, and > then its type could be expressed through the existing single type parameter > (fork's U / Subtask's T). > > The JEP and the Javadoc now reflect these changes. > > We may rename Subtask yet again before this JEP is targeted. > > -- Ron > > > > On 18 May 2023, at 19:59, Ron Pressler wrote: > > > > Hi. > > > > We have made several changes to structured concurrency (JEP 453) due to > feedback: > > > > 1. We've renamed `TaskHandle` to `Subtask`. I can't promise it's the > last rename :) > > > > 2. We've fixed the generic signature of handleComplete (thank you R?mi > for pointing out the mistake) > > > > 3. We've changed the states and behaviour of subtasks on cancellation. > Subtasks that are forked after `shutdown` is called will have the > `STILLBORN` state. Running subtasks will be interrupted, but the state of > their `Subtask` will remain `RUNNING` until completed, probably sometime > after `join` has returned, because `join` returns immediately when > `shutdown` is called. When completed, their `Subtasks` will be passed to > `handleComplete`, either in the `FAILED` or `SUCCESS` state. I.e., Unlike > `Future`, the state reflects the state of the task itself, not of the > handle. > > > > 4. We've added the > com.sun.management.Threads.currentThreadEnclosingScopes() method that > returns a string with the description of the current structured context -- > i.e. the stack trace for the current thread and the enclosing scopes with > their owners' respective stack traces -- all the way up the hierarchy. > > > > https://openjdk.org/jeps/453 > > > > > > -- Ron > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From holo3146 at gmail.com Tue May 23 14:37:03 2023 From: holo3146 at gmail.com (Holo The Sage Wolf) Date: Tue, 23 May 2023 17:37:03 +0300 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: What you are trying to do is possible to implement, albeit a bit convoluted and wasteful. Ignoring all of the details, conceptually ScopedValues are made out of 2 parts: - The instances - The bindings You create instances, bind them to values, and run some code under the spe cific bindings. So to get the functionality you are looking for you need to wrap the SV instances with your own object "AwareScopedValue", ASV will hold onto a list of SV, when you bind a new value you can either override the top SV, or create a new SV and put it on the top of the stack. When binding a ASV you simply bind all of the SV. When trying to get value from it, you can choose from which layer to take. --- But I'm not sure you really need this functionality, having a public SV is just begging for problems so *any* use of SV should be transparent to the user, and inside of your own library/framework you can make sure that are no double-bindings, and if you need several layers of bindings, then your use case is not what a single SV is meant to handle. Cheers, Yuval Paz On Tue, May 23, 2023, 17:07 Attila Kelemen wrote: > I was contemplating on a dependency injection framework built on > scoped values. For the sake of simplicity, I will make it trivial and > unoptimized here. Consider the following as our mini limited DI > framework: > > ``` > ScopedValue, Supplier>> FACTORIES > = ScopedValue.newInstance(); > > void withBinding( > Class type, > Supplier supplier, > Runnable task > ) { > var prevValue = FACTORIES.orElse(Collections.emptyMap()); > var newValue = new HashMap<>(prevValue); > newValue.put(type, supplier); > > ScopedValue.where(FACTORIES, newValue, task); > } > > T getByType(Class type) { > Supplier provider = FACTORIES > .orElse(Collections.emptyMap()) > .get(type); > if (provider == null) { > throw new IllegalStateException(); > } > return type.cast(provider.get()); > } > ``` > > A trivial use of such framework would look like this: > > ``` > withBinding(String.class, () -> "Hello!", () -> { > System.out.println(getByType(String.class)); > }); > ``` > > This would print "Hello!" as expected. However, consider the following > case: > > ``` > ScopedValue testValue = ScopedValue.newInstance(); > > ScopedValue.where(testValue, "OuterValue", () -> { > withBinding(String.class, testValue::get, () -> { > ScopedValue.where(testValue, "InnerValue", () -> { > System.out.println(getByType(String.class)); > }); > }); > }); > ``` > > While we would normally expect the injection to be uninfluenced by the > calling context (especially, since you could even use this for lazy > singletons). However, the above would obviously print "InnerValue", > even though that was not the case when calling `withBinding`. > > This is because we can't capture the bindings (at least I don't know a > way). Not even StructuredTaskScope can be (ab)used for this, because > it would (rightfully) refuse the `fork`, if the current scoped value > context changed. > > What I wish for is a way to capture the current scoped values, and > later execute code with the captured scoped values. For example, we > could have a > `ScopedValues.withCurrentContext(Consumer)` > (or similar , variants), where `CapturedScopedValueContext` could look > like this (simplified for clarity): > > ``` > interface CapturedScopedValueContext { > T inContext(Callable task); > } > ``` > > in which case, now we could create our safe `withBinding` variant > relying on the current unsafe version: > > ``` > void withBindingSafe( > Class type, > Supplier supplier, > Runnable task > ) { > ScopedValues.withCurrentContext(context -> { > withBinding(type, () -> context.inContext(supplier::get), task); > }); > } > ``` > > Replacing `withBinding` with `withBindingSafe` in our "complicated" > use-case, we would receive "OuterValue" as intended. > > I hope we can have something like this or similar feature (obviously > not in JDK 21) enabling this use-case. > > Attila > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ron.pressler at oracle.com Tue May 23 16:02:47 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Tue, 23 May 2023 16:02:47 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <07B51851-E19C-485B-A997-91E557504544@oracle.com> > On 23 May 2023, at 15:03, Remi Forax wrote: > > If a STS has no a shutdown policy, I believe there is a missing method "result" in SubTask that works like ShutdownOnSucess.result(). > It may either return a result (SUCCESS), throw an ExceptionException (FAILED) or throw UnavailableException (UNAVAILABLE). > Obviously, this method can be written with the current API (state() + get() or exception()) but it will be very convenient to have it, and unify how the different STSs work. First, if there?s no policy, then we?re either dealing with an advanced user or a very simple use case, but off the bat we?re dealing with the more exceptional situation (we may require a policy after the first preview). Second, the very use case you?re describing is not the one we?d like to encourage. If the exception is part of a successful result it should be returned, not thrown, and if it isn?t, it belongs in the phase where the scope (even without a policy) decides what its own state is. Separating successes from failures is good. > > Exception transparency is orthogonal to a specific policy (or no policy), it's a way to avoid exception erasure (exception seen as a Throwable) and its wrapping into ExecutionException. > The wrapping into ExecutionException is quite bad because make the composition of several STSs awkward because the type of the lambda submitted to a fork and the type of exception thrown by the method containing the try-with-resources with a STS are not the same. > > Exception transparency is a way to replace the wrapping ExceptionException by a more precise exception tracked by the type system enabling easier composition. I?m confused here. An STS is used when we want to treat multiple subtasks as a unit. If the scope fails, then it fails because its policy (whether implemented as an actual subclass of STS or inline without a subclass) decides it should fail, its exception should not be any of its forks exception, and at the very least should be wrapped to include the owner thread?s stack dump. All the things you?re mentioning are there by design to support the particular use of STS. In particular, that the type of exception thrown by the fork and that the type of exception thrown by some result composition method are not the same is intentional; even if we had exception transparency, we wouldn't want it here, because it?s not supposed to be the same exception type (and it?s supposed to be an exception generated by the scope?s owner thread). It also couldn?t be the same exception type: What exception should, say, SoS.result throw if, out of five forks, three forks throw IOException and the two others throw some RuntimeException? If you care about handling a particular exception type in a particular fork differently from other types, that code belongs inside the fork, because that?s where its individuality is retained. So you?d do something like: scope.fork(() -> { try { return foo(); } catch (IOException ex) { return null; }}); Now, if you get an ExecutionException, that means that the scope has failed to yield a result, and is supposed to not say anything about the forks. But if for some reason or another you wish to explore the cause of the exception further, then future enhancements to pattern matching could help; e.g. we may have `catch (ExecutionExeption(IOException ex)) { ? }`. Of course you?re also free to create any exception you like in the catch block and rethrow that. SoF.throwIfFailed, and SoS.result have variants that allow you to manipulate the type of exception thrown by the scope if you don?t like ExecutionError. ? Ron From danielaveryj at gmail.com Tue May 23 16:09:56 2023 From: danielaveryj at gmail.com (Daniel Avery) Date: Tue, 23 May 2023 12:09:56 -0400 Subject: ScopedValue: Capturing current bindings Message-ID: Would it not be sufficient to use a local variable to capture the current binding? ``` ScopedValue testValue = ScopedValue.newInstance(); ScopedValue.where(testValue, "OuterValue", () -> { String value = testValue.get(); withBinding(String.class, () -> value, () -> { ScopedValue.where(testValue, "InnerValue", () -> { System.out.println(getByType(String.class)); }); }); }); ``` - Daniel -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Tue May 23 16:33:42 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 23 May 2023 18:33:42 +0200 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: Holo The Sage Wolf ezt ?rta (id?pont: 2023. m?j. 23., K, 16:37): > > What you are trying to do is possible to implement, albeit a bit convoluted and wasteful. > > Ignoring all of the details, conceptually ScopedValues are made out of 2 parts: > > - The instances > - The bindings > > You create instances, bind them to values, and run some code under the spe cific bindings. > > So to get the functionality you are looking for you need to wrap the SV instances with your own object "AwareScopedValue", ASV will hold onto a list of SV, when you bind a new value you can either override the top SV, or create a new SV and put it on the top of the stack. > > When binding a ASV you simply bind all of the SV. > > When trying to get value from it, you can choose from which layer to take. I don't think what you are describing is possible, because I don't know all the scoped value bindings available (that is, it is unknown to the DI framework). > > But I'm not sure you really need this functionality, having a public SV is just begging for problems so *any* use of SV should be transparent to the user, and inside of your own library/framework you can make sure that are no double-bindings, and if you need several layers of bindings, then your use case is not what a single SV is meant to handle. > I don't need a public SV of course. I don't know what exactly you are referring to. Also, it is possible to handle it I believe with a single SV. Either I would create a linked list of the layers of bindings, or I just copy the underlying map with updated entries (which is actually possible to do in O(1) with appropriate map implementation). From attila.kelemen85 at gmail.com Tue May 23 16:36:47 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 23 May 2023 18:36:47 +0200 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: My point is that the factory providing the value is provided by the client of the DI framework, thus it can have access to scoped values. For instance, it might want to retrieve the value for another binding. However, the framework must prevent the problem that the calling context would change the scope. Daniel Avery ezt ?rta (id?pont: 2023. m?j. 23., K, 18:10): > > Would it not be sufficient to use a local variable to capture the current binding? > > ``` > ScopedValue testValue = ScopedValue.newInstance(); > > ScopedValue.where(testValue, "OuterValue", () -> { > String value = testValue.get(); > withBinding(String.class, () -> value, () -> { > ScopedValue.where(testValue, "InnerValue", () -> { > System.out.println(getByType(String.class)); > }); > }); > }); > ``` > > - Daniel From attila.kelemen85 at gmail.com Tue May 23 16:44:16 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 23 May 2023 18:44:16 +0200 Subject: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> Message-ID: > I think that most implementations will look like: > > if (handle.state() == SUCCESS) handleSuccess(handle, handle.get()); > else handleFailure(handle, handle.exception()); > > So why not split handleComplete into 2 functions in the base STS already? > I completely agree with this. An additional benefit would be that in this case you don't even need to pass the handle, but rather only the `Callable` which would allow for a type argument for the callable on STS (I'm assuming the `Callable` is available so that advanced STS implementations could have some per task custom information provided in fork), since you would not need to pass to `Subtask` itself, but rather the `Callable` and either the result of the `Callable` or the exception (technically you could always rely on the `exception != null` check, and passed both, but two separate methods are just more obvious, even without documentation). From forax at univ-mlv.fr Tue May 23 16:47:18 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Tue, 23 May 2023 18:47:18 +0200 (CEST) Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <07B51851-E19C-485B-A997-91E557504544@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> Message-ID: <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Tuesday, May 23, 2023 6:02:47 PM > Subject: Re: [External] : Re: Changes to JEP 453 >> On 23 May 2023, at 15:03, Remi Forax wrote: >> >> If a STS has no a shutdown policy, I believe there is a missing method "result" >> in SubTask that works like ShutdownOnSucess.result(). >> It may either return a result (SUCCESS), throw an ExceptionException (FAILED) or >> throw UnavailableException (UNAVAILABLE). >> Obviously, this method can be written with the current API (state() + get() or >> exception()) but it will be very convenient to have it, and unify how the >> different STSs work. > > First, if there?s no policy, then we?re either dealing with an advanced user or > a very simple use case, but off the bat we?re dealing with the more exceptional > situation (we may require a policy after the first preview). > > Second, the very use case you?re describing is not the one we?d like to > encourage. If the exception is part of a successful result it should be > returned, not thrown, and if it isn?t, it belongs in the phase where the scope > (even without a policy) decides what its own state is. Separating successes > from failures is good. Returning the default value instead of an exception inside the callable is a useful simplification. But it does not work in all cases, by example, if the default value of a callable is computed from the result of another async call belonging to the same scope. There is quite a lot of business cases based on the idea that if some data are missing, they will be replaced by less accurate data available that are good enough. > >> >> Exception transparency is orthogonal to a specific policy (or no policy), it's a >> way to avoid exception erasure (exception seen as a Throwable) and its wrapping >> into ExecutionException. >> The wrapping into ExecutionException is quite bad because make the composition >> of several STSs awkward because the type of the lambda submitted to a fork and >> the type of exception thrown by the method containing the try-with-resources >> with a STS are not the same. >> >> Exception transparency is a way to replace the wrapping ExceptionException by a >> more precise exception tracked by the type system enabling easier composition. > > I?m confused here. An STS is used when we want to treat multiple subtasks as a > unit. If the scope fails, then it fails because its policy (whether implemented > as an actual subclass of STS or inline without a subclass) decides it should > fail, its exception should not be any of its forks exception, and at the very > least should be wrapped to include the owner thread?s stack dump. All the > things you?re mentioning are there by design to support the particular use of > STS. > > In particular, that the type of exception thrown by the fork and that the type > of exception thrown by some result composition method are not the same is > intentional; even if we had exception transparency, we wouldn't want it here, > because it?s not supposed to be the same exception type (and it?s supposed to > be an exception generated by the scope?s owner thread). It also couldn?t be the > same exception type: What exception should, say, SoS.result throw if, out of > five forks, three forks throw IOException and the two others throw some > RuntimeException? > > If you care about handling a particular exception type in a particular fork > differently from other types, that code belongs inside the fork, because that?s > where its individuality is retained. So you?d do something like: > > scope.fork(() -> { > try { return foo(); } catch (IOException ex) { return null; }}); > > Now, if you get an ExecutionException, that means that the scope has failed to > yield a result, and is supposed to not say anything about the forks. But if for > some reason or another you wish to explore the cause of the exception further, > then future enhancements to pattern matching could help; e.g. we may have > `catch (ExecutionExeption(IOException ex)) { ? }`. Of course you?re also free > to create any exception you like in the catch block and rethrow that. When you implement a REST API, you have the problem of mapping the error to the right HTTP error code, so in Java, an exception subclass to the right HTTP code. Most frameworks/libraries centralize this mapping per service (which is a good idea), so it's usual to have a code inside the callable to wrap the exception to a specific business exception (DeliveryServiceException, UserMappingServiceException, etc) that will be used to map to the correct HTTP error code. In that setup, it's more useful to get the exception thrown by the callable than a wrapping exception. And if you want to log the exception without loosing the context, you can wrap it. > > SoF.throwIfFailed, and SoS.result have variants that allow you to manipulate the > type of exception thrown by the scope if you don?t like ExecutionError. yes, but if you use the identity SoS.result(e -> e) you will get a Throwable because the exception type has been erased. > > ? Ron R?mi From ron.pressler at oracle.com Tue May 23 18:27:25 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Tue, 23 May 2023 18:27:25 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> > On 23 May 2023, at 17:47, forax at univ-mlv.fr wrote: > > Returning the default value instead of an exception inside the callable is a useful simplification. > But it does not work in all cases, by example, if the default value of a callable is computed from the result of another async call belonging to the same scope. > > There is quite a lot of business cases based on the idea that if some data are missing, they will be replaced by less accurate data available that are good enough. Sure, but ?give me the best successful result among these forks? doesn?t require treating their exceptions individually. It?s a somewhat more elaborate policy than ShutdownOnSuccess, and I don?t see how exception transparency for the individual forks would be useful. > > When you implement a REST API, you have the problem of mapping the error to the right HTTP error code, so in Java, an exception subclass to the right HTTP code. > Most frameworks/libraries centralize this mapping per service (which is a good idea), so it's usual to have a code inside the callable to wrap the exception to a specific business exception (DeliveryServiceException, UserMappingServiceException, etc) that will be used to map to the correct HTTP error code. Great, then do that transformation in the fork by wrapping the subtask. The code that wraps the fork is also the responsibility of the scope. > In that setup, it's more useful to get the exception thrown by the callable than a wrapping exception. And if you want to log the exception without loosing the context, you can wrap it. STS itself doesn?t wrap any exceptions. The two policies throw their *own* exception when they fail and those exceptions may, indeed, wrap some fork exception, but it?s a failure of the scope, not of the forks. While computing its own outcome, the scope examines the Subtasks, where it has access to the fork?s actual exceptions. There you can pattern match on exception types if you like. If you need to consider the actual heterogeneity of exception types among forks, do that processing inside the fork and throw some uniform exceptions. But perhaps I just don?t understand what you?re saying. Can you show a code example (as short as possible) of what you think would be a common situation where exception transparency would be useful? > > yes, but if you use the identity > SoS.result(e -> e) > you will get a Throwable because the exception type has been erased. But that?s what we want because we want to encourage the scope?s exception *not* being some fork?s exception! That method exist to allow you to wrap some chosen cause with your own exception type rather than ExecutionException. We want exception transparency when we want to simply propagate an exception from one level to another, but STS was design to block precisely that. It wants exception opacity. When would exception transparency work? In an early prototype we had a structured scope that was only ever ?shutdown on fail?, and the idea was that it?s the parallel counterpart to a foreach loop, where exceptions are also directly propagated. The contract was that fork failure *is* scope failure ? i.e. a fork can try and directly fail the scope ? and if the scope didn?t want some fork to fail it, you had to catch the exception by wrapping the callable. That?s where exception transparency would have been nice. We found that approach too clever for a mass audience, especially as a first structured concurrency construct, and decided to do something that might be more familiar and that in *most* situations would not require any wrapping of tasks, but may require it in less common situations. Among other things, that meant that forks? exceptions are not the scope?s exception; rather the collects them, examines them, and then throws its own exception if it wants to fail. ? Ron From ron.pressler at oracle.com Tue May 23 18:32:26 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Tue, 23 May 2023 18:32:26 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> Message-ID: <4B60A36F-E85B-4F72-A895-8FD1BB4B71D3@oracle.com> > On 23 May 2023, at 15:09, Holo The Sage Wolf wrote: > > > > 1. Does there exists a/is the common scenario one such that handleComplete handle both FAILED and SUCCESS in a uniform way? > > I think that most implementations will look like: > > if (handle.state() == SUCCESS) handleSuccess(handle, handle.get()); > else handleFailure(handle, handle.exception()); > > So why not split handleComplete into 2 functions in the base STS already? Maybe we should and will, but I think that?s in bikeshedding territory. We first want to see how the concepts and general mechanism plays out. > > 2. I'm just making sure I understood the last point correctly as English is not my native language, you are saying that if I want to treat exceptions in the (sub)task as a successful state my STS should be of type Result (and variants)? > I?m saying that if you want to treat exceptions as something other than a control-plane signal that lets the scope decide whether it itself should fail, then yes; not necessarily the STS, but at least the fork. Take a look at the runAll example in the JEP that does exactly that: it wants to treat exceptions as part of some composite result (in the ?data plane?). ? Ron From forax at univ-mlv.fr Tue May 23 21:00:00 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Tue, 23 May 2023 23:00:00 +0200 (CEST) Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> Message-ID: <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Tuesday, May 23, 2023 8:27:25 PM > Subject: Re: [External] : Re: Changes to JEP 453 >> On 23 May 2023, at 17:47, forax at univ-mlv.fr wrote: >> >> Returning the default value instead of an exception inside the callable is a >> useful simplification. >> But it does not work in all cases, by example, if the default value of a >> callable is computed from the result of another async call belonging to the >> same scope. >> >> There is quite a lot of business cases based on the idea that if some data are >> missing, they will be replaced by less accurate data available that are good >> enough. > > Sure, but ?give me the best successful result among these forks? doesn?t require > treating their exceptions individually. It?s a somewhat more elaborate policy > than ShutdownOnSuccess, and I don?t see how exception transparency for the > individual forks would be useful. > >> >> When you implement a REST API, you have the problem of mapping the error to the >> right HTTP error code, so in Java, an exception subclass to the right HTTP >> code. >> Most frameworks/libraries centralize this mapping per service (which is a good >> idea), so it's usual to have a code inside the callable to wrap the exception >> to a specific business exception (DeliveryServiceException, >> UserMappingServiceException, etc) that will be used to map to the correct HTTP >> error code. > > Great, then do that transformation in the fork by wrapping the subtask. The code > that wraps the fork is also the responsibility of the scope. > >> In that setup, it's more useful to get the exception thrown by the callable than >> a wrapping exception. And if you want to log the exception without loosing the >> context, you can wrap it. > > STS itself doesn?t wrap any exceptions. The two policies throw their *own* > exception when they fail and those exceptions may, indeed, wrap some fork > exception, but it?s a failure of the scope, not of the forks. > > While computing its own outcome, the scope examines the Subtasks, where it has > access to the fork?s actual exceptions. There you can pattern match on > exception types if you like. If you need to consider the actual heterogeneity > of exception types among forks, do that processing inside the fork and throw > some uniform exceptions. > > But perhaps I just don?t understand what you?re saying. Can you show a code > example (as short as possible) of what you think would be a common situation > where exception transparency would be useful? Let say I've two services, one that give me a Customer from a customer id and another that give me the product description from a product id, and i want to send a mail containing the customer name and a description. Alternative scenario, if the product service reports an error, a default description is provided depending on the language of the customer. record Customer(long id, String name, Locale locale) {} record ProductDescription(long id, String description) {} static sealed class ApplicationException extends Exception { ... } static final class ServiceErrorException extends ApplicationException { ... } static final class CustomerNotFoundException extends ApplicationException { ... } record CustomerService() { Customer findCustomerFromId(long id) throws ApplicationException { try { Thread.sleep(1_000); } catch (InterruptedException e) { throw new ServiceErrorException(e); } if (id == 0) { throw new CustomerNotFoundException(); } return new Customer(id, "Bob", Locale.of("fr")); // fake data } } record ProductService() { ProductDescription findProductDescription(long id) throws ApplicationException { try { Thread.sleep(1_000); } catch (InterruptedException e) { throw new ServiceErrorException(e); } return new ProductDescription(id, "description"); // fake data } } private static String getDefaultDescription(Locale locale) { return "fake data"; } record MailData(String customerName, String productDescription) {} static MailData getMailData(long customerId, long productId) throws ApplicationException { var customerService = new CustomerService(); var productService = new ProductService(); try(var sts = new StructuredTaskScope()) { // both calls can be done in parallel var customerTask = sts.fork(() -> customerService.findCustomerFromId(customerId)); var productDescriptionTask = sts.fork(() -> productService.findProductDescription(productId)); sts.join(); // the business logic is implemented here var customer = customerTask.result(); // should propagate the exception transparently String productDescription; try { productDescription = productDescriptionTask.result().description(); } catch(ApplicationException e) { // the exception type is not erased productDescription = getDefaultDescription(customer.locale()); } return new MailData(customer.name(), productDescription); } catch (InterruptedException e) { throw new ServiceErrorException(e); } } findCustomerfromId, findProductDescription and getMailData() all throw an ApplicationException. getMailData() can itself be called in another STS, composition is easy ! Exceptions naturally flows with no wrapping by default. [...] > > ? Ron R?mi From duke at openjdk.org Wed May 24 00:17:31 2023 From: duke at openjdk.org (duke) Date: Wed, 24 May 2023 00:17:31 GMT Subject: git: openjdk/loom: jom-master: 2 new changesets Message-ID: Changeset: 63ad39bb Author: David Holmes Date: 2023-05-23 20:13:32 +0000 URL: https://git.openjdk.org/loom/commit/63ad39bbf98fa28a871478db2ac82b0c2696a19d Remove test that was unintentionally resurrected - test/hotspot/jtreg/runtime/Monitor/SuspendInMonitor.java Changeset: c3b56400 Author: David Holmes Date: 2023-05-23 20:16:09 +0000 URL: https://git.openjdk.org/loom/commit/c3b564006b873cca219fb19d2d8c17d5cfd311e1 Remove test that was unintentionally resurrected - test/hotspot/jtreg/runtime/Monitor/ThreadStopInMonitor.java From duke at openjdk.org Wed May 24 00:33:57 2023 From: duke at openjdk.org (duke) Date: Wed, 24 May 2023 00:33:57 GMT Subject: git: openjdk/loom: jom-master: Update known failures for hotspot runtime_tier1 Message-ID: Changeset: 95e724ae Author: David Holmes Date: 2023-05-23 20:30:47 +0000 URL: https://git.openjdk.org/loom/commit/95e724ae9a38df0a4f0723169f4ba89d67ed19d2 Update known failures for hotspot runtime_tier1 ! tech-notes/known-test-failures.txt From ron.pressler at oracle.com Wed May 24 09:00:11 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 24 May 2023 09:00:11 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> Message-ID: Okay, so we should try to avoid ever directly dealing with a particular subtask?s exceptions; in fact we try to avoid ever calling any method on Subtask other than get. If you find yourself calling any other Subtask method (outside handleComplete) ? rethink. So here?s how I might do it (assuming you really don?t want to wrap the forks? exceptions; also, sorry, but I couldn?t bring myself to wrapping InterruptedException with a different type): static MailData getMailData(long customerId, long productId) throws ApplicationException, InterruptedException { var customerService = new CustomerService(); var productService = new ProductService(); try (var sts = new StructuredTaskScope.ShutdownOnFailure()) { var customerTask = sts.fork(() -> customerService.findCustomerFromId(customerId)); var productDescriptionTask = sts.fork(() -> { try { return Optional.of(productService.findProductDescription(productId)); } catch (ApplicationException e) { return Optional.empty(); } }); sts.join().throwIfFailed(e -> e); var customer = customerTask.get(); var productDescription = productDescriptionTask.get() .orElse(getDefaultDescription(customer.locale()); return new MailData(customer.name(), productDescription); } catch (ApplicationException|InterruptedException|Error e) { throw e; } catch (Throwable e) { throw new RuntimeException(e); } } Note that it also shuts down correctly if CustomerService throws. ? Ron > On 23 May 2023, at 22:00, forax at univ-mlv.fr wrote: > > > Let say I've two services, one that give me a Customer from a customer id and another that give me the product description from a product id, > and i want to send a mail containing the customer name and a description. > Alternative scenario, if the product service reports an error, a default description is provided depending on the language of the customer. > > record Customer(long id, String name, Locale locale) {} > record ProductDescription(long id, String description) {} > > static sealed class ApplicationException extends Exception { ... } > static final class ServiceErrorException extends ApplicationException { ... } > static final class CustomerNotFoundException extends ApplicationException { ... } > > record CustomerService() { > Customer findCustomerFromId(long id) throws ApplicationException { > try { > Thread.sleep(1_000); > } catch (InterruptedException e) { > throw new ServiceErrorException(e); > } > if (id == 0) { > throw new CustomerNotFoundException(); > } > return new Customer(id, "Bob", Locale.of("fr")); // fake data > } > } > > record ProductService() { > ProductDescription findProductDescription(long id) throws ApplicationException { > try { > Thread.sleep(1_000); > } catch (InterruptedException e) { > throw new ServiceErrorException(e); > } > return new ProductDescription(id, "description"); // fake data > } > } > > private static String getDefaultDescription(Locale locale) { > return "fake data"; > } > > record MailData(String customerName, String productDescription) {} > > static MailData getMailData(long customerId, long productId) throws ApplicationException { > var customerService = new CustomerService(); > var productService = new ProductService(); > > try(var sts = new StructuredTaskScope()) { > // both calls can be done in parallel > var customerTask = sts.fork(() -> customerService.findCustomerFromId(customerId)); > var productDescriptionTask = sts.fork(() -> productService.findProductDescription(productId)); > > sts.join(); > > // the business logic is implemented here > var customer = customerTask.result(); // should propagate the exception transparently > String productDescription; > try { > productDescription = productDescriptionTask.result().description(); > } catch(ApplicationException e) { // the exception type is not erased > productDescription = getDefaultDescription(customer.locale()); > } > return new MailData(customer.name(), productDescription); > } catch (InterruptedException e) { > throw new ServiceErrorException(e); > } > } > > > findCustomerfromId, findProductDescription and getMailData() all throw an ApplicationException. > getMailData() can itself be called in another STS, composition is easy ! > > Exceptions naturally flows with no wrapping by default. > > [...] > >> >> ? Ron > > R?mi From forax at univ-mlv.fr Wed May 24 09:31:54 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 24 May 2023 11:31:54 +0200 (CEST) Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Wednesday, May 24, 2023 11:00:11 AM > Subject: Re: [External] : Re: Changes to JEP 453 > Okay, so we should try to avoid ever directly dealing with a particular > subtask?s exceptions; in fact we try to avoid ever calling any method on > Subtask other than get. If you find yourself calling any other Subtask method > (outside handleComplete) ? rethink. > > So here?s how I might do it (assuming you really don?t want to wrap the forks? > exceptions; also, sorry, but I couldn?t bring myself to wrapping > InterruptedException with a different type): As i said, the trick to use an Optional instead of an Exception is nice until you want to centralize the logging (log the potential exceptions and the returned result) without emitting a flly of log record you then have to correlate. > > static MailData getMailData(long customerId, long productId) throws > ApplicationException, InterruptedException { > var customerService = new CustomerService(); > var productService = new ProductService(); > > try (var sts = new StructuredTaskScope.ShutdownOnFailure()) { > var customerTask = sts.fork(() -> > customerService.findCustomerFromId(customerId)); > var productDescriptionTask = sts.fork(() -> { > try { return Optional.of(productService.findProductDescription(productId)); } > catch (ApplicationException e) { return Optional.empty(); } > }); > > sts.join().throwIfFailed(e -> e); > > var customer = customerTask.get(); > var productDescription = productDescriptionTask.get() > .orElse(getDefaultDescription(customer.locale()); > > return new MailData(customer.name(), productDescription); > } catch (ApplicationException|InterruptedException|Error e) { > throw e; > } catch (Throwable e) { > throw new RuntimeException(e); > } > } Here we are discussing about two things, the first one is to have a method result() in Subtask, the second is exception transparency, i think even if you no not want a method result() in Subtask (let see how people use the preview), having exception transparency also simplify the code. Here is your code if we implement exception transparency, you have to parametrized ShutdownOnFailure by the exception but you are rewarded because you can remove all the try/catch. static MailData getMailData(long customerId, long productId) throws ApplicationException, InterruptedException { var customerService = new CustomerService(); var productService = new ProductService(); try (var sts = new StructuredTaskScope.ShutdownOnFailure()) { var customerTask = sts.fork(() -> customerService.findCustomerFromId(customerId)); var productDescriptionTask = sts.fork(() -> { try { return Optional.of(productService.findProductDescription(productId)); } catch (ApplicationException e) { return Optional.empty(); } }); sts.join().throwIfFailed(e -> e); var customer = customerTask.get(); var productDescription = productDescriptionTask.get() .orElseGet(() -> getDefaultDescription(customer.locale()); return new MailData(customer.name(), productDescription); } } > > Note that it also shuts down correctly if CustomerService throws. yes, your implementation fails faster. > > ? Ron R?mi BTW: I believe the first catch in your code is missing RuntimeException. > >> On 23 May 2023, at 22:00, forax at univ-mlv.fr wrote: >> >> >> Let say I've two services, one that give me a Customer from a customer id and >> another that give me the product description from a product id, >> and i want to send a mail containing the customer name and a description. >> Alternative scenario, if the product service reports an error, a default >> description is provided depending on the language of the customer. >> >> record Customer(long id, String name, Locale locale) {} >> record ProductDescription(long id, String description) {} >> >> static sealed class ApplicationException extends Exception { ... } >> static final class ServiceErrorException extends ApplicationException { ... } >> static final class CustomerNotFoundException extends ApplicationException { ... >> } >> >> record CustomerService() { >> Customer findCustomerFromId(long id) throws ApplicationException { >> try { >> Thread.sleep(1_000); >> } catch (InterruptedException e) { >> throw new ServiceErrorException(e); >> } >> if (id == 0) { >> throw new CustomerNotFoundException(); >> } >> return new Customer(id, "Bob", Locale.of("fr")); // fake data >> } >> } >> >> record ProductService() { >> ProductDescription findProductDescription(long id) throws ApplicationException { >> try { >> Thread.sleep(1_000); >> } catch (InterruptedException e) { >> throw new ServiceErrorException(e); >> } >> return new ProductDescription(id, "description"); // fake data >> } >> } >> >> private static String getDefaultDescription(Locale locale) { >> return "fake data"; >> } >> >> record MailData(String customerName, String productDescription) {} >> >> static MailData getMailData(long customerId, long productId) throws >> ApplicationException { >> var customerService = new CustomerService(); >> var productService = new ProductService(); >> >> try(var sts = new StructuredTaskScope()) { >> // both calls can be done in parallel >> var customerTask = sts.fork(() -> >> customerService.findCustomerFromId(customerId)); >> var productDescriptionTask = sts.fork(() -> >> productService.findProductDescription(productId)); >> >> sts.join(); >> >> // the business logic is implemented here >> var customer = customerTask.result(); // should propagate the exception >> transparently >> String productDescription; >> try { >> productDescription = productDescriptionTask.result().description(); >> } catch(ApplicationException e) { // the exception type is not erased >> productDescription = getDefaultDescription(customer.locale()); >> } >> return new MailData(customer.name(), productDescription); >> } catch (InterruptedException e) { >> throw new ServiceErrorException(e); >> } >> } >> >> >> findCustomerfromId, findProductDescription and getMailData() all throw an >> ApplicationException. >> getMailData() can itself be called in another STS, composition is easy ! >> >> Exceptions naturally flows with no wrapping by default. >> >> [...] >> >>> >>> ? Ron >> > > R?mi From ron.pressler at oracle.com Wed May 24 10:25:31 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 24 May 2023 10:25:31 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1A0112B2-5F51-4C34-B5FE-421DB1426CD5@oracle.com> <1204726393.62701199.1684850612285.JavaMail.zimbra@univ-eiffel.fr> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > On 24 May 2023, at 10:31, forax at univ-mlv.fr wrote: > > > Here we are discussing about two things, the first one is to have a method result() in Subtask, the second is exception transparency, i think even if you no not want a method result() in Subtask (let see how people use the preview), having exception transparency also simplify the code. What you?re describing isn?t really exception transparency (to me, exception transparency means ?I throw what this thing throws?, and so implies some kind of inference, which we could do in the result case but for the time being we want to encourage people to handle exceptions centrally). Even supposing we had a language feature that could allow specifying multiple exception types, e.g. `new StructuredTaskScope.ShutdownOnFailure` you'd still have to declare all of the forks? exception types in advance, because we fork different tasks in different calls to fork and we still couldn?t infer exception types to make them transparent. As a result, the code is only simplified by the removal of `catch (Throwable e) { throw new RuntimeException(e); }`. It isn?t much of a simplification, and it?s also not what we want, because runtime exceptions will also be propagated without a good stack trace, and that?s probably what few want. Defining a method: static Function propagate(Class ext) { return e -> { if (ext.isInstance(e)) return ext.cast(e); if (e instanceof Error err) throw err; else throw new RuntimeException(e); }; } And then using it like so, `scope.join().throwIfFailed(propagate(ApplicationException.class))`, will be just as simple of not more so, as we won?t have to specify an exception type argument if we don?t want to. If that?s useful (and I say ?if", because you are giving up on a good stack trace), we could fold that functionality into another overload of throwIfFailed. ? Ron From forax at univ-mlv.fr Wed May 24 12:14:37 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Wed, 24 May 2023 14:14:37 +0200 (CEST) Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <75031571.63794685.1684930477067.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Wednesday, May 24, 2023 12:25:31 PM > Subject: Re: [External] : Re: Changes to JEP 453 >> On 24 May 2023, at 10:31, forax at univ-mlv.fr wrote: >> >> >> Here we are discussing about two things, the first one is to have a method >> result() in Subtask, the second is exception transparency, i think even if you >> no not want a method result() in Subtask (let see how people use the preview), >> having exception transparency also simplify the code. > > What you?re describing isn?t really exception transparency (to me, exception > transparency means ?I throw what this thing throws?, and so implies some kind > of inference, which we could do in the result case but for the time being we > want to encourage people to handle exceptions centrally). Even supposing we had > a language feature that could allow specifying multiple exception types, e.g. > `new StructuredTaskScope.ShutdownOnFailure` you'd > still have to declare all of the forks? exception types in advance, because we > fork different tasks in different calls to fork and we still couldn?t infer > exception types to make them transparent. ???, the idea is to declare explicitly the exception when creating the STS because Java is not able to do the union of several exceptions, but the compiler has no problem to infer the type of the exception (which is a subclass of the one declared when creating the STS) when calling fork. There is a slight hand trick to do which is to declare that the method of the functional interface has to propagate the inferred type *and* InterruptException, otherwise the compiler will always infer Exception (the common super type) if there is a blocking call inside the lambda. interface Invokable { T invoke() throws E, InterruptedException } So yes, it should be nice to have the type system to be able to create the union of several exceptions but practically here, we do not need it. > > As a result, the code is only simplified by the removal of `catch (Throwable e) > { throw new RuntimeException(e); }`. It isn?t much of a simplification, and > it?s also not what we want, because runtime exceptions will also be propagated > without a good stack trace, and that?s probably what few want. Nope, it also check that the exception are correctly handled at compile time and provide the right semantics so a user do not have to verify that the exception are correctly handled. With your code below, if one Callable throw the wrong exception, the code compile, and will wrap the wrong exception inside a RuntimeException leading to the wrong error code to be propagated instead of saying to the user that the code is not valid. > > Defining a method: > > static Function propagate(Class ext) { > return e -> { > if (ext.isInstance(e)) return ext.cast(e); > if (e instanceof Error err) throw err; > else throw new RuntimeException(e); > }; > } > > And then using it like so, > `scope.join().throwIfFailed(propagate(ApplicationException.class))`, will be > just as simple of not more so, as we won?t have to specify an exception type > argument if we don?t want to. If that?s useful (and I say ?if", because you are > giving up on a good stack trace), we could fold that functionality into another > overload of throwIfFailed. Handling developer mistakes at compile time, not at runtime is better IMO. This is important in this particular case because exception paths in the code tend to be less tested. > > ? Ron R?mi From ron.pressler at oracle.com Wed May 24 12:48:45 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 24 May 2023 12:48:45 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <75031571.63794685.1684930477067.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <07B51851-E19C-485B-A997-91E557504544@oracle.com> <2114711763.62846021.1684860438769.JavaMail.zimbra@univ-eiffel.fr> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> <75031571.63794685.1684930477067.JavaMail.zimbra@univ-eiffel.fr> Message-ID: > On 24 May 2023, at 13:14, forax at univ-mlv.fr wrote: > > the idea is to declare explicitly the exception when creating the STS because Java is not able to do the union of several exceptions, > but the compiler has no problem to infer the type of the exception (which is a subclass of the one declared when creating the STS) when calling fork. Even if we did have unions of multiple forks, what I tried saying was that we could have exception transparency for Subtask.result, but not for SoF.throwIfFailed, which is what we want to encourage people to use. There could be no inference there. > > Handling developer mistakes at compile time, not at runtime is better IMO. > This is important in this particular case because exception paths in the code tend to be less tested. Ok, so what you?re saying is: It may be desirable to have STS bound the exception types thrown by the forks (though that?s not exception transparency). I can see that, and we tried that in one of the prototypes but weren?t sure about whether having two type parameters (or one for SoF) may deter users; that?s not helped by the fact that tasks may frequently throw both IOException and InterruptedException whose common supertype is Exception. But I think that's a reasonable tweak to consider in the future. BTW, I just noticed something you said about logging in your previous message. STS is designed for a style where exceptions are handled centrally and logging is not handled centrally, i.e. where the scope is interested in everything that could affect its own outcome and in nothing but what could affect its own outcome. I?m not saying that other styles wouldn?t be better sometimes, but STS is designed for that particular style. So if you find yourself ever inspecting results that don?t affect the outcome or explicitly handling a particular fork?s exceptions ? i.e. if you find yourself ever calling any Subtask method other than get outside handleComplete ? then there?s a very good chance you?re not using STS in the intended manner. ? Ron From Alan.Bateman at oracle.com Wed May 24 14:51:17 2023 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 24 May 2023 15:51:17 +0100 Subject: Scoped Values and better security In-Reply-To: References: Message-ID: <798b6173-6f99-d06e-f5cc-791a47450e7e@oracle.com> Just re-found this mail. Yes, I think there is merit to have the JEP include advice on treating the ScopedValue as a capability and restricting the accessibility of the ScopedValue field as much as possible. As I think you understand, a scoped value works like a implicit parameter and you need the "key" to read it, it's no different to ThreadLocal except that the ScopedValue is only set to a value for the bounded execution of a method. I also agree that the example of DBAccess access the PRINCIPAL field in Server isn't great and replacing it with an example that uses a callback might be better example to teach how to use this API. -Alan On 27/04/2023 15:17, Volker Simonis wrote: > I take this discussion from the JEP issue in JBS [1] to the mailing > list as requested by Alan: > > My initial comment was: > > In your motivation section you say: > > Normally, data is shared between caller and callee by passing it as > method arguments, > but this is not viable for a Principal shared between the server > component and the data > access component because the server component calls untrusted user > code first. We need > a better way to share data from the server component to the data > access component than > wiring it into a cascade of untrusted method invocations. > > I can't see how ThreadLocals or ScopedValues improve the situation > here with respect to "untrusted code"? I fully agree that passing the > Principal data from the server component down to the data access > component by means of method parameters is ugly and disturbing. But I > can't see how it should be more "unsecure", because the "untrusted > user code" can access a potential Principle object from its argument > list in much the same way like a ThreadLocale or ScopedValue defined > in an enclosing scope. > > So maybe it would be better to focus more on the usability aspect than > on "avoiding information exposure to untrusted code" in the Motivation > section? > > Andrew's response was: > >> But I can't see how it should be more "unsecure", because the "untrusted user code" can access a potential Principle object from its argument list in much the same way like a ThreadLocale or ScopedValue defined in an enclosing scope. > I don't understand what you don't understand. > > We can reason about code when we know that its access to data is > constrained in some way. We know that scoped values have particular > properties, in that we can restrict accesses to them to code we trust. > This isn't specifically security related: '"trusted code" can mean > simply code that we've verified, and therefore can trust. If we set a > scoped value in an outer scope, call via some unknown code, then > access that scoped value in an inner scope, we know for certain that > its value is one we set in the outer scope. The (untrusted, unknown) > code in between can't have substituted something else. > > And Alan added: > > It may be that Volker has missed the point that the capability, as in > the ThreadLocal or ScopeLocal variable, is usually stored in a private > static final so it's not accessible to code in the intermediate frames > between where it is set and (usually) the callback that will read the > value. It would probably be better to bring questions to loom-dev > rather having a protracted discussion in comments here. > > So finally my new comment: > > In your example "Web framework example with scoped values" both, the > `Server` class where the ScopedValue `PRINCIPAL` is declared with > `package-private` visibility as well as the `DBAccess` class which > uses the `PRINCIPAL` are in the default unnamed package. But I doubt > that in a real world application the server class and the database > access class will be in the same package. So if you'd declare > `PRINCIPAL` in a private field as Alan suggested, it would be > impossible for another component to access it. If on the other hand > your scoped value was declared in a public field, any untrusted, > intermediate code executed between outer and inner scope could access > it just as well. > > @Andrew: the untrusted, intermediate code can both read and even > rebind the value of the ScopedValue set in an outer scope. The > "security" you are talking about is a feature of the Java access rules > and not of the scoped value implementation. I don't see how in a real > world (e.g. Spring) application, the web server, the DB engine and the > logging framework can easily share access to a common scoped value > without exposing this scoped value to intermediate code outside of > these components as well. > > But maybe I'm missing something in which case it might sense to > explain this a little more detailed in the JEP? > > Thank you and best regards, > Volker > > [1] https://bugs.openjdk.org/browse/JDK-8304357 From duke at openjdk.org Thu May 25 08:23:02 2023 From: duke at openjdk.org (duke) Date: Thu, 25 May 2023 08:23:02 GMT Subject: git: openjdk/loom: fibers: 111 new changesets Message-ID: <3ed6db92-7826-48bf-b9c1-7fc13cb11cac@openjdk.org> Changeset: 8bedf2ef Author: Leonid Mesnik Date: 2023-05-17 17:24:38 +0000 URL: https://git.openjdk.org/loom/commit/8bedf2efd7671834b3f7ff42bc33008821545d9f 8308292: Problemlist vmTestbase/nsk/jvmti/AttachOnDemand/attach020/TestDescription.java Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Xcomp.txt Changeset: 950c5df8 Author: Alisen Chung Date: 2023-05-17 18:57:59 +0000 URL: https://git.openjdk.org/loom/commit/950c5df859c373864ab4e7cf080c38bbd501e54b 8307299: Move more DnD tests to open Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DropTargetingTest.java + test/jdk/java/awt/dnd/DroppingVMHangTest.java + test/jdk/java/awt/dnd/HonorTargetActionTest.java + test/jdk/java/awt/dnd/InterJVMLinkTest.java + test/jdk/java/awt/dnd/IntraJVMGetDropSuccessTest.java + test/jdk/java/awt/dnd/LinkAcceptanceTest.java Changeset: 24094482 Author: Patricio Chilano Mateo Date: 2023-05-17 20:16:21 +0000 URL: https://git.openjdk.org/loom/commit/24094482f00b6ac412bfad770051775f2ab5cf73 8307365: JvmtiStressModule hit SIGSEGV in JvmtiEventControllerPrivate::recompute_thread_enabled Reviewed-by: sspitsyn, dcubed, lmesnik ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest/ThreadStateTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest/libThreadStateTest.cpp Changeset: 6073edf3 Author: Eric Caspole Date: 2023-05-17 20:39:26 +0000 URL: https://git.openjdk.org/loom/commit/6073edf3cdbc1ff7d0cccfb9b4547ef1357d292c 8307483: New micros for j.u.c.LockSupport Co-authored-by: Sergey Kuksenko Reviewed-by: shade, redestad + test/micro/org/openjdk/bench/java/util/concurrent/UnparkBenchSleepersAfter.java + test/micro/org/openjdk/bench/java/util/concurrent/UnparkBenchSleepersBefore.java Changeset: 902585be Author: Jiangli Zhou Date: 2023-05-17 21:04:34 +0000 URL: https://git.openjdk.org/loom/commit/902585bec1d4d5681208213bea180302d1b52df9 8308110: Resolve multiple definition of 'JNI_OnLoad_jsound' linking error Reviewed-by: alanb, rasbold ! src/java.desktop/linux/native/libjsound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c Changeset: 83c096d6 Author: Boris Ulasevich Date: 2023-05-18 03:14:38 +0000 URL: https://git.openjdk.org/loom/commit/83c096d6e20cd6e1164bc666df1be197a10431eb 8308270: ARM32 build broken after JDK-8304913 Reviewed-by: stuefe, rriggs ! src/java.base/share/classes/jdk/internal/util/Architecture.java ! src/java.base/share/classes/jdk/internal/util/PlatformProps.java.template ! test/jdk/jdk/internal/util/ArchTest.java Changeset: 6f75dd87 Author: Ioi Lam Date: 2023-05-18 04:10:49 +0000 URL: https://git.openjdk.org/loom/commit/6f75dd8741f44b3012c5cab5268e89d09121e4be 8308236: Remove SystemDictionaryShared::clone_dumptime_tables() Reviewed-by: vlivanov, ccheung ! src/hotspot/share/cds/dumpTimeClassInfo.cpp ! src/hotspot/share/cds/dumpTimeClassInfo.hpp ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.cpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.hpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.hpp Changeset: 95da499e Author: Thomas Stuefe Date: 2023-05-18 05:47:23 +0000 URL: https://git.openjdk.org/loom/commit/95da499ef229d0dfd5fc348f68b9bfd91015b045 8308285: Assert on -Xshare:dump when running with -Xlog:cds=trace Reviewed-by: ccheung, iklam ! src/hotspot/share/classfile/javaClasses.cpp Changeset: f4f5542f Author: Adam Sotona Date: 2023-05-18 06:02:47 +0000 URL: https://git.openjdk.org/loom/commit/f4f5542f8d49dbb756f52a281b745c3c2bbc9829 8306842: Classfile API performance improvements Reviewed-by: redestad ! make/RunTests.gmk ! src/java.base/share/classes/jdk/internal/classfile/attribute/EnclosingMethodAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantDynamicEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/InvokeDynamicEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/MethodTypeEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractPoolEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedMethodBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectMethodBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/MethodImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/MethodInfo.java ! src/java.base/share/classes/jdk/internal/classfile/impl/SplitConstantPool.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackCounter.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapDecoder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java ! src/java.base/share/classes/jdk/internal/classfile/impl/Util.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/FieldInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/InvokeDynamicInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/InvokeInstruction.java ! test/jdk/jdk/classfile/UtilTest.java ! test/micro/org/openjdk/bench/jdk/classfile/AbstractCorpusBenchmark.java ! test/micro/org/openjdk/bench/jdk/classfile/GenerateStackMaps.java + test/micro/org/openjdk/bench/jdk/classfile/RebuildMethodBodies.java + test/micro/org/openjdk/bench/jdk/classfile/RepeatedModelTraversal.java ! test/micro/org/openjdk/bench/jdk/classfile/Write.java Changeset: 3c9ec263 Author: Chen Liang Committer: Adam Sotona Date: 2023-05-18 06:54:01 +0000 URL: https://git.openjdk.org/loom/commit/3c9ec26370dfae5d1230b6b69ae26122fe42e51d 8306457: Classfile API components implementations should not be exposed Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/components/ClassRemapper.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeLocalsShifter.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeRelabeler.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeStackTracker.java + src/java.base/share/classes/jdk/internal/classfile/impl/ClassRemapperImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeLocalsShifterImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeRelabelerImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeStackTrackerImpl.java Changeset: 57b8ed13 Author: Jan Kratochvil Committer: Yuri Nesterenko Date: 2023-05-18 08:48:16 +0000 URL: https://git.openjdk.org/loom/commit/57b8ed13984eab1ab0eaf70c1904dc0f50fe6129 8308290: Add fontconfig requirement to building.md Reviewed-by: erikj ! doc/building.html ! doc/building.md Changeset: bfc3ccd9 Author: bobpengxie Committer: Jie Fu Date: 2023-05-18 12:26:45 +0000 URL: https://git.openjdk.org/loom/commit/bfc3ccd90d579f6cba3a704766b7a1ea56beebe1 8308283: Build failure with GCC12 & GCC13 Reviewed-by: erikj, jiefu ! make/modules/java.desktop/lib/Awt2dLibraries.gmk ! src/hotspot/share/utilities/compilerWarnings.hpp ! src/hotspot/share/utilities/compilerWarnings_gcc.hpp ! src/hotspot/share/utilities/vmError.cpp Changeset: a58e0ca9 Author: Amit Kumar Committer: Roger Riggs Date: 2023-05-18 13:51:34 +0000 URL: https://git.openjdk.org/loom/commit/a58e0ca9d263807d7bfc0090b01bc71bff7c92db 8308347: [s390x] build broken after JDK-8304913 Reviewed-by: stuefe, rriggs ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java Changeset: 808dc1b0 Author: Thomas Stuefe Date: 2023-05-18 14:01:08 +0000 URL: https://git.openjdk.org/loom/commit/808dc1b047c5a67b7397d47e38495efde022317d 8308350: Increase buffer size for jspawnhelper arguments Reviewed-by: rriggs ! src/java.base/unix/native/libjava/ProcessImpl_md.c Changeset: cc5c9b5d Author: Jasmine Karthikeyan Committer: Vladimir Kozlov Date: 2023-05-18 15:09:45 +0000 URL: https://git.openjdk.org/loom/commit/cc5c9b5da2de4229c0244169bcbd6496f68db5ab 8305787: Wrong debugging information printed with TraceOptoOutput Reviewed-by: thartmann, kvn ! src/hotspot/share/adlc/formsopt.hpp ! src/hotspot/share/adlc/output_c.cpp ! src/hotspot/share/adlc/output_h.cpp Changeset: 1b154e4f Author: Alisen Chung Date: 2023-05-18 15:45:12 +0000 URL: https://git.openjdk.org/loom/commit/1b154e4fd361103936f976db72e04b73aa7b1077 8307083: Open source some drag and drop tests 3 Reviewed-by: prr, serb + test/jdk/java/awt/dnd/MissedDragEnterTest.java + test/jdk/java/awt/dnd/ModalDialogDeadlockTest.java + test/jdk/java/awt/dnd/ModalDialogOnDragDeadlockTest.java + test/jdk/java/awt/dnd/ModalDialogOnDropDeadlockTest.java Changeset: bb24c367 Author: Calvin Cheung Date: 2023-05-18 16:02:55 +0000 URL: https://git.openjdk.org/loom/commit/bb24c36759f19448c8539f6b11017753f304bb56 8279993: Assert that a shared class is not loaded more than once Reviewed-by: iklam, stuefe ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/oops/instanceKlass.hpp Changeset: 42ecc8a3 Author: Joe Darcy Date: 2023-05-18 17:05:28 +0000 URL: https://git.openjdk.org/loom/commit/42ecc8a37ffc7e4ad7beb49cac7d821c00a5568e 8308245: Add -proc:full to describe current default annotation processing policy Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java ! test/langtools/tools/javac/processing/environment/round/TestContext.java + test/langtools/tools/javac/processing/options/TestProcOption.java Changeset: 21aa057f Author: Alexander Zvegintsev Date: 2023-05-18 18:14:05 +0000 URL: https://git.openjdk.org/loom/commit/21aa057fafd88f4dd677bbf7c99a7eabb6b18409 8307779: Relax the java.awt.Robot specification Reviewed-by: mkartashev, prr ! src/java.desktop/share/classes/java/awt/Robot.java Changeset: 02dc95e6 Author: Alexander Zvegintsev Date: 2023-05-18 18:51:46 +0000 URL: https://git.openjdk.org/loom/commit/02dc95e6b99e5998b028e90c3fe9c64ad9f47d9e 8308370: Fix build failures related to the java.awt.Robot documentation Reviewed-by: dcubed ! src/java.desktop/share/classes/java/awt/Robot.java Changeset: d3feedf5 Author: Ashutosh Mehra Committer: Vladimir Kozlov Date: 2023-05-18 19:50:05 +0000 URL: https://git.openjdk.org/loom/commit/d3feedf5114542078c10abec0612038c88e005d6 8308192: Error in parsing replay file when staticfield is an array of single dimension Reviewed-by: thartmann, kvn ! src/hotspot/share/ci/ciReplay.cpp Changeset: 148df533 Author: Weijun Wang Date: 2023-05-18 21:23:29 +0000 URL: https://git.openjdk.org/loom/commit/148df533af618a959ca2f3601d9ab897c3515d77 8308010: X509Key and PKCS8Key allows garbage bytes at the end Reviewed-by: mullan ! src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java ! src/java.base/share/classes/sun/security/x509/X509Key.java + test/jdk/sun/security/pkcs/pkcs8/LongPKCS8orX509KeySpec.java Changeset: 4a6d6d5a Author: Chris Plummer Date: 2023-05-18 22:08:10 +0000 URL: https://git.openjdk.org/loom/commit/4a6d6d5a59442c10a1761ce0566aab57f4c4f323 8308187: jdi/EventSet/resume/resume008 failed with "EventHandler> Unexpected event: ThreadStartEvent in thread resume008-thread0" Reviewed-by: dcubed ! test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventFilters.java Changeset: 42948c04 Author: Leonid Mesnik Date: 2023-05-18 23:57:10 +0000 URL: https://git.openjdk.org/loom/commit/42948c04b90d3c01c22d00f684e7dc0129b66abd 8307865: Invalid is_in_any_VTMS_transition() check in post_dynamic_code_generated_while_holding_locks Reviewed-by: sspitsyn, cjplummer ! src/hotspot/share/prims/jvmtiExport.cpp ! test/hotspot/jtreg/serviceability/jvmti/DynamicCodeGenerated/DynamicCodeGeneratedTest.java ! test/hotspot/jtreg/serviceability/jvmti/DynamicCodeGenerated/libDynamicCodeGenerated.cpp Changeset: e520cdc8 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-19 00:49:28 +0000 URL: https://git.openjdk.org/loom/commit/e520cdc882a778260181a2162a01ceff7cc41ca0 8308277: RISC-V: Improve vectorization of Match.sqrt() on floats Reviewed-by: fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 97ade57f Author: Dingli Zhang Committer: Fei Yang Date: 2023-05-19 03:09:13 +0000 URL: https://git.openjdk.org/loom/commit/97ade57fb244b17e93b150b7f9e025a5ba906bb2 8307609: RISC-V: Added support for Extract, Compress, Expand and other nodes for Vector API Co-authored-by: zifeihan Reviewed-by: fyang, fjiang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/riscv_v.ad Changeset: 67657610 Author: Aleksey Shipilev Date: 2023-05-19 06:53:50 +0000 URL: https://git.openjdk.org/loom/commit/6765761075361459f764f4f17a52ac6ecbe67f4e 8308118: Avoid multiarray allocations in AESCrypt.makeSessionKey Reviewed-by: xuelei ! src/java.base/share/classes/com/sun/crypto/provider/AESCrypt.java + test/micro/org/openjdk/bench/javax/crypto/AESReinit.java Changeset: 25868b95 Author: Raffaello Giulietti Date: 2023-05-19 08:04:32 +0000 URL: https://git.openjdk.org/loom/commit/25868b95ee91eee9e7611ad18540a7e30032e49b 8132995: Matcher$ImmutableMatchResult should be optimized to reduce space usage Reviewed-by: redestad, smarks ! src/java.base/share/classes/java/util/regex/Matcher.java + test/jdk/java/util/regex/ImmutableMatchResultTest.java Changeset: fa143148 Author: Adam Sotona Date: 2023-05-19 08:09:37 +0000 URL: https://git.openjdk.org/loom/commit/fa14314853e161c6ca5561be3e1e280691d8fe99 8303669: SelectVersion indexes past the end of the argv array Reviewed-by: vromero ! src/java.base/share/native/libjli/java.c ! test/jdk/tools/launcher/JliLaunchTest.java ! test/jdk/tools/launcher/exeJliLaunchTest.c Changeset: 690d3969 Author: Jie Fu Date: 2023-05-19 11:13:37 +0000 URL: https://git.openjdk.org/loom/commit/690d3969b80776bf896fbfbfac5eabe7d074c9bb 8308408: Build failure with -Werror=maybe-uninitialized in libjli/java.c with GCC8 Reviewed-by: alanb ! src/java.base/share/native/libjli/java.c Changeset: 326d778c Author: Kick-it11 <31734298+Kick-it11 at users.noreply.github.com> Committer: Andrew Haley Date: 2023-05-19 12:59:46 +0000 URL: https://git.openjdk.org/loom/commit/326d778ccfc02a52f1dd3b2675edb386e99b776a 8306057: False arguments calling dispatch_base for aarch64 Reviewed-by: aph, fyang ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp Changeset: 80ef5c22 Author: Adam Sotona Date: 2023-05-19 13:11:41 +0000 URL: https://git.openjdk.org/loom/commit/80ef5c228b0f8a7a881a333c418a5d3068fe5a6e 8308410: broken compilation of test\jdk\tools\launcher\exeJliLaunchTest.c Reviewed-by: alanb ! test/jdk/tools/launcher/exeJliLaunchTest.c Changeset: 44218b1c Author: Maurizio Cimadamore Date: 2023-05-19 14:28:14 +0000 URL: https://git.openjdk.org/loom/commit/44218b1c9e5daa33557aac9336251cf8398d81eb 8308248: Revisit alignment of layout constants on 32-bit platforms Reviewed-by: psandoz, pminborg ! src/java.base/share/classes/java/lang/foreign/MemorySegment.java ! src/java.base/share/classes/java/lang/foreign/ValueLayout.java ! src/java.base/share/classes/jdk/internal/foreign/HeapMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/layout/ValueLayouts.java ! test/jdk/java/foreign/TestLayouts.java ! test/jdk/java/foreign/TestValueLayouts.java Changeset: a5343fa6 Author: Brian Burkhalter Date: 2023-05-19 15:37:37 +0000 URL: https://git.openjdk.org/loom/commit/a5343fa60505764c088dad4a17680d92568509d5 8281149: (fs) java/nio/file/FileStore/Basic.java fails with java.lang.RuntimeException: values differ by more than 1GB Reviewed-by: jpai, rriggs ! test/jdk/java/nio/file/FileStore/Basic.java Changeset: 265f40b4 Author: Coleen Phillimore Date: 2023-05-19 17:16:04 +0000 URL: https://git.openjdk.org/loom/commit/265f40b4f70102c37bf28b2bf9dda16b92d1d975 8308396: Fix offset_of conversion warnings in runtime code Reviewed-by: amitkumar, jsjolen, fparain ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/methodHandles_aarch64.cpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.hpp ! src/hotspot/cpu/arm/macroAssembler_arm.cpp ! src/hotspot/cpu/arm/methodHandles_arm.cpp ! src/hotspot/cpu/arm/sharedRuntime_arm.cpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/cpu/arm/templateTable_arm.cpp ! src/hotspot/cpu/arm/vtableStubs_arm.cpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp ! src/hotspot/cpu/ppc/assembler_ppc.inline.hpp ! src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/methodHandles_ppc.cpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp ! src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp ! src/hotspot/cpu/ppc/templateTable_ppc_64.cpp ! src/hotspot/cpu/ppc/vtableStubs_ppc_64.cpp ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_CodeStubs_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/methodHandles_riscv.cpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp ! src/hotspot/cpu/riscv/templateTable_riscv.cpp ! src/hotspot/cpu/s390/c1_MacroAssembler_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/cpu/s390/methodHandles_s390.cpp ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp ! src/hotspot/cpu/s390/templateTable_s390.cpp ! src/hotspot/cpu/s390/vtableStubs_s390.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/interp_masm_x86.cpp ! src/hotspot/cpu/x86/interp_masm_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/methodHandles_x86.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp ! src/hotspot/cpu/x86/templateTable_x86.cpp ! src/hotspot/cpu/zero/frame_zero.cpp ! src/hotspot/share/c1/c1_FrameMap.cpp ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/jfr/support/jfrKlassExtension.hpp ! src/hotspot/share/jfr/support/jfrThreadExtension.hpp ! src/hotspot/share/jfr/support/jfrThreadLocal.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/oops/compiledICHolder.hpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/cpCache.hpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/oops/klassVtable.hpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/oops/methodData.hpp ! src/hotspot/share/oops/objArrayKlass.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/runtime/basicLock.hpp ! src/hotspot/share/runtime/deoptimization.hpp ! src/hotspot/share/runtime/jniHandles.hpp ! src/hotspot/share/runtime/objectMonitor.hpp ! src/hotspot/share/utilities/sizes.hpp ! test/hotspot/gtest/runtime/test_objectMonitor.cpp Changeset: f0aebc81 Author: Weijun Wang Date: 2023-05-19 17:46:41 +0000 URL: https://git.openjdk.org/loom/commit/f0aebc8141de5a50c88658a40caa01967a9afc53 8305972: Update XML Security for Java to 3.0.2 Reviewed-by: mullan ! src/java.base/share/conf/security/java.security ! src/java.base/share/lib/security/default.policy ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/ECDSAUtils.java + src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureEDDSA.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/NameSpaceSymbTable.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/XmlAttrStack.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/keys/content/MgmtData.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/Manifest.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/NodeFilter.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/ObjectContainer.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/SignatureProperty.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/VerifiedReference.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/XMLSignature.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInputDebugger.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/Transform.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath2Filter.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/I18n.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/RFC2253Parser.java ! src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/DigestMethod.java ! src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/SignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/AbstractDOMSignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java ! src/java.xml.crypto/share/legal/santuario.md ! test/jdk/TEST.groups + test/jdk/javax/xml/crypto/dsig/Basic.java ! test/jdk/javax/xml/crypto/dsig/GenerationTests.java + test/jdk/javax/xml/crypto/dsig/HereFunction.java ! test/jdk/javax/xml/crypto/dsig/SecureValidation.java ! test/lib/jdk/test/lib/security/XMLUtils.java Changeset: 34468e1c Author: Justin Lu Date: 2023-05-19 18:22:50 +0000 URL: https://git.openjdk.org/loom/commit/34468e1c916890d09e83d06094e225435c4642ba 8308021: Update IANA Language Subtag Registry to Version 2023-05-11 Reviewed-by: lancea, naoto ! src/java.base/share/data/lsrdata/language-subtag-registry.txt ! test/jdk/java/util/Locale/LanguageSubtagRegistryTest.java Changeset: 241455fc Author: Leonid Mesnik Date: 2023-05-19 18:42:23 +0000 URL: https://git.openjdk.org/loom/commit/241455fcd11a20443f7bfa72544ed858f6bebe8b 8307962: Exclude gc/g1/TestSkipRebuildRemsetPhase.java fails with virtual test thread factory Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt Changeset: 939344b8 Author: Kevin Walls Date: 2023-05-19 18:57:55 +0000 URL: https://git.openjdk.org/loom/commit/939344b8433b32166f42ad73ae3d96e84b033478 8304685: Fix whitespace parsing in libjdwp Reviewed-by: cjplummer, amenkov, sspitsyn ! src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c Changeset: a0f4a948 Author: Daniel D. Daugherty Date: 2023-05-20 16:40:05 +0000 URL: https://git.openjdk.org/loom/commit/a0f4a948bb76ce5ea11d8fe08e788ed43516ca4e 8307783: runtime/reflect/ReflectOutOfMemoryError.java timed out 8308468: ProblemList containers/docker/TestMemoryAwareness.java on linux-x64 8308470: ProblemList javax/management/remote/mandatory/connection/BrokenConnectionTest.java on linux-all 8308471: ProblemList javax/management/remote/mandatory/loading/MissingClassTest.java on windows-x64 w/ loom 8308472: ProblemList javax/management/remote/mandatory/loading/RMIDownloadTest.java on windows-x64 w/ loom 8308473: ProblemList java/lang/instrument/NativeMethodPrefixAgent.java with loom Reviewed-by: lmesnik ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/runtime/reflect/ReflectOutOfMemoryError.java ! test/jdk/ProblemList-Virtual.txt ! test/jdk/ProblemList.txt Changeset: 5ccc9629 Author: Ioi Lam Date: 2023-05-21 05:32:36 +0000 URL: https://git.openjdk.org/loom/commit/5ccc9629424c802a5c676553776ee5d2fb2ca3e3 8308342: Remove MetaspaceClosure::Ref::keep_after_pushing() Reviewed-by: ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/memory/metaspaceClosure.cpp ! src/hotspot/share/memory/metaspaceClosure.hpp Changeset: eaa80ad0 Author: Jan Lahoda Date: 2023-05-22 04:24:06 +0000 URL: https://git.openjdk.org/loom/commit/eaa80ad08c949a05abcfa48897654ed52139145b 8300543: Compiler Implementation for Pattern Matching for switch 8300545: Compiler Implementation for Record Patterns Co-authored-by: Aggelos Biboudis Reviewed-by: vromero, mcimadamore ! src/java.base/share/classes/java/lang/MatchException.java ! src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/jdk.compiler/share/classes/com/sun/source/tree/CaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/ConstantCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/DeconstructionPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/DefaultCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/EnhancedForLoopTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/InstanceOfTree.java - src/jdk.compiler/share/classes/com/sun/source/tree/ParenthesizedPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/PatternCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ThisEscapeAnalyzer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/jdk/java/lang/runtime/SwitchBootstrapsTest.java ! test/langtools/tools/javac/ConditionalExpressionResolvePending.java ! test/langtools/tools/javac/T8286797.java ! test/langtools/tools/javac/T8286797.out - test/langtools/tools/javac/T8290379.java ! test/langtools/tools/javac/T8295447.java ! test/langtools/tools/javac/T8295447.out - test/langtools/tools/javac/T8297602.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/Patterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/RuleSwitchBreaks.java ! test/langtools/tools/javac/diags/examples.not-yet.txt + test/langtools/tools/javac/diags/examples/CannotAssignNotDeclaredGuard.java ! test/langtools/tools/javac/diags/examples/CantRefNonEffectivelyFinalVar.java ! test/langtools/tools/javac/diags/examples/CaseNull.java ! test/langtools/tools/javac/diags/examples/ConstantLabelNotCompatible.java ! test/langtools/tools/javac/diags/examples/DeconstructionPatternOnlyRecords.java ! test/langtools/tools/javac/diags/examples/DefaultLabelNotAllowed.java ! test/langtools/tools/javac/diags/examples/DuplicateUnconditionalPattern.java ! test/langtools/tools/javac/diags/examples/EnumLabelUnqualified.java + test/langtools/tools/javac/diags/examples/FeatureDeconstructionPatterns.java ! test/langtools/tools/javac/diags/examples/FeatureUnconditionalPatternsInInstanceof.java ! test/langtools/tools/javac/diags/examples/FlowsThroughFromPattern.java ! test/langtools/tools/javac/diags/examples/FlowsThroughToPattern.java - test/langtools/tools/javac/diags/examples/ForeachNotExhaustive.java ! test/langtools/tools/javac/diags/examples/GuardHasConstantFalse.java + test/langtools/tools/javac/diags/examples/GuardNotAllowed.java ! test/langtools/tools/javac/diags/examples/IncorrectNumberOfNestedPatterns.java - test/langtools/tools/javac/diags/examples/InstanceofPatternNoSubtype.java ! test/langtools/tools/javac/diags/examples/InvalidCaseLabelCombination.java ! test/langtools/tools/javac/diags/examples/NotApplicableTypes.java ! test/langtools/tools/javac/diags/examples/NotExhaustiveStatement.java ! test/langtools/tools/javac/diags/examples/PatternDominated.java ! test/langtools/tools/javac/diags/examples/PatternExpected.java ! test/langtools/tools/javac/diags/examples/PatternSwitch.java ! test/langtools/tools/javac/diags/examples/PatternTypeCannotInfer.java + test/langtools/tools/javac/diags/examples/RecordPatternsAnnotationsNotAllowed.java ! test/langtools/tools/javac/diags/examples/UnconditionalPatternAndDefault.java ! test/langtools/tools/javac/enum/EnumSwitch2.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/parser/JavacParserTest.java + test/langtools/tools/javac/patterns/AnnotationErrors.java + test/langtools/tools/javac/patterns/AnnotationErrors.out ! test/langtools/tools/javac/patterns/CaseStructureTest.java ! test/langtools/tools/javac/patterns/DeconstructionDesugaring.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out ! test/langtools/tools/javac/patterns/DisambiguatePatterns.java ! test/langtools/tools/javac/patterns/Domination.java ! test/langtools/tools/javac/patterns/Domination.out ! test/langtools/tools/javac/patterns/EmptyRecordClass.java ! test/langtools/tools/javac/patterns/EnumTypeChanges.java ! test/langtools/tools/javac/patterns/EnumTypeChangesNonPreview.java ! test/langtools/tools/javac/patterns/Exhaustiveness.java - test/langtools/tools/javac/patterns/ForEachPatterns.java - test/langtools/tools/javac/patterns/ForEachPatternsErrors.java - test/langtools/tools/javac/patterns/ForEachPatternsErrors.out - test/langtools/tools/javac/patterns/ForEachTestAllAnalyzers.java ! test/langtools/tools/javac/patterns/GenericRecordDeconstructionPattern.java ! test/langtools/tools/javac/patterns/Guards.java ! test/langtools/tools/javac/patterns/GuardsErrors.java ! test/langtools/tools/javac/patterns/GuardsErrors.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern-15.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern-16.out + test/langtools/tools/javac/patterns/InstanceofTotalPattern-20.out - test/langtools/tools/javac/patterns/InstanceofTotalPattern-preview.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern.java ! test/langtools/tools/javac/patterns/LambdaCannotCapturePatternVariables.java ! test/langtools/tools/javac/patterns/MatchExceptionTest.java ! test/langtools/tools/javac/patterns/NestedDeconstructionPattern.java ! test/langtools/tools/javac/patterns/NestedPatternVariablesBytecode.java ! test/langtools/tools/javac/patterns/NestedPrimitiveDeconstructionPattern.java ! test/langtools/tools/javac/patterns/NewCaseStructureTest.java ! test/langtools/tools/javac/patterns/NoSubtypeCheck.java ! test/langtools/tools/javac/patterns/NullSwitch.java ! test/langtools/tools/javac/patterns/NullsInDeconstructionPatterns.java ! test/langtools/tools/javac/patterns/NullsInPatterns.java ! test/langtools/tools/javac/patterns/Parenthesized.java + test/langtools/tools/javac/patterns/Parenthesized.out - test/langtools/tools/javac/patterns/ParenthesizedCombo.java ! test/langtools/tools/javac/patterns/PatternCaseErrorRecovery.java ! test/langtools/tools/javac/patterns/PatternDesugaring.java - test/langtools/tools/javac/patterns/PatternErrorRecovery-no-preview.out + test/langtools/tools/javac/patterns/PatternErrorRecovery-old.out ! test/langtools/tools/javac/patterns/PatternErrorRecovery.java ! test/langtools/tools/javac/patterns/PatternErrorRecovery.out ! test/langtools/tools/javac/patterns/PrettyTest.java ! test/langtools/tools/javac/patterns/ProxyMethodLookup.java ! test/langtools/tools/javac/patterns/RawTypeBindingWarning.java ! test/langtools/tools/javac/patterns/RawTypeBindingWarning.out ! test/langtools/tools/javac/patterns/SealedTypeChanges.java ! test/langtools/tools/javac/patterns/SimpleAndGuardPattern.java ! test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java - test/langtools/tools/javac/patterns/SimpleDeconstructionPatternNoPreview.out + test/langtools/tools/javac/patterns/SimpleDeconstructionPatternOld.out ! test/langtools/tools/javac/patterns/SourceLevelChecks.java ! test/langtools/tools/javac/patterns/SwitchErrors.java ! test/langtools/tools/javac/patterns/SwitchErrors.out ! test/langtools/tools/javac/patterns/Switches.java ! test/langtools/tools/javac/patterns/T8291657.java ! test/langtools/tools/javac/patterns/TranslationTest.java ! test/langtools/tools/javac/patterns/TypedDeconstructionPatternExc.java ! test/langtools/tools/javac/patterns/VarErrors.java ! test/langtools/tools/javac/patterns/VarErrors.out ! test/langtools/tools/javac/sealed/MissingPermittedSubtypes.java ! test/langtools/tools/javac/switchexpr/ExhaustiveEnumSwitch.java ! test/langtools/tools/javac/switchexpr/SwitchExpressionNoValue.java + test/langtools/tools/javac/switchextra/EnumSwitchQualified.java + test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.java + test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.out ! test/langtools/tools/javac/switchextra/RuleParsingTest.java ! test/langtools/tools/javac/switchextra/SwitchNoExtraTypes.out ! test/langtools/tools/javac/switchextra/SwitchObject.out ! test/langtools/tools/javac/switchnull/SwitchNull.java - test/langtools/tools/javac/switchnull/SwitchNullDisabled-preview.out ! test/langtools/tools/javac/switchnull/SwitchNullDisabled.java ! test/langtools/tools/javac/switchnull/SwitchNullDisabled.out ! test/langtools/tools/lib/toolbox/TestRunner.java Changeset: b6a9f5c3 Author: Emanuel Peter Date: 2023-05-22 06:23:19 +0000 URL: https://git.openjdk.org/loom/commit/b6a9f5c304d9ffe74161d25af84f7c5bc1c09b33 8307619: C2 failed: Not monotonic (AndI CastII LShiftI) in TestShiftCastAndNotification.java Reviewed-by: chagedorn, thartmann ! src/hotspot/share/opto/mulnode.cpp Changeset: 41beb448 Author: Emanuel Peter Date: 2023-05-22 06:26:55 +0000 URL: https://git.openjdk.org/loom/commit/41beb448d2ac5d432558f25362a787a9511a5d83 8308084: C2 fix idom bug in PhaseIdealLoop::create_new_if_for_predicate Reviewed-by: chagedorn, thartmann, kvn ! src/hotspot/share/opto/loopPredicate.cpp Changeset: 928fcf97 Author: Serguei Spitsyn Date: 2023-05-22 07:34:35 +0000 URL: https://git.openjdk.org/loom/commit/928fcf975174df0d5020378466e3eb76976afa21 8308000: add PopFrame support for virtual threads Reviewed-by: lmesnik, alanb ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiEnv.cpp ! src/hotspot/share/prims/jvmtiEnvBase.cpp ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/serviceability/jvmti/vthread/BoundVThreadTest/libBoundVThreadTest.cpp + test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest/PopFrameTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest/libPopFrameTest.cpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/libVThreadUnsupportedTest.cpp Changeset: b5887979 Author: Leo Korinth Date: 2023-05-22 08:17:53 +0000 URL: https://git.openjdk.org/loom/commit/b58879790083b704da94ea1476fcadb0e65b0805 8307804: Reorganize ArrayJuggle test cases Reviewed-by: dholmes, lmesnik ! test/hotspot/jtreg/TEST.groups ! test/hotspot/jtreg/TEST.quick-groups - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle01/Juggle01.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle02/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle02/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle03/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle03/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle04/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle04/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle05/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle05/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle06/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle06/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle07/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle07/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle08/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle08/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle09/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle09/TestDescription.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle1.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle10/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle10/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle11/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle11/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle12/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle12/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle13/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle13/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle14/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle14/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle15/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle15/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle16/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle16/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle17/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle17/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle18/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle18/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle19/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle19/TestDescription.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle2.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle20/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle20/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle21/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle21/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle22/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle22/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle23/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle23/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle24/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle24/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle25/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle25/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle26/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle26/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle27/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle27/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle28/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle28/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle29/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle29/TestDescription.java + test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle3.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle30/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle30/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle31/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle31/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle32/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle32/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle33/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle33/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle34/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle34/TestDescription.java + test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle3Quick.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/ArrayJuggle.README - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1_gc/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1_gc/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2_gc/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2_gc/TestDescription.java Changeset: 8aa50288 Author: Aggelos Biboudis Committer: Jan Lahoda Date: 2023-05-22 08:52:36 +0000 URL: https://git.openjdk.org/loom/commit/8aa50288a1a6a853bf4d8d97b1849d5744ed7a32 8302344: Compiler Implementation for Unnamed patterns and variables (Preview) 8307444: java.lang.AssertionError when using unnamed patterns 8307482: Compiler should accept var _ in nested patterns in switch case 8307007: Implementation for javax.lang.model for unnamed variables (Preview) 8308312: Compiler should fail when a local variable declaration does not include an Identifier and does not have an initializer 8308309: Compiler should accept mixed masked and unmasked variables in lambda parameters Co-authored-by: Jan Lahoda Co-authored-by: Aggelos Biboudis Reviewed-by: vromero, darcy ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.compiler/share/classes/javax/lang/model/element/Element.java ! src/java.compiler/share/classes/javax/lang/model/element/VariableElement.java + src/jdk.compiler/share/classes/com/sun/source/tree/AnyPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/tree/VariableTree.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java + test/langtools/tools/javac/TryWithResources/TwrLintUnderscore.java + test/langtools/tools/javac/TryWithResources/TwrLintUnderscore.out ! test/langtools/tools/javac/api/TestGetScopeResult.java ! test/langtools/tools/javac/diags/examples/UnderscoreInLambdaExpression.java + test/langtools/tools/javac/diags/examples/UseOfUnderscoreNotAllowed.java ! test/langtools/tools/javac/lambda/IdentifierTest.java + test/langtools/tools/javac/lambda/IdentifierTest21.out ! test/langtools/tools/javac/lambda/IdentifierTest8.out ! test/langtools/tools/javac/lambda/IdentifierTest9.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent.java + test/langtools/tools/javac/lambda/UnderscoreAsIdent21.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent8.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent9.out ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out ! test/langtools/tools/javac/patterns/PrettyTest.java + test/langtools/tools/javac/patterns/Unnamed.java + test/langtools/tools/javac/patterns/UnnamedErrors.java + test/langtools/tools/javac/patterns/UnnamedErrors.out ! test/langtools/tools/javac/processing/model/element/TestNames.java + test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElement.java + test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElement8.java = test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElementData.java ! test/langtools/tools/javac/tree/VarTree.java Changeset: 8011ba74 Author: Erik ?sterlund Date: 2023-05-22 10:20:45 +0000 URL: https://git.openjdk.org/loom/commit/8011ba74a20c069e094a878ab4a1843036521272 8308181: Generational ZGC: Remove CLDG_lock from old gen root scanning Reviewed-by: ayang, aboldtch ! src/hotspot/share/gc/z/zGeneration.cpp ! src/hotspot/share/gc/z/zMark.cpp Changeset: 6b65e575 Author: Andrey Turbanov Date: 2023-05-22 10:27:13 +0000 URL: https://git.openjdk.org/loom/commit/6b65e5754cc96c812892077881fc069e02fedc62 8305785: Avoid redundant HashMap.containsKey call in java.util.regex Reviewed-by: stsypanov, jpai ! src/java.base/share/classes/java/util/regex/Matcher.java ! src/java.base/share/classes/java/util/regex/Pattern.java Changeset: a9705196 Author: Jan Lahoda Date: 2023-05-22 10:39:26 +0000 URL: https://git.openjdk.org/loom/commit/a9705196cea7d6f468b76b1cfff561352ee0b6b2 8306983: Do not invoke external programs when switch terminal to raw mode on selected platforms Co-authored-by: Adam Sotona Reviewed-by: erikj, vromero, bpb ! make/modules/jdk.internal.le/Lib.gmk + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/JDKNativePty.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/CLibrary.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/CLibraryImpl.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/LinuxNativePty.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/UtilLibraryImpl.java + src/jdk.internal.le/linux/native/lible/CLibrary.cpp + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/JDKNativePty.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/CLibrary.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/CLibraryImpl.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/NativeLong.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/OsXNativePty.java + src/jdk.internal.le/macosx/native/lible/CLibrary.cpp ! src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java + src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/jna/LastErrorException.java + src/jdk.internal.le/unix/classes/jdk/internal/org/jline/terminal/impl/jna/JnaNativePty.java + src/jdk.internal.le/unix/classes/jdk/internal/org/jline/terminal/impl/jna/JnaTerminalProvider.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/JnaWinConsoleWriter.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/JnaWinSysTerminal.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/Kernel32.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/Kernel32Impl.java - src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/LastErrorException.java ! src/jdk.internal.le/windows/native/lible/Kernel32.cpp Changeset: 05e99db4 Author: Darragh Clarke Committer: Jaikiran Pai Date: 2023-05-22 10:53:59 +0000 URL: https://git.openjdk.org/loom/commit/05e99db466e7ef5c26f089db772a21cb2ca62e93 7065228: To interpret case-insensitive string locale independently Reviewed-by: dfuchs, naoto, djelinski, jpai, michaelm ! src/java.base/share/classes/java/net/HttpCookie.java ! src/java.base/share/classes/java/net/InetSocketAddress.java ! src/java.base/share/classes/java/net/SocketPermission.java ! src/java.base/share/classes/java/net/URLConnection.java ! src/java.base/share/classes/java/net/URLStreamHandler.java ! src/java.base/share/classes/sun/net/ftp/FtpDirEntry.java ! src/java.base/share/classes/sun/net/spi/DefaultProxySelector.java ! src/java.base/share/classes/sun/net/util/URLUtil.java ! src/java.base/share/classes/sun/net/www/HeaderParser.java ! src/java.base/share/classes/sun/net/www/MimeEntry.java ! src/java.base/share/classes/sun/net/www/MimeTable.java ! src/java.base/share/classes/sun/net/www/URLConnection.java ! src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java ! src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java ! src/java.base/share/classes/sun/net/www/protocol/http/DigestAuthentication.java ! src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java ! src/java.base/share/classes/sun/net/www/protocol/http/NegotiateAuthentication.java ! src/java.security.jgss/share/classes/sun/net/www/protocol/http/spnego/NegotiatorImpl.java ! src/jdk.httpserver/share/classes/sun/net/httpserver/ContextList.java ! src/jdk.httpserver/share/classes/sun/net/httpserver/HttpContextImpl.java Changeset: 3d550f74 Author: Alexander Zvegintsev Date: 2023-05-22 11:37:12 +0000 URL: https://git.openjdk.org/loom/commit/3d550f748521443dc2e148aa4f786060419f1113 8280993: [XWayland] Popup is not closed on click outside of area controlled by XWayland Reviewed-by: prr ! src/java.desktop/share/classes/javax/swing/JPopupMenu.java ! src/java.desktop/share/classes/sun/awt/SunToolkit.java ! src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java ! src/java.desktop/unix/classes/sun/awt/X11/XBaseWindow.java ! src/java.desktop/unix/classes/sun/awt/X11/XMenuWindow.java ! src/java.desktop/unix/classes/sun/awt/X11/XPopupMenuPeer.java Changeset: b3cb82b8 Author: Prasanta Sadhukhan Date: 2023-05-22 11:42:11 +0000 URL: https://git.openjdk.org/loom/commit/b3cb82b859d22b18343d125349a5aebc0afb8576 8307311: Timeouts on one macOS 12.6.1 host of two Swing JTableHeader tests Reviewed-by: dnguyen, azvegint ! test/jdk/javax/swing/JTableHeader/6889007/bug6889007.java Changeset: 18e24464 Author: Matthew Donovan Date: 2023-05-22 12:03:13 +0000 URL: https://git.openjdk.org/loom/commit/18e2446420d3376acaa2652d70474c2d3a85e2ac 8301381: Verify DTLS 1.0 cannot be negotiated Reviewed-by: xuelei + test/jdk/javax/net/ssl/DTLS/DTLSWontNegotiateV10.java Changeset: dc30e686 Author: Andrew Leonard Date: 2023-05-22 12:23:45 +0000 URL: https://git.openjdk.org/loom/commit/dc30e686516d50bdc65542d440e1e428362efb67 8308407: libjvm library not reproducibly comparable between vendors Co-authored-by: Simon Tooke Reviewed-by: andrew, dholmes ! src/hotspot/share/runtime/abstract_vm_version.cpp Changeset: 4f88437b Author: Thomas Obermeier <128162199+TOatGithub at users.noreply.github.com> Committer: Goetz Lindenmaier Date: 2023-05-22 12:37:43 +0000 URL: https://git.openjdk.org/loom/commit/4f88437b7fc26e1d9b096b535a4dbfd8a9d227f1 8307908: [ppc] Add failing RTM tests to ProblemList until 8307907 is fixed. Reviewed-by: clanger, goetz ! test/hotspot/jtreg/ProblemList.txt Changeset: 91aeb5de Author: Maurizio Cimadamore Date: 2023-05-22 14:51:09 +0000 URL: https://git.openjdk.org/loom/commit/91aeb5de580633dfc361957051cd00545aa883c7 8287834: Add SymbolLookup::or method Reviewed-by: psandoz ! src/java.base/share/classes/java/lang/foreign/SymbolLookup.java + test/jdk/java/foreign/CompositeLookupTest.java Changeset: 5fc9b578 Author: Maurizio Cimadamore Date: 2023-05-22 14:57:00 +0000 URL: https://git.openjdk.org/loom/commit/5fc9b5787dc4d7f00d2c59288bc8d840fdf5b495 8308276: Change layout API to work with bytes, not bits Reviewed-by: psandoz, pminborg ! src/java.base/share/classes/java/lang/foreign/AddressLayout.java ! src/java.base/share/classes/java/lang/foreign/GroupLayout.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/PaddingLayout.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/UnionLayout.java ! src/java.base/share/classes/java/lang/foreign/ValueLayout.java ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/LayoutPath.java ! src/java.base/share/classes/jdk/internal/foreign/NativeMemorySegmentImpl.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/SharedUtils.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/TypeClass.java ! src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIType.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/TypeClass.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/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template ! test/jdk/java/foreign/MemoryLayoutTypeRetentionTest.java ! test/jdk/java/foreign/NativeTestHelper.java ! test/jdk/java/foreign/StdLibTest.java ! test/jdk/java/foreign/TestArrayCopy.java ! test/jdk/java/foreign/TestByteBuffer.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestHeapAlignment.java ! test/jdk/java/foreign/TestIllegalLink.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/TestNulls.java ! test/jdk/java/foreign/TestSegmentAllocators.java ! test/jdk/java/foreign/TestSegmentCopy.java ! test/jdk/java/foreign/TestSpliterator.java ! test/jdk/java/foreign/TestUpcallHighArity.java ! test/jdk/java/foreign/TestUpcallStructScope.java ! test/jdk/java/foreign/TestValueLayouts.java ! test/jdk/java/foreign/TestVarHandleCombinators.java ! test/jdk/java/foreign/callarranger/TestLayoutEquality.java ! test/jdk/java/foreign/callarranger/TestLinuxAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestRISCV64CallArranger.java ! test/jdk/java/foreign/callarranger/TestSysVCallArranger.java ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/lang/Thread/jni/AttachCurrentThread/ImplicitAttach.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/templates/X-LoadStoreTest.java.template Changeset: 29b8d3d9 Author: George Adams Committer: Jesper Wilhelmsson Date: 2023-05-22 15:44:52 +0000 URL: https://git.openjdk.org/loom/commit/29b8d3d9e73c3771f18b8d4d69e32475f17346fa 8307573: Implementation of JEP 449: Deprecate the Windows 32-bit x86 Port for Removal Reviewed-by: erikj ! doc/building.html ! doc/building.md ! make/autoconf/platform.m4 Changeset: b58980b7 Author: Calvin Cheung Date: 2023-05-22 15:53:04 +0000 URL: https://git.openjdk.org/loom/commit/b58980b73d5fdbbfd2c8395ceca61fd1cbf613c8 8308034: Some CDS tests need to use @requires vm.flagless Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DifferentHeapSizes.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/IncompatibleOptions.java Changeset: 491bdeaa Author: Jiangli Zhou Date: 2023-05-22 16:24:45 +0000 URL: https://git.openjdk.org/loom/commit/491bdeaa90aaafd15615d2c4e42aaff5940938e3 8308458: Windows build failure with disassembler.cpp(792): warning C4267: '=': conversion from 'size_t' to 'int' Reviewed-by: jiefu ! src/hotspot/share/compiler/disassembler.cpp Changeset: 3f4cfbdd Author: Matias Saavedra Silva Date: 2023-05-22 16:27:17 +0000 URL: https://git.openjdk.org/loom/commit/3f4cfbdd36bf91ece5c2f364c3f3e9a6e83de1e6 8307190: Refactor ref_at methods in Constant Pool Reviewed-by: coleenp, iklam ! src/hotspot/share/ci/ciEnv.cpp ! src/hotspot/share/ci/ciEnv.hpp ! src/hotspot/share/ci/ciField.cpp ! src/hotspot/share/ci/ciField.hpp ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/ci/ciMethod.hpp ! src/hotspot/share/ci/ciReplay.cpp ! src/hotspot/share/ci/ciStreams.cpp ! src/hotspot/share/interpreter/bytecode.cpp ! src/hotspot/share/interpreter/bytecodeUtils.cpp ! src/hotspot/share/interpreter/interpreterRuntime.cpp ! src/hotspot/share/interpreter/linkResolver.cpp ! src/hotspot/share/interpreter/linkResolver.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/generateOopMap.cpp ! src/hotspot/share/oops/generateOopMap.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp ! src/hotspot/share/prims/methodComparator.cpp ! src/hotspot/share/prims/methodHandles.cpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ConstantPoolTestsHelper.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupKlassRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameAndTypeRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupSignatureInPoolTest.java Changeset: d77a4103 Author: Joe Darcy Date: 2023-05-22 16:30:37 +0000 URL: https://git.openjdk.org/loom/commit/d77a41033a162c2c9bf02d6b8da91f2825320ad8 8308388: Update description of SourceVersion.RELEASE_21 Reviewed-by: iris ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java Changeset: f99ad11d Author: quadhier Committer: Ioi Lam Date: 2023-05-22 16:51:20 +0000 URL: https://git.openjdk.org/loom/commit/f99ad11dd11a4d83e5227b246866822e69b38ae7 8302218: CHeapBitMap::free frees with incorrect size Reviewed-by: aboldtch, iklam, tschatzl ! src/hotspot/share/utilities/bitMap.cpp Changeset: 8474e693 Author: Yi-Fan Tsai Committer: Paul Hohensee Date: 2023-05-22 16:53:23 +0000 URL: https://git.openjdk.org/loom/commit/8474e693b4404ba62927fe0e43e68b904d66fbde 8308465: Reduce memory accesses in AArch64 MD5 intrinsic Reviewed-by: aph, phh ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp Changeset: 90d5041b Author: Johan Sj?len Date: 2023-05-22 19:41:59 +0000 URL: https://git.openjdk.org/loom/commit/90d5041b6a055d6266140ffea2aa9a3b08b32209 8300086: Replace NULL with nullptr in share/c1/ Reviewed-by: thartmann, chagedorn ! src/hotspot/share/c1/c1_CFGPrinter.cpp ! src/hotspot/share/c1/c1_CFGPrinter.hpp ! src/hotspot/share/c1/c1_Canonicalizer.cpp ! src/hotspot/share/c1/c1_CodeStubs.hpp ! src/hotspot/share/c1/c1_Compilation.cpp ! src/hotspot/share/c1/c1_Compilation.hpp ! src/hotspot/share/c1/c1_Compiler.cpp ! src/hotspot/share/c1/c1_FrameMap.cpp ! src/hotspot/share/c1/c1_FrameMap.hpp ! src/hotspot/share/c1/c1_GraphBuilder.cpp ! src/hotspot/share/c1/c1_GraphBuilder.hpp ! src/hotspot/share/c1/c1_IR.cpp ! src/hotspot/share/c1/c1_IR.hpp ! src/hotspot/share/c1/c1_Instruction.cpp ! src/hotspot/share/c1/c1_Instruction.hpp ! src/hotspot/share/c1/c1_InstructionPrinter.cpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.cpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_LIRGenerator.hpp ! src/hotspot/share/c1/c1_LinearScan.cpp ! src/hotspot/share/c1/c1_Optimizer.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.hpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/c1/c1_ValueMap.cpp ! src/hotspot/share/c1/c1_ValueMap.hpp ! src/hotspot/share/c1/c1_ValueStack.cpp ! src/hotspot/share/c1/c1_ValueStack.hpp ! src/hotspot/share/c1/c1_ValueType.cpp ! src/hotspot/share/c1/c1_ValueType.hpp Changeset: 878162b3 Author: Thomas Stuefe Date: 2023-05-22 19:59:02 +0000 URL: https://git.openjdk.org/loom/commit/878162b362f64e5f434f8ad340514c9f94a2b4ea 8306507: [linux] Print number of memory mappings in error reports Reviewed-by: adinn, sgehwolf ! src/hotspot/os/linux/os_linux.cpp Changeset: 5d8ba938 Author: Ichiroh Takiguchi Date: 2023-05-23 00:41:59 +0000 URL: https://git.openjdk.org/loom/commit/5d8ba938bef162b74816147eb1002a0620a419ba 8308046: Move Solaris related charsets from java.base to jdk.charsets module Reviewed-by: naoto ! make/data/charsetmapping/DoubleByte-X.java.template ! make/data/charsetmapping/stdcs-linux ! src/jdk.charsets/share/classes/sun/nio/cs/ext/Big5_Solaris.java.template ! src/jdk.charsets/share/classes/sun/nio/cs/ext/EUC_JP.java.template Changeset: ada416e6 Author: Alan Bateman Date: 2023-05-23 07:05:07 +0000 URL: https://git.openjdk.org/loom/commit/ada416e66cbff6c8e631bf352acc0744c248740b 8308235: ThreadContainer registry accumulates weak refs Reviewed-by: jpai ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java + test/jdk/java/util/concurrent/Executors/UnreferencedExecutor.java Changeset: fe8c689e Author: Alan Bateman Date: 2023-05-23 07:05:44 +0000 URL: https://git.openjdk.org/loom/commit/fe8c689eeea4fa19d4a8742f4ef1d8216f1394e6 8308038: java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java timed out Reviewed-by: dfuchs, jpai ! test/jdk/java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java Changeset: 422128b7 Author: Doug Simon Date: 2023-05-23 07:20:00 +0000 URL: https://git.openjdk.org/loom/commit/422128b70a57c8c6a997938fbf8d8cb19bed65e4 8306992: [JVMCI] mitigate more against JVMCI related OOME causing VM to exit Reviewed-by: never ! src/hotspot/share/jvmci/jvmci.cpp ! src/hotspot/share/jvmci/jvmciCompiler.cpp ! src/hotspot/share/jvmci/jvmciCompiler.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestHotSpotJVMCIRuntime.java Changeset: c4408278 Author: Adam Sotona Date: 2023-05-23 07:23:37 +0000 URL: https://git.openjdk.org/loom/commit/c4408278d1012746c91ba4c31068538850c68d30 8308093: Disable language preview features use in JDK Reviewed-by: liach, erikj, alanb, darcy ! make/Docs.gmk ! make/modules/java.base/Java.gmk ! make/modules/jdk.jartool/Java.gmk ! src/java.base/share/classes/module-info.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.jartool/share/classes/module-info.java ! test/jdk/jdk/classfile/TEST.properties ! test/micro/org/openjdk/bench/jdk/classfile/AbstractCorpusBenchmark.java ! test/micro/org/openjdk/bench/jdk/classfile/GenerateStackMaps.java ! test/micro/org/openjdk/bench/jdk/classfile/RebuildMethodBodies.java ! test/micro/org/openjdk/bench/jdk/classfile/RepeatedModelTraversal.java ! test/micro/org/openjdk/bench/jdk/classfile/Write.java Changeset: 69f508a2 Author: Matthias Baesken Date: 2023-05-23 07:43:14 +0000 URL: https://git.openjdk.org/loom/commit/69f508a2ac344eb61cef7be985348873b8265171 8308300: enhance exceptions in MappedMemoryUtils.c Reviewed-by: alanb, clanger, bpb ! src/java.base/share/native/libjava/jni_util.c ! src/java.base/share/native/libjava/jni_util.h ! src/java.base/unix/native/libnio/MappedMemoryUtils.c Changeset: 06b0a5e0 Author: Emanuel Peter Date: 2023-05-23 08:05:13 +0000 URL: https://git.openjdk.org/loom/commit/06b0a5e03852dfed9f1dee4791fc71b4e4e1eeda 8302652: [SuperWord] Reduction should happen after loop, when possible Reviewed-by: kvn, pli, jbhateja, sviswanathan ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! test/hotspot/jtreg/compiler/loopopts/superword/ProdRed_Int.java ! test/hotspot/jtreg/compiler/loopopts/superword/RedTest_int.java ! test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java ! test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java ! test/hotspot/jtreg/compiler/loopopts/superword/SumRed_Int.java ! test/hotspot/jtreg/compiler/loopopts/superword/SumRed_Long.java + test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java Changeset: 4f0f7761 Author: Amit Kumar Committer: Lutz Schmidt Date: 2023-05-23 08:32:27 +0000 URL: https://git.openjdk.org/loom/commit/4f0f77618731003010198e2163c9f3f53892a64f 8308403: [s390x] separate remaining_cargs from z_abi_160 Reviewed-by: mdoerr, lucy ! src/hotspot/cpu/s390/frame_s390.hpp Changeset: bdd24028 Author: Emanuel Peter Date: 2023-05-23 09:51:19 +0000 URL: https://git.openjdk.org/loom/commit/bdd240283e1690adf52b2fe7a751d579cb89b33b 8260943: C2 SuperWord: Remove dead vectorization optimization added by 8076284 Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp Changeset: e5596133 Author: Axel Boldt-Christmas Date: 2023-05-23 10:45:01 +0000 URL: https://git.openjdk.org/loom/commit/e55961331e10884e4255ab152d430ceb3f02748c 8308500: ZStatSubPhase::register_start should not call register_gc_phase_start if ZAbort::should_abort() Reviewed-by: stefank, eosterlund ! src/hotspot/share/gc/z/zStat.cpp Changeset: 80d7de70 Author: Aggelos Biboudis Committer: Jan Lahoda Date: 2023-05-23 11:18:55 +0000 URL: https://git.openjdk.org/loom/commit/80d7de7074ef5b78e458f5e2cb88938b722eecc0 8305582: Compiler crash when compiling record patterns with var Reviewed-by: vromero, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/T8305582.java + test/langtools/tools/javac/T8305582.out + test/langtools/tools/javac/diags/examples/DeconstructionpatternsNonVar.java Changeset: 26227a6f Author: Emanuel Peter Date: 2023-05-23 11:25:01 +0000 URL: https://git.openjdk.org/loom/commit/26227a6ff86dae21c143fe93d58a73605386adae 8305073: Fix VerifyLoopOptimizations - step 2 - verify idom Reviewed-by: chagedorn, thartmann, kvn ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopopts/TestVerifyLoopOptimizations.java Changeset: eb11508e Author: Per Minborg Date: 2023-05-23 11:29:05 +0000 URL: https://git.openjdk.org/loom/commit/eb11508eff7b2e01b8942f4cda9fb01527a860b5 8308281: Java snippets in the FFM API need to be updated Reviewed-by: mcimadamore ! src/java.base/share/classes/java/lang/foreign/Arena.java ! src/java.base/share/classes/java/lang/foreign/Linker.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/ValueLayout.java ! src/java.base/share/classes/java/lang/foreign/package-info.java + src/java.base/share/classes/java/lang/foreign/snippet-files/Snippets.java Changeset: 1cfb265b Author: Jan Lahoda Date: 2023-05-23 11:47:00 +0000 URL: https://git.openjdk.org/loom/commit/1cfb265befa497e4c1c9a75c0fb576bb75adea70 8307814: In the case of two methods with Record Patterns, the second one contains a line number from the first method Reviewed-by: vromero, godin ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/LineNumberTestBase.java + test/langtools/tools/javac/classfiles/attributes/LineNumberTable/MultipleRecordPatterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/TestCase.java Changeset: 582ddeb2 Author: Daniel Fuchs Date: 2023-05-23 12:02:58 +0000 URL: https://git.openjdk.org/loom/commit/582ddeb2b24f77307b89befc8c643290e0ed1b11 8308545: java/net/httpclient/ShutdownNow.java fails with "stream 1 cancelled" Reviewed-by: jpai ! test/jdk/java/net/httpclient/ShutdownNow.java Changeset: 9e196b36 Author: Daniel Fuchs Date: 2023-05-23 12:07:23 +0000 URL: https://git.openjdk.org/loom/commit/9e196b3631af0156ce9958a2f631894968211a4c 8308565: HttpClient: Sanitize logging while stopping Reviewed-by: jpai ! src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java Changeset: c0c4d771 Author: Jan Kratochvil Committer: Thomas Stuefe Date: 2023-05-23 13:50:58 +0000 URL: https://git.openjdk.org/loom/commit/c0c4d771922f8fce36f1014e57d7e7a213243891 8308544: Fix compilation regression from JDK-8306983 on musl libc Reviewed-by: bpb, stuefe ! src/jdk.internal.le/linux/native/lible/CLibrary.cpp Changeset: bb0ff48a Author: Jamil Nimeh Date: 2023-05-23 14:31:08 +0000 URL: https://git.openjdk.org/loom/commit/bb0ff48aa94c4648a2f929226dd8d252431bcd03 8305091: Change ChaCha20 cipher init behavior to match AES-GCM Reviewed-by: djelinski, ascarpino ! src/java.base/share/classes/com/sun/crypto/provider/ChaCha20Cipher.java ! test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/ChaCha20NoReuse.java Changeset: 97d3b273 Author: changpeng1997 Committer: Eric Liu Date: 2023-05-23 14:46:55 +0000 URL: https://git.openjdk.org/loom/commit/97d3b2731ebd7594cbc3579f4c375ae70bb489a3 8307523: [vectorapi] Optimize MaskFromLongBenchmark.java Reviewed-by: qamai, xgong, ngasson ! test/micro/org/openjdk/bench/jdk/incubator/vector/MaskFromLongBenchmark.java Changeset: e9320f31 Author: Axel Boldt-Christmas Date: 2023-05-23 15:33:08 +0000 URL: https://git.openjdk.org/loom/commit/e9320f31dcc4ff5197e8c3bca504a7d5c1a9035e 8308116: jdk.test.lib.compiler.InMemoryJavaCompiler.compile does not close files Reviewed-by: lmesnik, stefank, jlahoda ! test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java Changeset: 710453c6 Author: Brian Burkhalter Date: 2023-05-23 16:00:40 +0000 URL: https://git.openjdk.org/loom/commit/710453c676712d021bf856dc601d965e4e270805 8308016: Use snippets in java.io package Reviewed-by: rriggs ! src/java.base/share/classes/java/io/BufferedReader.java ! src/java.base/share/classes/java/io/BufferedWriter.java ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/CharArrayWriter.java ! src/java.base/share/classes/java/io/Console.java ! src/java.base/share/classes/java/io/File.java ! src/java.base/share/classes/java/io/FilePermission.java ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/InputStreamReader.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/io/PipedInputStream.java ! src/java.base/share/classes/java/io/PipedOutputStream.java ! src/java.base/share/classes/java/io/PipedReader.java ! src/java.base/share/classes/java/io/PipedWriter.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/io/StreamTokenizer.java ! src/java.base/share/classes/java/io/StringWriter.java ! src/java.base/share/classes/java/io/Writer.java Changeset: ab241b34 Author: Quan Anh Mai Date: 2023-05-23 17:06:25 +0000 URL: https://git.openjdk.org/loom/commit/ab241b3428839fd121ee4ce5fdafeb649f453550 8306706: Support out-of-line code generation for MachNodes Reviewed-by: thartmann, kvn ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/metaprogramming/enableIf.hpp ! src/hotspot/share/opto/c2_CodeStubs.cpp ! src/hotspot/share/opto/c2_CodeStubs.hpp + src/hotspot/share/utilities/tuple.hpp + test/micro/org/openjdk/bench/vm/compiler/x86/ConvertF2I.java Changeset: bddf4838 Author: Afshin Zafari Date: 2023-05-23 17:08:08 +0000 URL: https://git.openjdk.org/loom/commit/bddf48380e658df630fecad5eda40106a24b6e1c 8303942: os::write should write completely Reviewed-by: coleenp, iklam, dholmes, mgronlun ! src/hotspot/os/posix/os_posix.cpp ! src/hotspot/os/posix/perfMemory_posix.cpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp ! src/hotspot/share/jfr/writers/jfrStreamWriterHost.inline.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/os.hpp ! src/hotspot/share/services/heapDumperCompression.cpp Changeset: ed0e956f Author: Daniel D. Daugherty Date: 2023-05-23 20:43:20 +0000 URL: https://git.openjdk.org/loom/commit/ed0e956fc28a54a0eb49bab70a7d010095ce2544 8308716: ProblemList java/util/concurrent/ScheduledThreadPoolExecutor/BasicCancelTest.java with genzgc on windows-x64 8308718: ProblemList three mlvm/indy/func/jvmti tests on windows-x64 in Xcomp mode 8308720: ProblemList java/awt/event/SequencedEvent/MultipleContextsFunctionalTest.java on macosx-x64 Reviewed-by: azvegint, darcy ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList.txt Changeset: 6b27dad7 Author: Valerie Peng Date: 2023-05-23 21:11:38 +0000 URL: https://git.openjdk.org/loom/commit/6b27dad76e20131503da15119d930df17dd517d9 8301154: SunPKCS11 KeyStore deleteEntry results in dangling PrivateKey entries Reviewed-by: weijun, hchao ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11KeyStore.java + test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java = test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval/p11-nss.txt + test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval/temp.ks Changeset: 8ffa264c Author: Chen Liang Committer: Mandy Chung Date: 2023-05-23 21:26:25 +0000 URL: https://git.openjdk.org/loom/commit/8ffa264cf009ddb1af486831f12bc70f93d74cf5 8306698: Add overloads to MethodTypeDesc::of Reviewed-by: mchung ! src/java.base/share/classes/java/lang/constant/ConstantUtils.java ! src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java ! test/jdk/java/lang/constant/MethodTypeDescTest.java Changeset: 2836c34b Author: Jamil Nimeh Date: 2023-05-23 21:32:28 +0000 URL: https://git.openjdk.org/loom/commit/2836c34b64e4626e25c86a53e5bef2bf32f95d2e 8179502: Enhance OCSP, CRL and Certificate Fetch Timeouts Reviewed-by: mullan ! src/java.base/share/classes/sun/security/action/GetPropertyAction.java ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.base/share/classes/sun/security/provider/certpath/URICertStore.java + test/jdk/java/security/cert/CertPathValidator/OCSP/OCSPTimeout.java ! test/jdk/java/security/testlibrary/CertificateBuilder.java + test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java ! test/jdk/sun/security/x509/URICertStore/CRLReadTimeout.java Changeset: beb75e65 Author: Emanuel Peter Date: 2023-05-24 07:00:27 +0000 URL: https://git.openjdk.org/loom/commit/beb75e651f1e4a9bd21f611f9abc7ca28afbae31 8306302: C2 Superword fix: use VectorMaskCmp and VectorBlend instead of CMoveVF/D Reviewed-by: fgao, jbhateja ! src/hotspot/cpu/aarch64/aarch64_vector.ad ! src/hotspot/cpu/aarch64/aarch64_vector_ad.m4 ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/adlc/formssel.cpp ! src/hotspot/share/opto/classes.hpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! test/hotspot/jtreg/compiler/c2/irTests/TestVectorConditionalMove.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java Changeset: 05c095cf Author: Doug Simon Date: 2023-05-24 07:15:12 +0000 URL: https://git.openjdk.org/loom/commit/05c095cf39447d8becb3094c38c84a2c0853112b 8308151: [JVMCI] capture JVMCI exceptions in hs-err Reviewed-by: never ! src/hotspot/share/jvmci/jvmci.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciExceptions.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/jvmci/vmSymbols_jvmci.hpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java + test/hotspot/jtreg/compiler/jvmci/TestUncaughtErrorInCompileMethod.config + test/hotspot/jtreg/compiler/jvmci/TestUncaughtErrorInCompileMethod.java Changeset: 466ec300 Author: Tobias Holenstein Date: 2023-05-24 07:29:25 +0000 URL: https://git.openjdk.org/loom/commit/466ec300fc8e5702553123cf2fa4b0d8c7d552d9 8302736: Major performance regression in Math.log on aarch64 Reviewed-by: thartmann, dlong, aph ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp Changeset: 20f15352 Author: Martin Doerr Date: 2023-05-24 08:38:34 +0000 URL: https://git.openjdk.org/loom/commit/20f15352a3014042aa69f7cbfb67de0f7fdddb40 8303040: linux PPC64le: Implementation of Foreign Function & Memory API (Preview) Reviewed-by: jvernee, rrich ! src/hotspot/cpu/aarch64/vmstorage_aarch64.hpp ! src/hotspot/cpu/arm/vmstorage_arm.hpp ! src/hotspot/cpu/ppc/downcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.hpp ! src/hotspot/cpu/ppc/frame_ppc.cpp ! src/hotspot/cpu/ppc/frame_ppc.inline.hpp ! src/hotspot/cpu/ppc/methodHandles_ppc.cpp ! src/hotspot/cpu/ppc/upcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/vmstorage_ppc.hpp ! src/hotspot/cpu/riscv/vmstorage_riscv.hpp ! src/hotspot/cpu/s390/vmstorage_s390.hpp ! src/hotspot/cpu/x86/vmstorage_x86.hpp ! src/hotspot/cpu/zero/vmstorage_zero.hpp ! src/hotspot/share/prims/foreignGlobals.cpp ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/ABIv2CallArranger.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/PPC64Architecture.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/TypeClass.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/linux/LinuxPPC64leLinker.java ! test/hotspot/jtreg/gc/shenandoah/compiler/TestLinkToNativeRBP.java + test/jdk/java/foreign/TestHFA.java ! test/jdk/java/foreign/callarranger/platform/PlatformLayouts.java + test/jdk/java/foreign/libTestHFA.c Changeset: b7a84b0f Author: Emanuel Peter Date: 2023-05-24 09:38:45 +0000 URL: https://git.openjdk.org/loom/commit/b7a84b0fd766065f3e656620eeba84e4e5b5e4d7 8308758: Problemlist compiler/c2/irTests/TestVectorConditionalMove.java Reviewed-by: chagedorn ! test/hotspot/jtreg/ProblemList.txt Changeset: 2d4d8508 Author: Xiaolin Zheng Committer: Tobias Hartmann Date: 2023-05-24 09:42:26 +0000 URL: https://git.openjdk.org/loom/commit/2d4d850813235a7533cd3bbf776adf69f90f02e6 8308091: Remove unused iRegIHeapbase() matching operand Reviewed-by: fyang, thartmann ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/riscv/riscv.ad Changeset: 65c8dbe6 Author: Thomas Schatzl Date: 2023-05-24 12:02:04 +0000 URL: https://git.openjdk.org/loom/commit/65c8dbe693f09203f66cd25aa9179982ddc38274 8171221: Remove -XX:+CheckMemoryInitialization Reviewed-by: ayang, shade ! src/hotspot/share/gc/shared/collectedHeap.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/memAllocator.cpp ! src/hotspot/share/runtime/globals.hpp - test/hotspot/jtreg/gc/TestMemoryInitialization.java - test/hotspot/jtreg/gc/TestMemoryInitializationWithSerial.java Changeset: 544978cb Author: Viktor Klang Committer: Alan Bateman Date: 2023-05-24 12:41:27 +0000 URL: https://git.openjdk.org/loom/commit/544978cb76d4a4f7cd3f4e5dc0dac3f6e4a52be1 8298066: java/util/concurrent/locks/Lock/OOMEInAQS.java timed out Reviewed-by: alanb ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt ! test/jdk/java/util/concurrent/locks/Lock/OOMEInAQS.java Changeset: d7245f70 Author: Maxim Kartashev Committer: Alexey Ushakov Date: 2023-05-24 12:48:37 +0000 URL: https://git.openjdk.org/loom/commit/d7245f70e7bac1236bbcdcd9b25346ca22ab8bb2 8305578: X11GraphicsDevice.pGetBounds() is slow in remote X11 sessions Reviewed-by: avu, serb ! src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java ! src/java.desktop/unix/classes/sun/awt/X11GraphicsDevice.java Changeset: 7764f46e Author: Martin Doerr Date: 2023-05-24 13:45:57 +0000 URL: https://git.openjdk.org/loom/commit/7764f46e9e3a46e39419ce35aaca8efdb3669872 8308761: New test TestHFA needs adaptation for JDK-8308276 Reviewed-by: mcimadamore, mbaesken ! test/jdk/java/foreign/TestHFA.java Changeset: 736b90d5 Author: Daniel Fuchs Date: 2023-05-24 14:23:24 +0000 URL: https://git.openjdk.org/loom/commit/736b90d54b51830de7757a8de3ad9c98437c824a 8308310: HttpClient: Avoid logging or locking from within synchronized blocks Reviewed-by: jpai ! src/java.net.http/share/classes/jdk/internal/net/http/BufferingSubscriber.java ! src/java.net.http/share/classes/jdk/internal/net/http/ConnectionPool.java ! src/java.net.http/share/classes/jdk/internal/net/http/Exchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1AsyncReceiver.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Exchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpConnection.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpResponseImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/PlainHttpConnection.java ! src/java.net.http/share/classes/jdk/internal/net/http/PushGroup.java ! src/java.net.http/share/classes/jdk/internal/net/http/RedirectFilter.java ! src/java.net.http/share/classes/jdk/internal/net/http/RequestPublishers.java ! src/java.net.http/share/classes/jdk/internal/net/http/SocketTube.java ! src/java.net.http/share/classes/jdk/internal/net/http/Stream.java ! src/java.net.http/share/classes/jdk/internal/net/http/WindowUpdateSender.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SSLFlowDelegate.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SSLTube.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SequentialScheduler.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SubscriberWrapper.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SubscriptionBase.java ! src/java.net.http/share/classes/jdk/internal/net/http/websocket/TransportImpl.java ! test/jdk/java/net/httpclient/AuthFilterCacheTest.java ! test/jdk/java/net/httpclient/ConcurrentResponses.java ! test/jdk/java/net/httpclient/ExpectContinueTest.java ! test/jdk/java/net/httpclient/HttpClientLocalAddrTest.java ! test/jdk/java/net/httpclient/ManyRequests.java ! test/jdk/java/net/httpclient/ManyRequests2.java ! test/jdk/java/net/httpclient/PlainProxyConnectionTest.java Changeset: 25c8b830 Author: Alan Bateman Date: 2023-05-24 17:49:02 +0000 URL: https://git.openjdk.org/loom/commit/25c8b8307ce9d023536d3ceb6aac4d3b205c021e Merge ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList-Virtual.txt ! test/jdk/ProblemList.txt ! test/jdk/TEST.groups ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/globals.hpp ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java ! src/java.base/share/classes/module-info.java ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/TEST.groups ! test/jdk/ProblemList-Virtual.txt ! test/jdk/ProblemList.txt ! test/jdk/TEST.groups Changeset: d10467e2 Author: Erik Gahlin Date: 2023-05-24 16:38:50 +0000 URL: https://git.openjdk.org/loom/commit/d10467e27b9898a75d7df8c31ee14a33edf7b848 8307738: JFR: EventStream.openRepository() drops events Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java Changeset: 89f2d458 Author: Chris Plummer Date: 2023-05-24 16:54:05 +0000 URL: https://git.openjdk.org/loom/commit/89f2d458a293830e271d353c6736907f7e224609 8308237: add JDWP and JDI virtual thread support for ThreadReference.PopFrames 8308481: JDI TestScaffold does not support passing app arguments to the debuggee 8305632: Test com/sun/jdi/PopAndInvokeTest.java fails with OpaqueFrameException Reviewed-by: alanb, sspitsyn, lmesnik ! src/java.se/share/data/jdwp/jdwp.spec ! src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java ! src/jdk.jdi/share/classes/com/sun/tools/jdi/StackFrameImpl.java ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001.java ! test/jdk/ProblemList-Virtual.txt + test/jdk/com/sun/jdi/PopFramesTest.java ! test/jdk/com/sun/jdi/TestScaffold.java + test/jdk/com/sun/jdi/libPopFramesTestTarg.c Changeset: 7da0682c Author: Alan Bateman Date: 2023-05-24 19:02:10 +0000 URL: https://git.openjdk.org/loom/commit/7da0682ced454021ba7a8026b7108d222a7f9c30 Merge ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/jdk/ProblemList-Virtual.txt Changeset: 0ec27e3c Author: Alan Bateman Date: 2023-05-25 07:59:01 +0000 URL: https://git.openjdk.org/loom/commit/0ec27e3cb29ca3a3e391f5740c9d5ccaa25e9a59 Improve cases when forking after join ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java Changeset: 80a04d2f Author: Alan Bateman Date: 2023-05-25 07:59:33 +0000 URL: https://git.openjdk.org/loom/commit/80a04d2f1ee5bfbba8e363dc3e81e4eb759ad05d Merge From duke at openjdk.org Thu May 25 08:29:28 2023 From: duke at openjdk.org (duke) Date: Thu, 25 May 2023 08:29:28 GMT Subject: git: openjdk/loom: master: 107 new changesets Message-ID: <0c537ea2-9997-48e4-8b73-78ce450bb7c3@openjdk.org> Changeset: 8bedf2ef Author: Leonid Mesnik Date: 2023-05-17 17:24:38 +0000 URL: https://git.openjdk.org/loom/commit/8bedf2efd7671834b3f7ff42bc33008821545d9f 8308292: Problemlist vmTestbase/nsk/jvmti/AttachOnDemand/attach020/TestDescription.java Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Xcomp.txt Changeset: 950c5df8 Author: Alisen Chung Date: 2023-05-17 18:57:59 +0000 URL: https://git.openjdk.org/loom/commit/950c5df859c373864ab4e7cf080c38bbd501e54b 8307299: Move more DnD tests to open Reviewed-by: prr, serb + test/jdk/java/awt/dnd/DropTargetingTest.java + test/jdk/java/awt/dnd/DroppingVMHangTest.java + test/jdk/java/awt/dnd/HonorTargetActionTest.java + test/jdk/java/awt/dnd/InterJVMLinkTest.java + test/jdk/java/awt/dnd/IntraJVMGetDropSuccessTest.java + test/jdk/java/awt/dnd/LinkAcceptanceTest.java Changeset: 24094482 Author: Patricio Chilano Mateo Date: 2023-05-17 20:16:21 +0000 URL: https://git.openjdk.org/loom/commit/24094482f00b6ac412bfad770051775f2ab5cf73 8307365: JvmtiStressModule hit SIGSEGV in JvmtiEventControllerPrivate::recompute_thread_enabled Reviewed-by: sspitsyn, dcubed, lmesnik ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest/ThreadStateTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest/libThreadStateTest.cpp Changeset: 6073edf3 Author: Eric Caspole Date: 2023-05-17 20:39:26 +0000 URL: https://git.openjdk.org/loom/commit/6073edf3cdbc1ff7d0cccfb9b4547ef1357d292c 8307483: New micros for j.u.c.LockSupport Co-authored-by: Sergey Kuksenko Reviewed-by: shade, redestad + test/micro/org/openjdk/bench/java/util/concurrent/UnparkBenchSleepersAfter.java + test/micro/org/openjdk/bench/java/util/concurrent/UnparkBenchSleepersBefore.java Changeset: 902585be Author: Jiangli Zhou Date: 2023-05-17 21:04:34 +0000 URL: https://git.openjdk.org/loom/commit/902585bec1d4d5681208213bea180302d1b52df9 8308110: Resolve multiple definition of 'JNI_OnLoad_jsound' linking error Reviewed-by: alanb, rasbold ! src/java.desktop/linux/native/libjsound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c Changeset: 83c096d6 Author: Boris Ulasevich Date: 2023-05-18 03:14:38 +0000 URL: https://git.openjdk.org/loom/commit/83c096d6e20cd6e1164bc666df1be197a10431eb 8308270: ARM32 build broken after JDK-8304913 Reviewed-by: stuefe, rriggs ! src/java.base/share/classes/jdk/internal/util/Architecture.java ! src/java.base/share/classes/jdk/internal/util/PlatformProps.java.template ! test/jdk/jdk/internal/util/ArchTest.java Changeset: 6f75dd87 Author: Ioi Lam Date: 2023-05-18 04:10:49 +0000 URL: https://git.openjdk.org/loom/commit/6f75dd8741f44b3012c5cab5268e89d09121e4be 8308236: Remove SystemDictionaryShared::clone_dumptime_tables() Reviewed-by: vlivanov, ccheung ! src/hotspot/share/cds/dumpTimeClassInfo.cpp ! src/hotspot/share/cds/dumpTimeClassInfo.hpp ! src/hotspot/share/cds/dynamicArchive.cpp ! src/hotspot/share/cds/filemap.hpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.cpp ! src/hotspot/share/cds/lambdaProxyClassDictionary.hpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.hpp Changeset: 95da499e Author: Thomas Stuefe Date: 2023-05-18 05:47:23 +0000 URL: https://git.openjdk.org/loom/commit/95da499ef229d0dfd5fc348f68b9bfd91015b045 8308285: Assert on -Xshare:dump when running with -Xlog:cds=trace Reviewed-by: ccheung, iklam ! src/hotspot/share/classfile/javaClasses.cpp Changeset: f4f5542f Author: Adam Sotona Date: 2023-05-18 06:02:47 +0000 URL: https://git.openjdk.org/loom/commit/f4f5542f8d49dbb756f52a281b745c3c2bbc9829 8306842: Classfile API performance improvements Reviewed-by: redestad ! make/RunTests.gmk ! src/java.base/share/classes/jdk/internal/classfile/attribute/EnclosingMethodAttribute.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantDynamicEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/InvokeDynamicEntry.java ! src/java.base/share/classes/jdk/internal/classfile/constantpool/MethodTypeEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/impl/AbstractPoolEntry.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/BufferedMethodBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/DirectMethodBuilder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/MethodImpl.java ! src/java.base/share/classes/jdk/internal/classfile/impl/MethodInfo.java ! src/java.base/share/classes/jdk/internal/classfile/impl/SplitConstantPool.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackCounter.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapDecoder.java ! src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java ! src/java.base/share/classes/jdk/internal/classfile/impl/Util.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/FieldInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/InvokeDynamicInstruction.java ! src/java.base/share/classes/jdk/internal/classfile/instruction/InvokeInstruction.java ! test/jdk/jdk/classfile/UtilTest.java ! test/micro/org/openjdk/bench/jdk/classfile/AbstractCorpusBenchmark.java ! test/micro/org/openjdk/bench/jdk/classfile/GenerateStackMaps.java + test/micro/org/openjdk/bench/jdk/classfile/RebuildMethodBodies.java + test/micro/org/openjdk/bench/jdk/classfile/RepeatedModelTraversal.java ! test/micro/org/openjdk/bench/jdk/classfile/Write.java Changeset: 3c9ec263 Author: Chen Liang Committer: Adam Sotona Date: 2023-05-18 06:54:01 +0000 URL: https://git.openjdk.org/loom/commit/3c9ec26370dfae5d1230b6b69ae26122fe42e51d 8306457: Classfile API components implementations should not be exposed Reviewed-by: asotona ! src/java.base/share/classes/jdk/internal/classfile/components/ClassRemapper.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeLocalsShifter.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeRelabeler.java ! src/java.base/share/classes/jdk/internal/classfile/components/CodeStackTracker.java + src/java.base/share/classes/jdk/internal/classfile/impl/ClassRemapperImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeLocalsShifterImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeRelabelerImpl.java + src/java.base/share/classes/jdk/internal/classfile/impl/CodeStackTrackerImpl.java Changeset: 57b8ed13 Author: Jan Kratochvil Committer: Yuri Nesterenko Date: 2023-05-18 08:48:16 +0000 URL: https://git.openjdk.org/loom/commit/57b8ed13984eab1ab0eaf70c1904dc0f50fe6129 8308290: Add fontconfig requirement to building.md Reviewed-by: erikj ! doc/building.html ! doc/building.md Changeset: bfc3ccd9 Author: bobpengxie Committer: Jie Fu Date: 2023-05-18 12:26:45 +0000 URL: https://git.openjdk.org/loom/commit/bfc3ccd90d579f6cba3a704766b7a1ea56beebe1 8308283: Build failure with GCC12 & GCC13 Reviewed-by: erikj, jiefu ! make/modules/java.desktop/lib/Awt2dLibraries.gmk ! src/hotspot/share/utilities/compilerWarnings.hpp ! src/hotspot/share/utilities/compilerWarnings_gcc.hpp ! src/hotspot/share/utilities/vmError.cpp Changeset: a58e0ca9 Author: Amit Kumar Committer: Roger Riggs Date: 2023-05-18 13:51:34 +0000 URL: https://git.openjdk.org/loom/commit/a58e0ca9d263807d7bfc0090b01bc71bff7c92db 8308347: [s390x] build broken after JDK-8304913 Reviewed-by: stuefe, rriggs ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java Changeset: 808dc1b0 Author: Thomas Stuefe Date: 2023-05-18 14:01:08 +0000 URL: https://git.openjdk.org/loom/commit/808dc1b047c5a67b7397d47e38495efde022317d 8308350: Increase buffer size for jspawnhelper arguments Reviewed-by: rriggs ! src/java.base/unix/native/libjava/ProcessImpl_md.c Changeset: cc5c9b5d Author: Jasmine Karthikeyan Committer: Vladimir Kozlov Date: 2023-05-18 15:09:45 +0000 URL: https://git.openjdk.org/loom/commit/cc5c9b5da2de4229c0244169bcbd6496f68db5ab 8305787: Wrong debugging information printed with TraceOptoOutput Reviewed-by: thartmann, kvn ! src/hotspot/share/adlc/formsopt.hpp ! src/hotspot/share/adlc/output_c.cpp ! src/hotspot/share/adlc/output_h.cpp Changeset: 1b154e4f Author: Alisen Chung Date: 2023-05-18 15:45:12 +0000 URL: https://git.openjdk.org/loom/commit/1b154e4fd361103936f976db72e04b73aa7b1077 8307083: Open source some drag and drop tests 3 Reviewed-by: prr, serb + test/jdk/java/awt/dnd/MissedDragEnterTest.java + test/jdk/java/awt/dnd/ModalDialogDeadlockTest.java + test/jdk/java/awt/dnd/ModalDialogOnDragDeadlockTest.java + test/jdk/java/awt/dnd/ModalDialogOnDropDeadlockTest.java Changeset: bb24c367 Author: Calvin Cheung Date: 2023-05-18 16:02:55 +0000 URL: https://git.openjdk.org/loom/commit/bb24c36759f19448c8539f6b11017753f304bb56 8279993: Assert that a shared class is not loaded more than once Reviewed-by: iklam, stuefe ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/oops/instanceKlass.hpp Changeset: 42ecc8a3 Author: Joe Darcy Date: 2023-05-18 17:05:28 +0000 URL: https://git.openjdk.org/loom/commit/42ecc8a37ffc7e4ad7beb49cac7d821c00a5568e 8308245: Add -proc:full to describe current default annotation processing policy Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java ! test/langtools/tools/javac/processing/environment/round/TestContext.java + test/langtools/tools/javac/processing/options/TestProcOption.java Changeset: 21aa057f Author: Alexander Zvegintsev Date: 2023-05-18 18:14:05 +0000 URL: https://git.openjdk.org/loom/commit/21aa057fafd88f4dd677bbf7c99a7eabb6b18409 8307779: Relax the java.awt.Robot specification Reviewed-by: mkartashev, prr ! src/java.desktop/share/classes/java/awt/Robot.java Changeset: 02dc95e6 Author: Alexander Zvegintsev Date: 2023-05-18 18:51:46 +0000 URL: https://git.openjdk.org/loom/commit/02dc95e6b99e5998b028e90c3fe9c64ad9f47d9e 8308370: Fix build failures related to the java.awt.Robot documentation Reviewed-by: dcubed ! src/java.desktop/share/classes/java/awt/Robot.java Changeset: d3feedf5 Author: Ashutosh Mehra Committer: Vladimir Kozlov Date: 2023-05-18 19:50:05 +0000 URL: https://git.openjdk.org/loom/commit/d3feedf5114542078c10abec0612038c88e005d6 8308192: Error in parsing replay file when staticfield is an array of single dimension Reviewed-by: thartmann, kvn ! src/hotspot/share/ci/ciReplay.cpp Changeset: 148df533 Author: Weijun Wang Date: 2023-05-18 21:23:29 +0000 URL: https://git.openjdk.org/loom/commit/148df533af618a959ca2f3601d9ab897c3515d77 8308010: X509Key and PKCS8Key allows garbage bytes at the end Reviewed-by: mullan ! src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java ! src/java.base/share/classes/sun/security/x509/X509Key.java + test/jdk/sun/security/pkcs/pkcs8/LongPKCS8orX509KeySpec.java Changeset: 4a6d6d5a Author: Chris Plummer Date: 2023-05-18 22:08:10 +0000 URL: https://git.openjdk.org/loom/commit/4a6d6d5a59442c10a1761ce0566aab57f4c4f323 8308187: jdi/EventSet/resume/resume008 failed with "EventHandler> Unexpected event: ThreadStartEvent in thread resume008-thread0" Reviewed-by: dcubed ! test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventFilters.java Changeset: 42948c04 Author: Leonid Mesnik Date: 2023-05-18 23:57:10 +0000 URL: https://git.openjdk.org/loom/commit/42948c04b90d3c01c22d00f684e7dc0129b66abd 8307865: Invalid is_in_any_VTMS_transition() check in post_dynamic_code_generated_while_holding_locks Reviewed-by: sspitsyn, cjplummer ! src/hotspot/share/prims/jvmtiExport.cpp ! test/hotspot/jtreg/serviceability/jvmti/DynamicCodeGenerated/DynamicCodeGeneratedTest.java ! test/hotspot/jtreg/serviceability/jvmti/DynamicCodeGenerated/libDynamicCodeGenerated.cpp Changeset: e520cdc8 Author: Feilong Jiang Committer: Fei Yang Date: 2023-05-19 00:49:28 +0000 URL: https://git.openjdk.org/loom/commit/e520cdc882a778260181a2162a01ceff7cc41ca0 8308277: RISC-V: Improve vectorization of Match.sqrt() on floats Reviewed-by: fyang ! src/hotspot/cpu/riscv/riscv.ad Changeset: 97ade57f Author: Dingli Zhang Committer: Fei Yang Date: 2023-05-19 03:09:13 +0000 URL: https://git.openjdk.org/loom/commit/97ade57fb244b17e93b150b7f9e025a5ba906bb2 8307609: RISC-V: Added support for Extract, Compress, Expand and other nodes for Vector API Co-authored-by: zifeihan Reviewed-by: fyang, fjiang ! src/hotspot/cpu/riscv/assembler_riscv.hpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.hpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/riscv_v.ad Changeset: 67657610 Author: Aleksey Shipilev Date: 2023-05-19 06:53:50 +0000 URL: https://git.openjdk.org/loom/commit/6765761075361459f764f4f17a52ac6ecbe67f4e 8308118: Avoid multiarray allocations in AESCrypt.makeSessionKey Reviewed-by: xuelei ! src/java.base/share/classes/com/sun/crypto/provider/AESCrypt.java + test/micro/org/openjdk/bench/javax/crypto/AESReinit.java Changeset: 25868b95 Author: Raffaello Giulietti Date: 2023-05-19 08:04:32 +0000 URL: https://git.openjdk.org/loom/commit/25868b95ee91eee9e7611ad18540a7e30032e49b 8132995: Matcher$ImmutableMatchResult should be optimized to reduce space usage Reviewed-by: redestad, smarks ! src/java.base/share/classes/java/util/regex/Matcher.java + test/jdk/java/util/regex/ImmutableMatchResultTest.java Changeset: fa143148 Author: Adam Sotona Date: 2023-05-19 08:09:37 +0000 URL: https://git.openjdk.org/loom/commit/fa14314853e161c6ca5561be3e1e280691d8fe99 8303669: SelectVersion indexes past the end of the argv array Reviewed-by: vromero ! src/java.base/share/native/libjli/java.c ! test/jdk/tools/launcher/JliLaunchTest.java ! test/jdk/tools/launcher/exeJliLaunchTest.c Changeset: 690d3969 Author: Jie Fu Date: 2023-05-19 11:13:37 +0000 URL: https://git.openjdk.org/loom/commit/690d3969b80776bf896fbfbfac5eabe7d074c9bb 8308408: Build failure with -Werror=maybe-uninitialized in libjli/java.c with GCC8 Reviewed-by: alanb ! src/java.base/share/native/libjli/java.c Changeset: 326d778c Author: Kick-it11 <31734298+Kick-it11 at users.noreply.github.com> Committer: Andrew Haley Date: 2023-05-19 12:59:46 +0000 URL: https://git.openjdk.org/loom/commit/326d778ccfc02a52f1dd3b2675edb386e99b776a 8306057: False arguments calling dispatch_base for aarch64 Reviewed-by: aph, fyang ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp Changeset: 80ef5c22 Author: Adam Sotona Date: 2023-05-19 13:11:41 +0000 URL: https://git.openjdk.org/loom/commit/80ef5c228b0f8a7a881a333c418a5d3068fe5a6e 8308410: broken compilation of test\jdk\tools\launcher\exeJliLaunchTest.c Reviewed-by: alanb ! test/jdk/tools/launcher/exeJliLaunchTest.c Changeset: 44218b1c Author: Maurizio Cimadamore Date: 2023-05-19 14:28:14 +0000 URL: https://git.openjdk.org/loom/commit/44218b1c9e5daa33557aac9336251cf8398d81eb 8308248: Revisit alignment of layout constants on 32-bit platforms Reviewed-by: psandoz, pminborg ! src/java.base/share/classes/java/lang/foreign/MemorySegment.java ! src/java.base/share/classes/java/lang/foreign/ValueLayout.java ! src/java.base/share/classes/jdk/internal/foreign/HeapMemorySegmentImpl.java ! src/java.base/share/classes/jdk/internal/foreign/layout/ValueLayouts.java ! test/jdk/java/foreign/TestLayouts.java ! test/jdk/java/foreign/TestValueLayouts.java Changeset: a5343fa6 Author: Brian Burkhalter Date: 2023-05-19 15:37:37 +0000 URL: https://git.openjdk.org/loom/commit/a5343fa60505764c088dad4a17680d92568509d5 8281149: (fs) java/nio/file/FileStore/Basic.java fails with java.lang.RuntimeException: values differ by more than 1GB Reviewed-by: jpai, rriggs ! test/jdk/java/nio/file/FileStore/Basic.java Changeset: 265f40b4 Author: Coleen Phillimore Date: 2023-05-19 17:16:04 +0000 URL: https://git.openjdk.org/loom/commit/265f40b4f70102c37bf28b2bf9dda16b92d1d975 8308396: Fix offset_of conversion warnings in runtime code Reviewed-by: amitkumar, jsjolen, fparain ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c2_CodeStubs_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/methodHandles_aarch64.cpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.cpp ! src/hotspot/cpu/arm/interp_masm_arm.hpp ! src/hotspot/cpu/arm/macroAssembler_arm.cpp ! src/hotspot/cpu/arm/methodHandles_arm.cpp ! src/hotspot/cpu/arm/sharedRuntime_arm.cpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/cpu/arm/templateTable_arm.cpp ! src/hotspot/cpu/arm/vtableStubs_arm.cpp ! src/hotspot/cpu/ppc/assembler_ppc.hpp ! src/hotspot/cpu/ppc/assembler_ppc.inline.hpp ! src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/methodHandles_ppc.cpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp ! src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp ! src/hotspot/cpu/ppc/templateTable_ppc_64.cpp ! src/hotspot/cpu/ppc/vtableStubs_ppc_64.cpp ! src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/c2_CodeStubs_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.cpp ! src/hotspot/cpu/riscv/interp_masm_riscv.hpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/riscv/methodHandles_riscv.cpp ! src/hotspot/cpu/riscv/riscv.ad ! src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp ! src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp ! src/hotspot/cpu/riscv/templateTable_riscv.cpp ! src/hotspot/cpu/s390/c1_MacroAssembler_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/cpu/s390/methodHandles_s390.cpp ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp ! src/hotspot/cpu/s390/templateTable_s390.cpp ! src/hotspot/cpu/s390/vtableStubs_s390.cpp ! src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/interp_masm_x86.cpp ! src/hotspot/cpu/x86/interp_masm_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/methodHandles_x86.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp ! src/hotspot/cpu/x86/templateTable_x86.cpp ! src/hotspot/cpu/zero/frame_zero.cpp ! src/hotspot/share/c1/c1_FrameMap.cpp ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/jfr/support/jfrKlassExtension.hpp ! src/hotspot/share/jfr/support/jfrThreadExtension.hpp ! src/hotspot/share/jfr/support/jfrThreadLocal.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/oops/compiledICHolder.hpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/cpCache.hpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/oops/klassVtable.hpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/oops/methodData.hpp ! src/hotspot/share/oops/objArrayKlass.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/runtime/basicLock.hpp ! src/hotspot/share/runtime/deoptimization.hpp ! src/hotspot/share/runtime/jniHandles.hpp ! src/hotspot/share/runtime/objectMonitor.hpp ! src/hotspot/share/utilities/sizes.hpp ! test/hotspot/gtest/runtime/test_objectMonitor.cpp Changeset: f0aebc81 Author: Weijun Wang Date: 2023-05-19 17:46:41 +0000 URL: https://git.openjdk.org/loom/commit/f0aebc8141de5a50c88658a40caa01967a9afc53 8305972: Update XML Security for Java to 3.0.2 Reviewed-by: mullan ! src/java.base/share/conf/security/java.security ! src/java.base/share/lib/security/default.policy ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/ECDSAUtils.java + src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureEDDSA.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/NameSpaceSymbTable.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/XmlAttrStack.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/keys/content/MgmtData.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/Manifest.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/NodeFilter.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/ObjectContainer.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/SignatureProperty.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/VerifiedReference.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/XMLSignature.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInputDebugger.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/Transform.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath2Filter.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/I18n.java ! src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/RFC2253Parser.java ! src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/DigestMethod.java ! src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/SignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/AbstractDOMSignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java ! src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java ! src/java.xml.crypto/share/legal/santuario.md ! test/jdk/TEST.groups + test/jdk/javax/xml/crypto/dsig/Basic.java ! test/jdk/javax/xml/crypto/dsig/GenerationTests.java + test/jdk/javax/xml/crypto/dsig/HereFunction.java ! test/jdk/javax/xml/crypto/dsig/SecureValidation.java ! test/lib/jdk/test/lib/security/XMLUtils.java Changeset: 34468e1c Author: Justin Lu Date: 2023-05-19 18:22:50 +0000 URL: https://git.openjdk.org/loom/commit/34468e1c916890d09e83d06094e225435c4642ba 8308021: Update IANA Language Subtag Registry to Version 2023-05-11 Reviewed-by: lancea, naoto ! src/java.base/share/data/lsrdata/language-subtag-registry.txt ! test/jdk/java/util/Locale/LanguageSubtagRegistryTest.java Changeset: 241455fc Author: Leonid Mesnik Date: 2023-05-19 18:42:23 +0000 URL: https://git.openjdk.org/loom/commit/241455fcd11a20443f7bfa72544ed858f6bebe8b 8307962: Exclude gc/g1/TestSkipRebuildRemsetPhase.java fails with virtual test thread factory Reviewed-by: sspitsyn ! test/hotspot/jtreg/ProblemList-Virtual.txt Changeset: 939344b8 Author: Kevin Walls Date: 2023-05-19 18:57:55 +0000 URL: https://git.openjdk.org/loom/commit/939344b8433b32166f42ad73ae3d96e84b033478 8304685: Fix whitespace parsing in libjdwp Reviewed-by: cjplummer, amenkov, sspitsyn ! src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c Changeset: a0f4a948 Author: Daniel D. Daugherty Date: 2023-05-20 16:40:05 +0000 URL: https://git.openjdk.org/loom/commit/a0f4a948bb76ce5ea11d8fe08e788ed43516ca4e 8307783: runtime/reflect/ReflectOutOfMemoryError.java timed out 8308468: ProblemList containers/docker/TestMemoryAwareness.java on linux-x64 8308470: ProblemList javax/management/remote/mandatory/connection/BrokenConnectionTest.java on linux-all 8308471: ProblemList javax/management/remote/mandatory/loading/MissingClassTest.java on windows-x64 w/ loom 8308472: ProblemList javax/management/remote/mandatory/loading/RMIDownloadTest.java on windows-x64 w/ loom 8308473: ProblemList java/lang/instrument/NativeMethodPrefixAgent.java with loom Reviewed-by: lmesnik ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/runtime/reflect/ReflectOutOfMemoryError.java ! test/jdk/ProblemList-Virtual.txt ! test/jdk/ProblemList.txt Changeset: 5ccc9629 Author: Ioi Lam Date: 2023-05-21 05:32:36 +0000 URL: https://git.openjdk.org/loom/commit/5ccc9629424c802a5c676553776ee5d2fb2ca3e3 8308342: Remove MetaspaceClosure::Ref::keep_after_pushing() Reviewed-by: ccheung ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/memory/metaspaceClosure.cpp ! src/hotspot/share/memory/metaspaceClosure.hpp Changeset: eaa80ad0 Author: Jan Lahoda Date: 2023-05-22 04:24:06 +0000 URL: https://git.openjdk.org/loom/commit/eaa80ad08c949a05abcfa48897654ed52139145b 8300543: Compiler Implementation for Pattern Matching for switch 8300545: Compiler Implementation for Record Patterns Co-authored-by: Aggelos Biboudis Reviewed-by: vromero, mcimadamore ! src/java.base/share/classes/java/lang/MatchException.java ! src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.java ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/jdk.compiler/share/classes/com/sun/source/tree/CaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/ConstantCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/DeconstructionPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/DefaultCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/EnhancedForLoopTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/InstanceOfTree.java - src/jdk.compiler/share/classes/com/sun/source/tree/ParenthesizedPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/PatternCaseLabelTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ThisEscapeAnalyzer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/jdk/java/lang/runtime/SwitchBootstrapsTest.java ! test/langtools/tools/javac/ConditionalExpressionResolvePending.java ! test/langtools/tools/javac/T8286797.java ! test/langtools/tools/javac/T8286797.out - test/langtools/tools/javac/T8290379.java ! test/langtools/tools/javac/T8295447.java ! test/langtools/tools/javac/T8295447.out - test/langtools/tools/javac/T8297602.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/Patterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/RuleSwitchBreaks.java ! test/langtools/tools/javac/diags/examples.not-yet.txt + test/langtools/tools/javac/diags/examples/CannotAssignNotDeclaredGuard.java ! test/langtools/tools/javac/diags/examples/CantRefNonEffectivelyFinalVar.java ! test/langtools/tools/javac/diags/examples/CaseNull.java ! test/langtools/tools/javac/diags/examples/ConstantLabelNotCompatible.java ! test/langtools/tools/javac/diags/examples/DeconstructionPatternOnlyRecords.java ! test/langtools/tools/javac/diags/examples/DefaultLabelNotAllowed.java ! test/langtools/tools/javac/diags/examples/DuplicateUnconditionalPattern.java ! test/langtools/tools/javac/diags/examples/EnumLabelUnqualified.java + test/langtools/tools/javac/diags/examples/FeatureDeconstructionPatterns.java ! test/langtools/tools/javac/diags/examples/FeatureUnconditionalPatternsInInstanceof.java ! test/langtools/tools/javac/diags/examples/FlowsThroughFromPattern.java ! test/langtools/tools/javac/diags/examples/FlowsThroughToPattern.java - test/langtools/tools/javac/diags/examples/ForeachNotExhaustive.java ! test/langtools/tools/javac/diags/examples/GuardHasConstantFalse.java + test/langtools/tools/javac/diags/examples/GuardNotAllowed.java ! test/langtools/tools/javac/diags/examples/IncorrectNumberOfNestedPatterns.java - test/langtools/tools/javac/diags/examples/InstanceofPatternNoSubtype.java ! test/langtools/tools/javac/diags/examples/InvalidCaseLabelCombination.java ! test/langtools/tools/javac/diags/examples/NotApplicableTypes.java ! test/langtools/tools/javac/diags/examples/NotExhaustiveStatement.java ! test/langtools/tools/javac/diags/examples/PatternDominated.java ! test/langtools/tools/javac/diags/examples/PatternExpected.java ! test/langtools/tools/javac/diags/examples/PatternSwitch.java ! test/langtools/tools/javac/diags/examples/PatternTypeCannotInfer.java + test/langtools/tools/javac/diags/examples/RecordPatternsAnnotationsNotAllowed.java ! test/langtools/tools/javac/diags/examples/UnconditionalPatternAndDefault.java ! test/langtools/tools/javac/enum/EnumSwitch2.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/parser/JavacParserTest.java + test/langtools/tools/javac/patterns/AnnotationErrors.java + test/langtools/tools/javac/patterns/AnnotationErrors.out ! test/langtools/tools/javac/patterns/CaseStructureTest.java ! test/langtools/tools/javac/patterns/DeconstructionDesugaring.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out ! test/langtools/tools/javac/patterns/DisambiguatePatterns.java ! test/langtools/tools/javac/patterns/Domination.java ! test/langtools/tools/javac/patterns/Domination.out ! test/langtools/tools/javac/patterns/EmptyRecordClass.java ! test/langtools/tools/javac/patterns/EnumTypeChanges.java ! test/langtools/tools/javac/patterns/EnumTypeChangesNonPreview.java ! test/langtools/tools/javac/patterns/Exhaustiveness.java - test/langtools/tools/javac/patterns/ForEachPatterns.java - test/langtools/tools/javac/patterns/ForEachPatternsErrors.java - test/langtools/tools/javac/patterns/ForEachPatternsErrors.out - test/langtools/tools/javac/patterns/ForEachTestAllAnalyzers.java ! test/langtools/tools/javac/patterns/GenericRecordDeconstructionPattern.java ! test/langtools/tools/javac/patterns/Guards.java ! test/langtools/tools/javac/patterns/GuardsErrors.java ! test/langtools/tools/javac/patterns/GuardsErrors.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern-15.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern-16.out + test/langtools/tools/javac/patterns/InstanceofTotalPattern-20.out - test/langtools/tools/javac/patterns/InstanceofTotalPattern-preview.out ! test/langtools/tools/javac/patterns/InstanceofTotalPattern.java ! test/langtools/tools/javac/patterns/LambdaCannotCapturePatternVariables.java ! test/langtools/tools/javac/patterns/MatchExceptionTest.java ! test/langtools/tools/javac/patterns/NestedDeconstructionPattern.java ! test/langtools/tools/javac/patterns/NestedPatternVariablesBytecode.java ! test/langtools/tools/javac/patterns/NestedPrimitiveDeconstructionPattern.java ! test/langtools/tools/javac/patterns/NewCaseStructureTest.java ! test/langtools/tools/javac/patterns/NoSubtypeCheck.java ! test/langtools/tools/javac/patterns/NullSwitch.java ! test/langtools/tools/javac/patterns/NullsInDeconstructionPatterns.java ! test/langtools/tools/javac/patterns/NullsInPatterns.java ! test/langtools/tools/javac/patterns/Parenthesized.java + test/langtools/tools/javac/patterns/Parenthesized.out - test/langtools/tools/javac/patterns/ParenthesizedCombo.java ! test/langtools/tools/javac/patterns/PatternCaseErrorRecovery.java ! test/langtools/tools/javac/patterns/PatternDesugaring.java - test/langtools/tools/javac/patterns/PatternErrorRecovery-no-preview.out + test/langtools/tools/javac/patterns/PatternErrorRecovery-old.out ! test/langtools/tools/javac/patterns/PatternErrorRecovery.java ! test/langtools/tools/javac/patterns/PatternErrorRecovery.out ! test/langtools/tools/javac/patterns/PrettyTest.java ! test/langtools/tools/javac/patterns/ProxyMethodLookup.java ! test/langtools/tools/javac/patterns/RawTypeBindingWarning.java ! test/langtools/tools/javac/patterns/RawTypeBindingWarning.out ! test/langtools/tools/javac/patterns/SealedTypeChanges.java ! test/langtools/tools/javac/patterns/SimpleAndGuardPattern.java ! test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java - test/langtools/tools/javac/patterns/SimpleDeconstructionPatternNoPreview.out + test/langtools/tools/javac/patterns/SimpleDeconstructionPatternOld.out ! test/langtools/tools/javac/patterns/SourceLevelChecks.java ! test/langtools/tools/javac/patterns/SwitchErrors.java ! test/langtools/tools/javac/patterns/SwitchErrors.out ! test/langtools/tools/javac/patterns/Switches.java ! test/langtools/tools/javac/patterns/T8291657.java ! test/langtools/tools/javac/patterns/TranslationTest.java ! test/langtools/tools/javac/patterns/TypedDeconstructionPatternExc.java ! test/langtools/tools/javac/patterns/VarErrors.java ! test/langtools/tools/javac/patterns/VarErrors.out ! test/langtools/tools/javac/sealed/MissingPermittedSubtypes.java ! test/langtools/tools/javac/switchexpr/ExhaustiveEnumSwitch.java ! test/langtools/tools/javac/switchexpr/SwitchExpressionNoValue.java + test/langtools/tools/javac/switchextra/EnumSwitchQualified.java + test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.java + test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.out ! test/langtools/tools/javac/switchextra/RuleParsingTest.java ! test/langtools/tools/javac/switchextra/SwitchNoExtraTypes.out ! test/langtools/tools/javac/switchextra/SwitchObject.out ! test/langtools/tools/javac/switchnull/SwitchNull.java - test/langtools/tools/javac/switchnull/SwitchNullDisabled-preview.out ! test/langtools/tools/javac/switchnull/SwitchNullDisabled.java ! test/langtools/tools/javac/switchnull/SwitchNullDisabled.out ! test/langtools/tools/lib/toolbox/TestRunner.java Changeset: b6a9f5c3 Author: Emanuel Peter Date: 2023-05-22 06:23:19 +0000 URL: https://git.openjdk.org/loom/commit/b6a9f5c304d9ffe74161d25af84f7c5bc1c09b33 8307619: C2 failed: Not monotonic (AndI CastII LShiftI) in TestShiftCastAndNotification.java Reviewed-by: chagedorn, thartmann ! src/hotspot/share/opto/mulnode.cpp Changeset: 41beb448 Author: Emanuel Peter Date: 2023-05-22 06:26:55 +0000 URL: https://git.openjdk.org/loom/commit/41beb448d2ac5d432558f25362a787a9511a5d83 8308084: C2 fix idom bug in PhaseIdealLoop::create_new_if_for_predicate Reviewed-by: chagedorn, thartmann, kvn ! src/hotspot/share/opto/loopPredicate.cpp Changeset: 928fcf97 Author: Serguei Spitsyn Date: 2023-05-22 07:34:35 +0000 URL: https://git.openjdk.org/loom/commit/928fcf975174df0d5020378466e3eb76976afa21 8308000: add PopFrame support for virtual threads Reviewed-by: lmesnik, alanb ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiEnv.cpp ! src/hotspot/share/prims/jvmtiEnvBase.cpp ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/serviceability/jvmti/vthread/BoundVThreadTest/libBoundVThreadTest.cpp + test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest/PopFrameTest.java + test/hotspot/jtreg/serviceability/jvmti/vthread/PopFrameTest/libPopFrameTest.cpp ! test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadUnsupportedTest/libVThreadUnsupportedTest.cpp Changeset: b5887979 Author: Leo Korinth Date: 2023-05-22 08:17:53 +0000 URL: https://git.openjdk.org/loom/commit/b58879790083b704da94ea1476fcadb0e65b0805 8307804: Reorganize ArrayJuggle test cases Reviewed-by: dholmes, lmesnik ! test/hotspot/jtreg/TEST.groups ! test/hotspot/jtreg/TEST.quick-groups - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle01/Juggle01.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle02/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle02/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle03/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle03/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle04/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle04/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle05/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle05/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle06/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle06/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle07/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle07/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle08/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle08/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle09/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle09/TestDescription.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle1.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle10/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle10/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle11/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle11/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle12/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle12/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle13/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle13/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle14/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle14/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle15/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle15/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle16/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle16/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle17/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle17/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle18/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle18/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle19/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle19/TestDescription.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle2.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle20/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle20/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle21/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle21/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle22/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle22/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle23/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle23/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle24/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle24/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle25/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle25/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle26/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle26/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle27/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle27/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle28/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle28/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle29/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle29/TestDescription.java + test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle3.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle30/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle30/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle31/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle31/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle32/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle32/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle33/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle33/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle34/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle34/TestDescription.java + test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/Juggle3Quick.java = test/hotspot/jtreg/vmTestbase/gc/ArrayJuggle/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/ArrayJuggle.README - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1_gc/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle1_gc/TestDescription.java - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2_gc/TEST.properties - test/hotspot/jtreg/vmTestbase/gc/memory/Array/ArrayJuggle/Juggle2_gc/TestDescription.java Changeset: 8aa50288 Author: Aggelos Biboudis Committer: Jan Lahoda Date: 2023-05-22 08:52:36 +0000 URL: https://git.openjdk.org/loom/commit/8aa50288a1a6a853bf4d8d97b1849d5744ed7a32 8302344: Compiler Implementation for Unnamed patterns and variables (Preview) 8307444: java.lang.AssertionError when using unnamed patterns 8307482: Compiler should accept var _ in nested patterns in switch case 8307007: Implementation for javax.lang.model for unnamed variables (Preview) 8308312: Compiler should fail when a local variable declaration does not include an Identifier and does not have an initializer 8308309: Compiler should accept mixed masked and unmasked variables in lambda parameters Co-authored-by: Jan Lahoda Co-authored-by: Aggelos Biboudis Reviewed-by: vromero, darcy ! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java ! src/java.compiler/share/classes/javax/lang/model/element/Element.java ! src/java.compiler/share/classes/javax/lang/model/element/VariableElement.java + src/jdk.compiler/share/classes/com/sun/source/tree/AnyPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/tree/VariableTree.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java + test/langtools/tools/javac/TryWithResources/TwrLintUnderscore.java + test/langtools/tools/javac/TryWithResources/TwrLintUnderscore.out ! test/langtools/tools/javac/api/TestGetScopeResult.java ! test/langtools/tools/javac/diags/examples/UnderscoreInLambdaExpression.java + test/langtools/tools/javac/diags/examples/UseOfUnderscoreNotAllowed.java ! test/langtools/tools/javac/lambda/IdentifierTest.java + test/langtools/tools/javac/lambda/IdentifierTest21.out ! test/langtools/tools/javac/lambda/IdentifierTest8.out ! test/langtools/tools/javac/lambda/IdentifierTest9.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent.java + test/langtools/tools/javac/lambda/UnderscoreAsIdent21.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent8.out ! test/langtools/tools/javac/lambda/UnderscoreAsIdent9.out ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out ! test/langtools/tools/javac/patterns/PrettyTest.java + test/langtools/tools/javac/patterns/Unnamed.java + test/langtools/tools/javac/patterns/UnnamedErrors.java + test/langtools/tools/javac/patterns/UnnamedErrors.out ! test/langtools/tools/javac/processing/model/element/TestNames.java + test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElement.java + test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElement8.java = test/langtools/tools/javac/processing/model/element/TestUnnamedVariableElementData.java ! test/langtools/tools/javac/tree/VarTree.java Changeset: 8011ba74 Author: Erik ?sterlund Date: 2023-05-22 10:20:45 +0000 URL: https://git.openjdk.org/loom/commit/8011ba74a20c069e094a878ab4a1843036521272 8308181: Generational ZGC: Remove CLDG_lock from old gen root scanning Reviewed-by: ayang, aboldtch ! src/hotspot/share/gc/z/zGeneration.cpp ! src/hotspot/share/gc/z/zMark.cpp Changeset: 6b65e575 Author: Andrey Turbanov Date: 2023-05-22 10:27:13 +0000 URL: https://git.openjdk.org/loom/commit/6b65e5754cc96c812892077881fc069e02fedc62 8305785: Avoid redundant HashMap.containsKey call in java.util.regex Reviewed-by: stsypanov, jpai ! src/java.base/share/classes/java/util/regex/Matcher.java ! src/java.base/share/classes/java/util/regex/Pattern.java Changeset: a9705196 Author: Jan Lahoda Date: 2023-05-22 10:39:26 +0000 URL: https://git.openjdk.org/loom/commit/a9705196cea7d6f468b76b1cfff561352ee0b6b2 8306983: Do not invoke external programs when switch terminal to raw mode on selected platforms Co-authored-by: Adam Sotona Reviewed-by: erikj, vromero, bpb ! make/modules/jdk.internal.le/Lib.gmk + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/JDKNativePty.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/CLibrary.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/CLibraryImpl.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/LinuxNativePty.java + src/jdk.internal.le/linux/classes/jdk/internal/org/jline/terminal/impl/jna/linux/UtilLibraryImpl.java + src/jdk.internal.le/linux/native/lible/CLibrary.cpp + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/JDKNativePty.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/CLibrary.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/CLibraryImpl.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/NativeLong.java + src/jdk.internal.le/macosx/classes/jdk/internal/org/jline/terminal/impl/jna/osx/OsXNativePty.java + src/jdk.internal.le/macosx/native/lible/CLibrary.cpp ! src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java + src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/jna/LastErrorException.java + src/jdk.internal.le/unix/classes/jdk/internal/org/jline/terminal/impl/jna/JnaNativePty.java + src/jdk.internal.le/unix/classes/jdk/internal/org/jline/terminal/impl/jna/JnaTerminalProvider.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/JnaWinConsoleWriter.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/JnaWinSysTerminal.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/Kernel32.java ! src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/Kernel32Impl.java - src/jdk.internal.le/windows/classes/jdk/internal/org/jline/terminal/impl/jna/win/LastErrorException.java ! src/jdk.internal.le/windows/native/lible/Kernel32.cpp Changeset: 05e99db4 Author: Darragh Clarke Committer: Jaikiran Pai Date: 2023-05-22 10:53:59 +0000 URL: https://git.openjdk.org/loom/commit/05e99db466e7ef5c26f089db772a21cb2ca62e93 7065228: To interpret case-insensitive string locale independently Reviewed-by: dfuchs, naoto, djelinski, jpai, michaelm ! src/java.base/share/classes/java/net/HttpCookie.java ! src/java.base/share/classes/java/net/InetSocketAddress.java ! src/java.base/share/classes/java/net/SocketPermission.java ! src/java.base/share/classes/java/net/URLConnection.java ! src/java.base/share/classes/java/net/URLStreamHandler.java ! src/java.base/share/classes/sun/net/ftp/FtpDirEntry.java ! src/java.base/share/classes/sun/net/spi/DefaultProxySelector.java ! src/java.base/share/classes/sun/net/util/URLUtil.java ! src/java.base/share/classes/sun/net/www/HeaderParser.java ! src/java.base/share/classes/sun/net/www/MimeEntry.java ! src/java.base/share/classes/sun/net/www/MimeTable.java ! src/java.base/share/classes/sun/net/www/URLConnection.java ! src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java ! src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java ! src/java.base/share/classes/sun/net/www/protocol/http/DigestAuthentication.java ! src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java ! src/java.base/share/classes/sun/net/www/protocol/http/NegotiateAuthentication.java ! src/java.security.jgss/share/classes/sun/net/www/protocol/http/spnego/NegotiatorImpl.java ! src/jdk.httpserver/share/classes/sun/net/httpserver/ContextList.java ! src/jdk.httpserver/share/classes/sun/net/httpserver/HttpContextImpl.java Changeset: 3d550f74 Author: Alexander Zvegintsev Date: 2023-05-22 11:37:12 +0000 URL: https://git.openjdk.org/loom/commit/3d550f748521443dc2e148aa4f786060419f1113 8280993: [XWayland] Popup is not closed on click outside of area controlled by XWayland Reviewed-by: prr ! src/java.desktop/share/classes/javax/swing/JPopupMenu.java ! src/java.desktop/share/classes/sun/awt/SunToolkit.java ! src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java ! src/java.desktop/unix/classes/sun/awt/X11/XBaseWindow.java ! src/java.desktop/unix/classes/sun/awt/X11/XMenuWindow.java ! src/java.desktop/unix/classes/sun/awt/X11/XPopupMenuPeer.java Changeset: b3cb82b8 Author: Prasanta Sadhukhan Date: 2023-05-22 11:42:11 +0000 URL: https://git.openjdk.org/loom/commit/b3cb82b859d22b18343d125349a5aebc0afb8576 8307311: Timeouts on one macOS 12.6.1 host of two Swing JTableHeader tests Reviewed-by: dnguyen, azvegint ! test/jdk/javax/swing/JTableHeader/6889007/bug6889007.java Changeset: 18e24464 Author: Matthew Donovan Date: 2023-05-22 12:03:13 +0000 URL: https://git.openjdk.org/loom/commit/18e2446420d3376acaa2652d70474c2d3a85e2ac 8301381: Verify DTLS 1.0 cannot be negotiated Reviewed-by: xuelei + test/jdk/javax/net/ssl/DTLS/DTLSWontNegotiateV10.java Changeset: dc30e686 Author: Andrew Leonard Date: 2023-05-22 12:23:45 +0000 URL: https://git.openjdk.org/loom/commit/dc30e686516d50bdc65542d440e1e428362efb67 8308407: libjvm library not reproducibly comparable between vendors Co-authored-by: Simon Tooke Reviewed-by: andrew, dholmes ! src/hotspot/share/runtime/abstract_vm_version.cpp Changeset: 4f88437b Author: Thomas Obermeier <128162199+TOatGithub at users.noreply.github.com> Committer: Goetz Lindenmaier Date: 2023-05-22 12:37:43 +0000 URL: https://git.openjdk.org/loom/commit/4f88437b7fc26e1d9b096b535a4dbfd8a9d227f1 8307908: [ppc] Add failing RTM tests to ProblemList until 8307907 is fixed. Reviewed-by: clanger, goetz ! test/hotspot/jtreg/ProblemList.txt Changeset: 91aeb5de Author: Maurizio Cimadamore Date: 2023-05-22 14:51:09 +0000 URL: https://git.openjdk.org/loom/commit/91aeb5de580633dfc361957051cd00545aa883c7 8287834: Add SymbolLookup::or method Reviewed-by: psandoz ! src/java.base/share/classes/java/lang/foreign/SymbolLookup.java + test/jdk/java/foreign/CompositeLookupTest.java Changeset: 5fc9b578 Author: Maurizio Cimadamore Date: 2023-05-22 14:57:00 +0000 URL: https://git.openjdk.org/loom/commit/5fc9b5787dc4d7f00d2c59288bc8d840fdf5b495 8308276: Change layout API to work with bytes, not bits Reviewed-by: psandoz, pminborg ! src/java.base/share/classes/java/lang/foreign/AddressLayout.java ! src/java.base/share/classes/java/lang/foreign/GroupLayout.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/PaddingLayout.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/UnionLayout.java ! src/java.base/share/classes/java/lang/foreign/ValueLayout.java ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/LayoutPath.java ! src/java.base/share/classes/jdk/internal/foreign/NativeMemorySegmentImpl.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/SharedUtils.java ! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/TypeClass.java ! src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FFIType.java ! src/java.base/share/classes/jdk/internal/foreign/abi/riscv64/linux/TypeClass.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/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template ! test/jdk/java/foreign/MemoryLayoutTypeRetentionTest.java ! test/jdk/java/foreign/NativeTestHelper.java ! test/jdk/java/foreign/StdLibTest.java ! test/jdk/java/foreign/TestArrayCopy.java ! test/jdk/java/foreign/TestByteBuffer.java ! test/jdk/java/foreign/TestFunctionDescriptor.java ! test/jdk/java/foreign/TestHeapAlignment.java ! test/jdk/java/foreign/TestIllegalLink.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/TestNulls.java ! test/jdk/java/foreign/TestSegmentAllocators.java ! test/jdk/java/foreign/TestSegmentCopy.java ! test/jdk/java/foreign/TestSpliterator.java ! test/jdk/java/foreign/TestUpcallHighArity.java ! test/jdk/java/foreign/TestUpcallStructScope.java ! test/jdk/java/foreign/TestValueLayouts.java ! test/jdk/java/foreign/TestVarHandleCombinators.java ! test/jdk/java/foreign/callarranger/TestLayoutEquality.java ! test/jdk/java/foreign/callarranger/TestLinuxAArch64CallArranger.java ! test/jdk/java/foreign/callarranger/TestRISCV64CallArranger.java ! test/jdk/java/foreign/callarranger/TestSysVCallArranger.java ! test/jdk/java/foreign/nested/TestNested.java ! test/jdk/java/lang/Thread/jni/AttachCurrentThread/ImplicitAttach.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/templates/X-LoadStoreTest.java.template Changeset: 29b8d3d9 Author: George Adams Committer: Jesper Wilhelmsson Date: 2023-05-22 15:44:52 +0000 URL: https://git.openjdk.org/loom/commit/29b8d3d9e73c3771f18b8d4d69e32475f17346fa 8307573: Implementation of JEP 449: Deprecate the Windows 32-bit x86 Port for Removal Reviewed-by: erikj ! doc/building.html ! doc/building.md ! make/autoconf/platform.m4 Changeset: b58980b7 Author: Calvin Cheung Date: 2023-05-22 15:53:04 +0000 URL: https://git.openjdk.org/loom/commit/b58980b73d5fdbbfd2c8395ceca61fd1cbf613c8 8308034: Some CDS tests need to use @requires vm.flagless Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/DumpingWithNoCoops.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DifferentHeapSizes.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/IncompatibleOptions.java Changeset: 491bdeaa Author: Jiangli Zhou Date: 2023-05-22 16:24:45 +0000 URL: https://git.openjdk.org/loom/commit/491bdeaa90aaafd15615d2c4e42aaff5940938e3 8308458: Windows build failure with disassembler.cpp(792): warning C4267: '=': conversion from 'size_t' to 'int' Reviewed-by: jiefu ! src/hotspot/share/compiler/disassembler.cpp Changeset: 3f4cfbdd Author: Matias Saavedra Silva Date: 2023-05-22 16:27:17 +0000 URL: https://git.openjdk.org/loom/commit/3f4cfbdd36bf91ece5c2f364c3f3e9a6e83de1e6 8307190: Refactor ref_at methods in Constant Pool Reviewed-by: coleenp, iklam ! src/hotspot/share/ci/ciEnv.cpp ! src/hotspot/share/ci/ciEnv.hpp ! src/hotspot/share/ci/ciField.cpp ! src/hotspot/share/ci/ciField.hpp ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/ci/ciMethod.hpp ! src/hotspot/share/ci/ciReplay.cpp ! src/hotspot/share/ci/ciStreams.cpp ! src/hotspot/share/interpreter/bytecode.cpp ! src/hotspot/share/interpreter/bytecodeUtils.cpp ! src/hotspot/share/interpreter/interpreterRuntime.cpp ! src/hotspot/share/interpreter/linkResolver.cpp ! src/hotspot/share/interpreter/linkResolver.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/generateOopMap.cpp ! src/hotspot/share/oops/generateOopMap.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp ! src/hotspot/share/prims/methodComparator.cpp ! src/hotspot/share/prims/methodHandles.cpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java ! test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ConstantPoolTestsHelper.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupKlassRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameAndTypeRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupSignatureInPoolTest.java Changeset: d77a4103 Author: Joe Darcy Date: 2023-05-22 16:30:37 +0000 URL: https://git.openjdk.org/loom/commit/d77a41033a162c2c9bf02d6b8da91f2825320ad8 8308388: Update description of SourceVersion.RELEASE_21 Reviewed-by: iris ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java Changeset: f99ad11d Author: quadhier Committer: Ioi Lam Date: 2023-05-22 16:51:20 +0000 URL: https://git.openjdk.org/loom/commit/f99ad11dd11a4d83e5227b246866822e69b38ae7 8302218: CHeapBitMap::free frees with incorrect size Reviewed-by: aboldtch, iklam, tschatzl ! src/hotspot/share/utilities/bitMap.cpp Changeset: 8474e693 Author: Yi-Fan Tsai Committer: Paul Hohensee Date: 2023-05-22 16:53:23 +0000 URL: https://git.openjdk.org/loom/commit/8474e693b4404ba62927fe0e43e68b904d66fbde 8308465: Reduce memory accesses in AArch64 MD5 intrinsic Reviewed-by: aph, phh ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp Changeset: 90d5041b Author: Johan Sj?len Date: 2023-05-22 19:41:59 +0000 URL: https://git.openjdk.org/loom/commit/90d5041b6a055d6266140ffea2aa9a3b08b32209 8300086: Replace NULL with nullptr in share/c1/ Reviewed-by: thartmann, chagedorn ! src/hotspot/share/c1/c1_CFGPrinter.cpp ! src/hotspot/share/c1/c1_CFGPrinter.hpp ! src/hotspot/share/c1/c1_Canonicalizer.cpp ! src/hotspot/share/c1/c1_CodeStubs.hpp ! src/hotspot/share/c1/c1_Compilation.cpp ! src/hotspot/share/c1/c1_Compilation.hpp ! src/hotspot/share/c1/c1_Compiler.cpp ! src/hotspot/share/c1/c1_FrameMap.cpp ! src/hotspot/share/c1/c1_FrameMap.hpp ! src/hotspot/share/c1/c1_GraphBuilder.cpp ! src/hotspot/share/c1/c1_GraphBuilder.hpp ! src/hotspot/share/c1/c1_IR.cpp ! src/hotspot/share/c1/c1_IR.hpp ! src/hotspot/share/c1/c1_Instruction.cpp ! src/hotspot/share/c1/c1_Instruction.hpp ! src/hotspot/share/c1/c1_InstructionPrinter.cpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.cpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_LIRGenerator.hpp ! src/hotspot/share/c1/c1_LinearScan.cpp ! src/hotspot/share/c1/c1_Optimizer.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.cpp ! src/hotspot/share/c1/c1_RangeCheckElimination.hpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/c1/c1_ValueMap.cpp ! src/hotspot/share/c1/c1_ValueMap.hpp ! src/hotspot/share/c1/c1_ValueStack.cpp ! src/hotspot/share/c1/c1_ValueStack.hpp ! src/hotspot/share/c1/c1_ValueType.cpp ! src/hotspot/share/c1/c1_ValueType.hpp Changeset: 878162b3 Author: Thomas Stuefe Date: 2023-05-22 19:59:02 +0000 URL: https://git.openjdk.org/loom/commit/878162b362f64e5f434f8ad340514c9f94a2b4ea 8306507: [linux] Print number of memory mappings in error reports Reviewed-by: adinn, sgehwolf ! src/hotspot/os/linux/os_linux.cpp Changeset: 5d8ba938 Author: Ichiroh Takiguchi Date: 2023-05-23 00:41:59 +0000 URL: https://git.openjdk.org/loom/commit/5d8ba938bef162b74816147eb1002a0620a419ba 8308046: Move Solaris related charsets from java.base to jdk.charsets module Reviewed-by: naoto ! make/data/charsetmapping/DoubleByte-X.java.template ! make/data/charsetmapping/stdcs-linux ! src/jdk.charsets/share/classes/sun/nio/cs/ext/Big5_Solaris.java.template ! src/jdk.charsets/share/classes/sun/nio/cs/ext/EUC_JP.java.template Changeset: ada416e6 Author: Alan Bateman Date: 2023-05-23 07:05:07 +0000 URL: https://git.openjdk.org/loom/commit/ada416e66cbff6c8e631bf352acc0744c248740b 8308235: ThreadContainer registry accumulates weak refs Reviewed-by: jpai ! src/java.base/share/classes/jdk/internal/vm/ThreadContainers.java + test/jdk/java/util/concurrent/Executors/UnreferencedExecutor.java Changeset: fe8c689e Author: Alan Bateman Date: 2023-05-23 07:05:44 +0000 URL: https://git.openjdk.org/loom/commit/fe8c689eeea4fa19d4a8742f4ef1d8216f1394e6 8308038: java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java timed out Reviewed-by: dfuchs, jpai ! test/jdk/java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java Changeset: 422128b7 Author: Doug Simon Date: 2023-05-23 07:20:00 +0000 URL: https://git.openjdk.org/loom/commit/422128b70a57c8c6a997938fbf8d8cb19bed65e4 8306992: [JVMCI] mitigate more against JVMCI related OOME causing VM to exit Reviewed-by: never ! src/hotspot/share/jvmci/jvmci.cpp ! src/hotspot/share/jvmci/jvmciCompiler.cpp ! src/hotspot/share/jvmci/jvmciCompiler.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestHotSpotJVMCIRuntime.java Changeset: c4408278 Author: Adam Sotona Date: 2023-05-23 07:23:37 +0000 URL: https://git.openjdk.org/loom/commit/c4408278d1012746c91ba4c31068538850c68d30 8308093: Disable language preview features use in JDK Reviewed-by: liach, erikj, alanb, darcy ! make/Docs.gmk ! make/modules/java.base/Java.gmk ! make/modules/jdk.jartool/Java.gmk ! src/java.base/share/classes/module-info.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.jartool/share/classes/module-info.java ! test/jdk/jdk/classfile/TEST.properties ! test/micro/org/openjdk/bench/jdk/classfile/AbstractCorpusBenchmark.java ! test/micro/org/openjdk/bench/jdk/classfile/GenerateStackMaps.java ! test/micro/org/openjdk/bench/jdk/classfile/RebuildMethodBodies.java ! test/micro/org/openjdk/bench/jdk/classfile/RepeatedModelTraversal.java ! test/micro/org/openjdk/bench/jdk/classfile/Write.java Changeset: 69f508a2 Author: Matthias Baesken Date: 2023-05-23 07:43:14 +0000 URL: https://git.openjdk.org/loom/commit/69f508a2ac344eb61cef7be985348873b8265171 8308300: enhance exceptions in MappedMemoryUtils.c Reviewed-by: alanb, clanger, bpb ! src/java.base/share/native/libjava/jni_util.c ! src/java.base/share/native/libjava/jni_util.h ! src/java.base/unix/native/libnio/MappedMemoryUtils.c Changeset: 06b0a5e0 Author: Emanuel Peter Date: 2023-05-23 08:05:13 +0000 URL: https://git.openjdk.org/loom/commit/06b0a5e03852dfed9f1dee4791fc71b4e4e1eeda 8302652: [SuperWord] Reduction should happen after loop, when possible Reviewed-by: kvn, pli, jbhateja, sviswanathan ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! test/hotspot/jtreg/compiler/loopopts/superword/ProdRed_Int.java ! test/hotspot/jtreg/compiler/loopopts/superword/RedTest_int.java ! test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java ! test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java ! test/hotspot/jtreg/compiler/loopopts/superword/SumRed_Int.java ! test/hotspot/jtreg/compiler/loopopts/superword/SumRed_Long.java + test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java Changeset: 4f0f7761 Author: Amit Kumar Committer: Lutz Schmidt Date: 2023-05-23 08:32:27 +0000 URL: https://git.openjdk.org/loom/commit/4f0f77618731003010198e2163c9f3f53892a64f 8308403: [s390x] separate remaining_cargs from z_abi_160 Reviewed-by: mdoerr, lucy ! src/hotspot/cpu/s390/frame_s390.hpp Changeset: bdd24028 Author: Emanuel Peter Date: 2023-05-23 09:51:19 +0000 URL: https://git.openjdk.org/loom/commit/bdd240283e1690adf52b2fe7a751d579cb89b33b 8260943: C2 SuperWord: Remove dead vectorization optimization added by 8076284 Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp Changeset: e5596133 Author: Axel Boldt-Christmas Date: 2023-05-23 10:45:01 +0000 URL: https://git.openjdk.org/loom/commit/e55961331e10884e4255ab152d430ceb3f02748c 8308500: ZStatSubPhase::register_start should not call register_gc_phase_start if ZAbort::should_abort() Reviewed-by: stefank, eosterlund ! src/hotspot/share/gc/z/zStat.cpp Changeset: 80d7de70 Author: Aggelos Biboudis Committer: Jan Lahoda Date: 2023-05-23 11:18:55 +0000 URL: https://git.openjdk.org/loom/commit/80d7de7074ef5b78e458f5e2cb88938b722eecc0 8305582: Compiler crash when compiling record patterns with var Reviewed-by: vromero, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/T8305582.java + test/langtools/tools/javac/T8305582.out + test/langtools/tools/javac/diags/examples/DeconstructionpatternsNonVar.java Changeset: 26227a6f Author: Emanuel Peter Date: 2023-05-23 11:25:01 +0000 URL: https://git.openjdk.org/loom/commit/26227a6ff86dae21c143fe93d58a73605386adae 8305073: Fix VerifyLoopOptimizations - step 2 - verify idom Reviewed-by: chagedorn, thartmann, kvn ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopopts/TestVerifyLoopOptimizations.java Changeset: eb11508e Author: Per Minborg Date: 2023-05-23 11:29:05 +0000 URL: https://git.openjdk.org/loom/commit/eb11508eff7b2e01b8942f4cda9fb01527a860b5 8308281: Java snippets in the FFM API need to be updated Reviewed-by: mcimadamore ! src/java.base/share/classes/java/lang/foreign/Arena.java ! src/java.base/share/classes/java/lang/foreign/Linker.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/ValueLayout.java ! src/java.base/share/classes/java/lang/foreign/package-info.java + src/java.base/share/classes/java/lang/foreign/snippet-files/Snippets.java Changeset: 1cfb265b Author: Jan Lahoda Date: 2023-05-23 11:47:00 +0000 URL: https://git.openjdk.org/loom/commit/1cfb265befa497e4c1c9a75c0fb576bb75adea70 8307814: In the case of two methods with Record Patterns, the second one contains a line number from the first method Reviewed-by: vromero, godin ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/LineNumberTestBase.java + test/langtools/tools/javac/classfiles/attributes/LineNumberTable/MultipleRecordPatterns.java ! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/TestCase.java Changeset: 582ddeb2 Author: Daniel Fuchs Date: 2023-05-23 12:02:58 +0000 URL: https://git.openjdk.org/loom/commit/582ddeb2b24f77307b89befc8c643290e0ed1b11 8308545: java/net/httpclient/ShutdownNow.java fails with "stream 1 cancelled" Reviewed-by: jpai ! test/jdk/java/net/httpclient/ShutdownNow.java Changeset: 9e196b36 Author: Daniel Fuchs Date: 2023-05-23 12:07:23 +0000 URL: https://git.openjdk.org/loom/commit/9e196b3631af0156ce9958a2f631894968211a4c 8308565: HttpClient: Sanitize logging while stopping Reviewed-by: jpai ! src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java Changeset: c0c4d771 Author: Jan Kratochvil Committer: Thomas Stuefe Date: 2023-05-23 13:50:58 +0000 URL: https://git.openjdk.org/loom/commit/c0c4d771922f8fce36f1014e57d7e7a213243891 8308544: Fix compilation regression from JDK-8306983 on musl libc Reviewed-by: bpb, stuefe ! src/jdk.internal.le/linux/native/lible/CLibrary.cpp Changeset: bb0ff48a Author: Jamil Nimeh Date: 2023-05-23 14:31:08 +0000 URL: https://git.openjdk.org/loom/commit/bb0ff48aa94c4648a2f929226dd8d252431bcd03 8305091: Change ChaCha20 cipher init behavior to match AES-GCM Reviewed-by: djelinski, ascarpino ! src/java.base/share/classes/com/sun/crypto/provider/ChaCha20Cipher.java ! test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/ChaCha20NoReuse.java Changeset: 97d3b273 Author: changpeng1997 Committer: Eric Liu Date: 2023-05-23 14:46:55 +0000 URL: https://git.openjdk.org/loom/commit/97d3b2731ebd7594cbc3579f4c375ae70bb489a3 8307523: [vectorapi] Optimize MaskFromLongBenchmark.java Reviewed-by: qamai, xgong, ngasson ! test/micro/org/openjdk/bench/jdk/incubator/vector/MaskFromLongBenchmark.java Changeset: e9320f31 Author: Axel Boldt-Christmas Date: 2023-05-23 15:33:08 +0000 URL: https://git.openjdk.org/loom/commit/e9320f31dcc4ff5197e8c3bca504a7d5c1a9035e 8308116: jdk.test.lib.compiler.InMemoryJavaCompiler.compile does not close files Reviewed-by: lmesnik, stefank, jlahoda ! test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java Changeset: 710453c6 Author: Brian Burkhalter Date: 2023-05-23 16:00:40 +0000 URL: https://git.openjdk.org/loom/commit/710453c676712d021bf856dc601d965e4e270805 8308016: Use snippets in java.io package Reviewed-by: rriggs ! src/java.base/share/classes/java/io/BufferedReader.java ! src/java.base/share/classes/java/io/BufferedWriter.java ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/CharArrayWriter.java ! src/java.base/share/classes/java/io/Console.java ! src/java.base/share/classes/java/io/File.java ! src/java.base/share/classes/java/io/FilePermission.java ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/InputStreamReader.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/io/PipedInputStream.java ! src/java.base/share/classes/java/io/PipedOutputStream.java ! src/java.base/share/classes/java/io/PipedReader.java ! src/java.base/share/classes/java/io/PipedWriter.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/io/StreamTokenizer.java ! src/java.base/share/classes/java/io/StringWriter.java ! src/java.base/share/classes/java/io/Writer.java Changeset: ab241b34 Author: Quan Anh Mai Date: 2023-05-23 17:06:25 +0000 URL: https://git.openjdk.org/loom/commit/ab241b3428839fd121ee4ce5fdafeb649f453550 8306706: Support out-of-line code generation for MachNodes Reviewed-by: thartmann, kvn ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp ! src/hotspot/cpu/x86/c2_MacroAssembler_x86.hpp ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/metaprogramming/enableIf.hpp ! src/hotspot/share/opto/c2_CodeStubs.cpp ! src/hotspot/share/opto/c2_CodeStubs.hpp + src/hotspot/share/utilities/tuple.hpp + test/micro/org/openjdk/bench/vm/compiler/x86/ConvertF2I.java Changeset: bddf4838 Author: Afshin Zafari Date: 2023-05-23 17:08:08 +0000 URL: https://git.openjdk.org/loom/commit/bddf48380e658df630fecad5eda40106a24b6e1c 8303942: os::write should write completely Reviewed-by: coleenp, iklam, dholmes, mgronlun ! src/hotspot/os/posix/os_posix.cpp ! src/hotspot/os/posix/perfMemory_posix.cpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/share/cds/filemap.cpp ! src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp ! src/hotspot/share/jfr/writers/jfrStreamWriterHost.inline.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/os.hpp ! src/hotspot/share/services/heapDumperCompression.cpp Changeset: ed0e956f Author: Daniel D. Daugherty Date: 2023-05-23 20:43:20 +0000 URL: https://git.openjdk.org/loom/commit/ed0e956fc28a54a0eb49bab70a7d010095ce2544 8308716: ProblemList java/util/concurrent/ScheduledThreadPoolExecutor/BasicCancelTest.java with genzgc on windows-x64 8308718: ProblemList three mlvm/indy/func/jvmti tests on windows-x64 in Xcomp mode 8308720: ProblemList java/awt/event/SequencedEvent/MultipleContextsFunctionalTest.java on macosx-x64 Reviewed-by: azvegint, darcy ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList.txt Changeset: 6b27dad7 Author: Valerie Peng Date: 2023-05-23 21:11:38 +0000 URL: https://git.openjdk.org/loom/commit/6b27dad76e20131503da15119d930df17dd517d9 8301154: SunPKCS11 KeyStore deleteEntry results in dangling PrivateKey entries Reviewed-by: weijun, hchao ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11KeyStore.java + test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java = test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval/p11-nss.txt + test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval/temp.ks Changeset: 8ffa264c Author: Chen Liang Committer: Mandy Chung Date: 2023-05-23 21:26:25 +0000 URL: https://git.openjdk.org/loom/commit/8ffa264cf009ddb1af486831f12bc70f93d74cf5 8306698: Add overloads to MethodTypeDesc::of Reviewed-by: mchung ! src/java.base/share/classes/java/lang/constant/ConstantUtils.java ! src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java ! test/jdk/java/lang/constant/MethodTypeDescTest.java Changeset: 2836c34b Author: Jamil Nimeh Date: 2023-05-23 21:32:28 +0000 URL: https://git.openjdk.org/loom/commit/2836c34b64e4626e25c86a53e5bef2bf32f95d2e 8179502: Enhance OCSP, CRL and Certificate Fetch Timeouts Reviewed-by: mullan ! src/java.base/share/classes/sun/security/action/GetPropertyAction.java ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.base/share/classes/sun/security/provider/certpath/URICertStore.java + test/jdk/java/security/cert/CertPathValidator/OCSP/OCSPTimeout.java ! test/jdk/java/security/testlibrary/CertificateBuilder.java + test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java ! test/jdk/sun/security/x509/URICertStore/CRLReadTimeout.java Changeset: beb75e65 Author: Emanuel Peter Date: 2023-05-24 07:00:27 +0000 URL: https://git.openjdk.org/loom/commit/beb75e651f1e4a9bd21f611f9abc7ca28afbae31 8306302: C2 Superword fix: use VectorMaskCmp and VectorBlend instead of CMoveVF/D Reviewed-by: fgao, jbhateja ! src/hotspot/cpu/aarch64/aarch64_vector.ad ! src/hotspot/cpu/aarch64/aarch64_vector_ad.m4 ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/adlc/formssel.cpp ! src/hotspot/share/opto/classes.hpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/superword.hpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! test/hotspot/jtreg/compiler/c2/irTests/TestVectorConditionalMove.java ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java Changeset: 05c095cf Author: Doug Simon Date: 2023-05-24 07:15:12 +0000 URL: https://git.openjdk.org/loom/commit/05c095cf39447d8becb3094c38c84a2c0853112b 8308151: [JVMCI] capture JVMCI exceptions in hs-err Reviewed-by: never ! src/hotspot/share/jvmci/jvmci.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! src/hotspot/share/jvmci/jvmciExceptions.hpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/jvmci/vmSymbols_jvmci.hpp ! src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java + test/hotspot/jtreg/compiler/jvmci/TestUncaughtErrorInCompileMethod.config + test/hotspot/jtreg/compiler/jvmci/TestUncaughtErrorInCompileMethod.java Changeset: 466ec300 Author: Tobias Holenstein Date: 2023-05-24 07:29:25 +0000 URL: https://git.openjdk.org/loom/commit/466ec300fc8e5702553123cf2fa4b0d8c7d552d9 8302736: Major performance regression in Math.log on aarch64 Reviewed-by: thartmann, dlong, aph ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/runtime/continuationFreezeThaw.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp Changeset: 20f15352 Author: Martin Doerr Date: 2023-05-24 08:38:34 +0000 URL: https://git.openjdk.org/loom/commit/20f15352a3014042aa69f7cbfb67de0f7fdddb40 8303040: linux PPC64le: Implementation of Foreign Function & Memory API (Preview) Reviewed-by: jvernee, rrich ! src/hotspot/cpu/aarch64/vmstorage_aarch64.hpp ! src/hotspot/cpu/arm/vmstorage_arm.hpp ! src/hotspot/cpu/ppc/downcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp ! src/hotspot/cpu/ppc/foreignGlobals_ppc.hpp ! src/hotspot/cpu/ppc/frame_ppc.cpp ! src/hotspot/cpu/ppc/frame_ppc.inline.hpp ! src/hotspot/cpu/ppc/methodHandles_ppc.cpp ! src/hotspot/cpu/ppc/upcallLinker_ppc.cpp ! src/hotspot/cpu/ppc/vmstorage_ppc.hpp ! src/hotspot/cpu/riscv/vmstorage_riscv.hpp ! src/hotspot/cpu/s390/vmstorage_s390.hpp ! src/hotspot/cpu/x86/vmstorage_x86.hpp ! src/hotspot/cpu/zero/vmstorage_zero.hpp ! src/hotspot/share/prims/foreignGlobals.cpp ! src/java.base/share/classes/jdk/internal/foreign/CABI.java ! src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java ! src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/ABIv2CallArranger.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/PPC64Architecture.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/TypeClass.java + src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/linux/LinuxPPC64leLinker.java ! test/hotspot/jtreg/gc/shenandoah/compiler/TestLinkToNativeRBP.java + test/jdk/java/foreign/TestHFA.java ! test/jdk/java/foreign/callarranger/platform/PlatformLayouts.java + test/jdk/java/foreign/libTestHFA.c Changeset: b7a84b0f Author: Emanuel Peter Date: 2023-05-24 09:38:45 +0000 URL: https://git.openjdk.org/loom/commit/b7a84b0fd766065f3e656620eeba84e4e5b5e4d7 8308758: Problemlist compiler/c2/irTests/TestVectorConditionalMove.java Reviewed-by: chagedorn ! test/hotspot/jtreg/ProblemList.txt Changeset: 2d4d8508 Author: Xiaolin Zheng Committer: Tobias Hartmann Date: 2023-05-24 09:42:26 +0000 URL: https://git.openjdk.org/loom/commit/2d4d850813235a7533cd3bbf776adf69f90f02e6 8308091: Remove unused iRegIHeapbase() matching operand Reviewed-by: fyang, thartmann ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/riscv/riscv.ad Changeset: 65c8dbe6 Author: Thomas Schatzl Date: 2023-05-24 12:02:04 +0000 URL: https://git.openjdk.org/loom/commit/65c8dbe693f09203f66cd25aa9179982ddc38274 8171221: Remove -XX:+CheckMemoryInitialization Reviewed-by: ayang, shade ! src/hotspot/share/gc/shared/collectedHeap.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/memAllocator.cpp ! src/hotspot/share/runtime/globals.hpp - test/hotspot/jtreg/gc/TestMemoryInitialization.java - test/hotspot/jtreg/gc/TestMemoryInitializationWithSerial.java Changeset: 544978cb Author: Viktor Klang Committer: Alan Bateman Date: 2023-05-24 12:41:27 +0000 URL: https://git.openjdk.org/loom/commit/544978cb76d4a4f7cd3f4e5dc0dac3f6e4a52be1 8298066: java/util/concurrent/locks/Lock/OOMEInAQS.java timed out Reviewed-by: alanb ! test/jdk/ProblemList-generational-zgc.txt ! test/jdk/ProblemList-zgc.txt ! test/jdk/java/util/concurrent/locks/Lock/OOMEInAQS.java Changeset: d7245f70 Author: Maxim Kartashev Committer: Alexey Ushakov Date: 2023-05-24 12:48:37 +0000 URL: https://git.openjdk.org/loom/commit/d7245f70e7bac1236bbcdcd9b25346ca22ab8bb2 8305578: X11GraphicsDevice.pGetBounds() is slow in remote X11 sessions Reviewed-by: avu, serb ! src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java ! src/java.desktop/unix/classes/sun/awt/X11GraphicsDevice.java Changeset: 7764f46e Author: Martin Doerr Date: 2023-05-24 13:45:57 +0000 URL: https://git.openjdk.org/loom/commit/7764f46e9e3a46e39419ce35aaca8efdb3669872 8308761: New test TestHFA needs adaptation for JDK-8308276 Reviewed-by: mcimadamore, mbaesken ! test/jdk/java/foreign/TestHFA.java Changeset: 736b90d5 Author: Daniel Fuchs Date: 2023-05-24 14:23:24 +0000 URL: https://git.openjdk.org/loom/commit/736b90d54b51830de7757a8de3ad9c98437c824a 8308310: HttpClient: Avoid logging or locking from within synchronized blocks Reviewed-by: jpai ! src/java.net.http/share/classes/jdk/internal/net/http/BufferingSubscriber.java ! src/java.net.http/share/classes/jdk/internal/net/http/ConnectionPool.java ! src/java.net.http/share/classes/jdk/internal/net/http/Exchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1AsyncReceiver.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Exchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpConnection.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpResponseImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java ! src/java.net.http/share/classes/jdk/internal/net/http/PlainHttpConnection.java ! src/java.net.http/share/classes/jdk/internal/net/http/PushGroup.java ! src/java.net.http/share/classes/jdk/internal/net/http/RedirectFilter.java ! src/java.net.http/share/classes/jdk/internal/net/http/RequestPublishers.java ! src/java.net.http/share/classes/jdk/internal/net/http/SocketTube.java ! src/java.net.http/share/classes/jdk/internal/net/http/Stream.java ! src/java.net.http/share/classes/jdk/internal/net/http/WindowUpdateSender.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SSLFlowDelegate.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SSLTube.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SequentialScheduler.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SubscriberWrapper.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/SubscriptionBase.java ! src/java.net.http/share/classes/jdk/internal/net/http/websocket/TransportImpl.java ! test/jdk/java/net/httpclient/AuthFilterCacheTest.java ! test/jdk/java/net/httpclient/ConcurrentResponses.java ! test/jdk/java/net/httpclient/ExpectContinueTest.java ! test/jdk/java/net/httpclient/HttpClientLocalAddrTest.java ! test/jdk/java/net/httpclient/ManyRequests.java ! test/jdk/java/net/httpclient/ManyRequests2.java ! test/jdk/java/net/httpclient/PlainProxyConnectionTest.java Changeset: d10467e2 Author: Erik Gahlin Date: 2023-05-24 16:38:50 +0000 URL: https://git.openjdk.org/loom/commit/d10467e27b9898a75d7df8c31ee14a33edf7b848 8307738: JFR: EventStream.openRepository() drops events Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java Changeset: 89f2d458 Author: Chris Plummer Date: 2023-05-24 16:54:05 +0000 URL: https://git.openjdk.org/loom/commit/89f2d458a293830e271d353c6736907f7e224609 8308237: add JDWP and JDI virtual thread support for ThreadReference.PopFrames 8308481: JDI TestScaffold does not support passing app arguments to the debuggee 8305632: Test com/sun/jdi/PopAndInvokeTest.java fails with OpaqueFrameException Reviewed-by: alanb, sspitsyn, lmesnik ! src/java.se/share/data/jdwp/jdwp.spec ! src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java ! src/jdk.jdi/share/classes/com/sun/tools/jdi/StackFrameImpl.java ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001.java ! test/jdk/ProblemList-Virtual.txt + test/jdk/com/sun/jdi/PopFramesTest.java ! test/jdk/com/sun/jdi/TestScaffold.java + test/jdk/com/sun/jdi/libPopFramesTestTarg.c From aph-open at littlepinkcloud.com Fri May 26 09:44:11 2023 From: aph-open at littlepinkcloud.com (Andrew Haley) Date: Fri, 26 May 2023 10:44:11 +0100 Subject: Naming Things - Task and Subtask In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> Message-ID: On 5/19/23 20:16, Holo The Sage Wolf wrote: > I think that: [ TWR-style] scoped values > Is better (note that this is currently impossible because of how scopedValued are implemented. Something I talked about in this mailing-list long ago and was pushed back because Java?s TWR is not good enough to guarantee no memory leaks from mis-using ScopedValues), No, that's not the reason. ScopedValue is implemented using Callables because it is the only way to make the structure robust. While this has implications for preventing memory leaks, robustness implies much more than that. Among other things, it means that we can use scoped values to carry handles which access capabilities, e.g. foreign memory access. A better question to answer, IMO, is how to add enough syntactic sugar around Lambda calls to handle Exceptions nicely. The Lambda itself doesn't have to be visible to the programmer. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From forax at univ-mlv.fr Fri May 26 10:32:03 2023 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 26 May 2023 12:32:03 +0200 (CEST) Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> <75031571.63794685.1684930477067.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <756183622.65665389.1685097123124.JavaMail.zimbra@univ-eiffel.fr> ----- Original Message ----- > From: "Ron Pressler" > To: "Remi Forax" > Cc: "loom-dev" > Sent: Wednesday, May 24, 2023 2:48:45 PM > Subject: Re: [External] : Re: Changes to JEP 453 >> On 24 May 2023, at 13:14, forax at univ-mlv.fr wrote: >> >> the idea is to declare explicitly the exception when creating the STS because >> Java is not able to do the union of several exceptions, >> but the compiler has no problem to infer the type of the exception (which is a >> subclass of the one declared when creating the STS) when calling fork. > > > Even if we did have unions of multiple forks, what I tried saying was that we > could have exception transparency for Subtask.result, but not for > SoF.throwIfFailed, which is what we want to encourage people to use. There > could be no inference there. yes, no inference because the Java type system lacks unions. But i see the explicit declaration of the common exception has an advantage more than a burden, you care once about the type of the exception and the STS implementation deals with the exceptions properly, the same way the type of the result is correctly propagated. > >> >> Handling developer mistakes at compile time, not at runtime is better IMO. >> This is important in this particular case because exception paths in the code >> tend to be less tested. > > Ok, so what you?re saying is: It may be desirable to have STS bound the > exception types thrown by the forks (though that?s not exception transparency). > I can see that, and we tried that in one of the prototypes but weren?t sure > about whether having two type parameters (or one for SoF) may deter users; > that?s not helped by the fact that tasks may frequently throw both IOException > and InterruptedException whose common supertype is Exception. But I think > that's a reasonable tweak to consider in the future. :) And as i said earlier, there is a trick to avoid InterruptedException to be part of the inferred exceptions. > > > BTW, I just noticed something you said about logging in your previous message. > STS is designed for a style where exceptions are handled centrally and logging > is not handled centrally, i.e. where the scope is interested in everything that > could affect its own outcome and in nothing but what could affect its own > outcome. I?m not saying that other styles wouldn?t be better sometimes, but STS > is designed for that particular style. So if you find yourself ever inspecting > results that don?t affect the outcome or explicitly handling a particular > fork?s exceptions ? i.e. if you find yourself ever calling any Subtask method > other than get outside handleComplete ? then there?s a very good chance you?re > not using STS in the intended manner. I agree with your last sentence, calling methods on callables that have not be run or have been interrupted by shutdown() is an issue because the state() of those tasks give you enough information. But i disagree with the first part of your paragraph, exception logging can not be handled de-centrally (inside the Callable) because you may log exceptions that are due to the call to shutdown(), so exceptions which should not be logged because they are part of the normal lifecycle of a STS. I believe that in that case, the future subclass of STS with a join() that takes a function with a stream is the way to handle centralized logging because only the result|exception of the tasks that have get outside of handleComplete() will be seen by the stream. > > ? Ron R?mi From duke at openjdk.org Sun May 28 05:42:19 2023 From: duke at openjdk.org (duke) Date: Sun, 28 May 2023 05:42:19 GMT Subject: git: openjdk/loom: fibers: 4 new changesets Message-ID: <6c337fb6-53c0-4d1a-bd93-ad8a72619ef5@openjdk.org> Changeset: fd6048e2 Author: Alan Bateman Date: 2023-05-26 08:56:58 +0000 URL: https://git.openjdk.org/loom/commit/fd6048e27ac3cacac622ea49e4df070ed6cc24c0 Typos in javadoc ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java Changeset: ac39c6e8 Author: Alan Bateman Date: 2023-05-26 08:57:17 +0000 URL: https://git.openjdk.org/loom/commit/ac39c6e889396f10821f7da955f7755fabbc7280 Thread.interrupted ! src/java.base/share/classes/java/lang/VirtualThread.java Changeset: 9e3e88c8 Author: Alan Bateman Date: 2023-05-27 14:52:18 +0000 URL: https://git.openjdk.org/loom/commit/9e3e88c874ad6c8d0962e67b4ca8e64ee31b4c79 Make clear that field is non-field ! src/java.base/share/classes/java/lang/ScopedValue.java Changeset: 7b2bff5e Author: Alan Bateman Date: 2023-05-27 14:53:08 +0000 URL: https://git.openjdk.org/loom/commit/7b2bff5e6fa057f8e6e30a5a9427a0d477a9daf9 Remove therad counting from shared TC ! src/java.base/share/classes/jdk/internal/vm/SharedThreadContainer.java ! src/java.base/share/classes/jdk/internal/vm/ThreadDumper.java From aph-open at littlepinkcloud.com Tue May 30 09:13:45 2023 From: aph-open at littlepinkcloud.com (Andrew Haley) Date: Tue, 30 May 2023 10:13:45 +0100 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: On 5/23/23 15:07, Attila Kelemen wrote: > What I wish for is a way to capture the current scoped values, and > later execute code with the captured scoped values. Thanks for the thought. An earlier version of scoped values did permit this to be done, but it was removed. That's because, for reasons of integrity, we need to be able to guarantee that, when a binding scope terminates, the value is no longer bound in any thread. And that it will never be re-bound without an explicit binding operation. The scope used by a scoped value binding is the current scope, at runtime. This is by design. The only way to capture a scope and use it in a different context is by a thread, in a structured concurrency context. Because of this rule we can safely do things like MemType memoryRegion = allocateMem() try { ScopedValue.where(REGION, memoryRegion).run(someActions); } finally { memoryRegion.close(); } ... in the secure knowledge that no one will ever see REGION.get() return a value after the region has been closed. This is correctness by construction: rather than detecting some errors at runtime, we make them impossible. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From duke at openjdk.org Tue May 30 16:20:56 2023 From: duke at openjdk.org (duke) Date: Tue, 30 May 2023 16:20:56 GMT Subject: git: openjdk/loom: fibers: 2 new changesets Message-ID: <59cb639a-2478-4bf0-85f5-e34f93b5e92e@openjdk.org> Changeset: b27ebf98 Author: Alan Bateman Date: 2023-05-29 14:17:20 +0000 URL: https://git.openjdk.org/loom/commit/b27ebf986e1169fa3b4b60e3c0e087cd3c37ac20 Add statement to get/exception to make it clear why they throw ! src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java ! test/jdk/java/util/concurrent/StructuredTaskScope/StructuredTaskScopeTest.java Changeset: 92dd9fdb Author: Alan Bateman Date: 2023-05-30 17:20:06 +0000 URL: https://git.openjdk.org/loom/commit/92dd9fdbd36299ad6f971107ae382d5773720b4a Re-write ScopedValue class description ! src/java.base/share/classes/java/lang/ScopedValue.java From attila.kelemen85 at gmail.com Tue May 30 16:58:18 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Tue, 30 May 2023 18:58:18 +0200 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: But then `CapturedScopedValueContext.inContext` would be created by the JDK, and it could verify that we are still within the scope, which would ensure that resources (like the one you have mentioned) passed in a scoped value are not used outside of the scope. I don't see that it would be fundamentally different compared to the check of `StructuredTaskScope.fork`, which you can also try to use outside of the scope in which case it would just throw an exception. Similarly, `CapturedScopedValueContext.inContext` would behave similarly as `StructuredTaskScope.fork`. The only relaxation would be that `CapturedScopedValueContext.inContext` would be allowed to be called in a nested context (while `fork` is not, because that would be misleading). Granted, this check can't be made as efficient as `fork`, but I would assume that in reasonable circumstances, the efficiency would be satisfactory. Andrew Haley ezt ?rta (id?pont: 2023. m?j. 30., K, 11:14): > > On 5/23/23 15:07, Attila Kelemen wrote: > > What I wish for is a way to capture the current scoped values, and > > later execute code with the captured scoped values. > > Thanks for the thought. An earlier version of scoped values did permit > this to be done, but it was removed. > > That's because, for reasons of integrity, we need to be able to guarantee > that, when a binding scope terminates, the value is no longer bound in > any thread. And that it will never be re-bound without an explicit binding > operation. > > The scope used by a scoped value binding is the current scope, at runtime. > This is by design. The only way to capture a scope and use it in a different > context is by a thread, in a structured concurrency context. > > Because of this rule we can safely do things like > > MemType memoryRegion = allocateMem() > try { > ScopedValue.where(REGION, memoryRegion).run(someActions); > } finally { > memoryRegion.close(); > } > > ... in the secure knowledge that no one will ever see REGION.get() return a > value after the region has been closed. > > This is correctness by construction: rather than detecting some errors > at runtime, we make them impossible. > > -- > Andrew Haley (he/him) > Java Platform Lead Engineer > Red Hat UK Ltd. > https://keybase.io/andrewhaley > EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 > From aph-open at littlepinkcloud.com Wed May 31 09:26:06 2023 From: aph-open at littlepinkcloud.com (Andrew Haley) Date: Wed, 31 May 2023 10:26:06 +0100 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: It may be that I am misunderstanding you, but: On 5/30/23 17:58, Attila Kelemen wrote: > But then `CapturedScopedValueContext.inContext` would be created by > the JDK, and it could verify that we are still within the scope, > which would ensure that resources (like the one you have mentioned) > passed in a scoped value are not used outside of the scope. If we're still within the scope, then surely we don't need to capture the bindings. If we're within the scope, the values will still be bound. > I don't see that it would be fundamentally different compared to the > check of `StructuredTaskScope.fork`, which you can also try to use > outside of the scope in which case it would just throw an > exception. > Similarly, `CapturedScopedValueContext.inContext` would behave > similarly as `StructuredTaskScope.fork`. The only relaxation would > be that `CapturedScopedValueContext.inContext` would be allowed to > be called in a nested context (while `fork` is not, because that > would be misleading). Granted, this check can't be made as efficient > as `fork`, but I would assume that in reasonable circumstances, the > efficiency would be satisfactory. But what would be the point, even if we could do this? All we'd be doing would be making sure that nesting was done correctly with a run-time check, rather than simply enforcing that by construction. We want to be able to do this in Class X: private static final ScopedValue RESOURCE = ScopedValue.newInstance(); ... ScopedValue.where(RESOURCE, null).run(action); in the knowledge that RESOURCE.get() will always be null within action's dynamic scope, unless some code in Class X changes it. If action has a way to restore previously captured scoped values, we can't guarantee that. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From ron.pressler at oracle.com Wed May 31 11:35:05 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 31 May 2023 11:35:05 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <756183622.65665389.1685097123124.JavaMail.zimbra@univ-eiffel.fr> References: <67C02D42-08D5-4732-86D9-6364505F4C1C@oracle.com> <1AA4DD4D-59AA-4FD8-8C5F-D4229A9E8D2D@oracle.com> <1870571212.62955857.1684875600829.JavaMail.zimbra@univ-eiffel.fr> <521106308.63600940.1684920714787.JavaMail.zimbra@univ-eiffel.fr> <75031571.63794685.1684930477067.JavaMail.zimbra@univ-eiffel.fr> <756183622.65665389.1685097123124.JavaMail.zimbra@univ-eiffel.fr> Message-ID: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> > On 26 May 2023, at 11:32, forax at univ-mlv.fr wrote: > > yes, no inference because the Java type system lacks unions. > But i see the explicit declaration of the common exception has an advantage more than a burden, you care once about the type of the exception and the STS implementation deals with the exceptions properly, the same way the type of the result is correctly propagated. > I am sympathetic to your suggestion because among all the designs we explored, we tried a design that propagates exceptions automatically. It was, in my opinion, more theoretically satisfying than STS, because it works like a parallel analogue of a for loop. Just as any exception inside the body of a for loop propagates outside the loop unless it is caught in the body of the loop, any exception in a fork ? whether checked or unchecked ? is automatically propagated unless caught in the body of the fork. This was quite elegant. But in the end we decided to go down a different path because the propagating ?parallel for? one was, we felt, a tad too clever for our first structured concurrency construct. Instead, we designed STS to very much *not* propagate exceptions, and let the policy decide what to do with them. STS encourages examining the exceptions in the policy and then throwing a new wrapped exception. Yes, it makes refactoring sequential code into parallel code less automatically-composable, but it makes the multithreaded nature of the code more explicit ? both in the code and in the exception stack traces ? and we felt that is more appropriate as an introduction to structured concurrency. Now the question is, with the design we?ve chosen and that we primarily designed for wrapping fork exceptions rather than directly propagating them ? for all its pros and cons ? does it make sense to restrict the checked exceptions thrown by the forks? Given that this design requires the explicit handling of unchecked exceptions, which are not restricted by the extra type parameter anyway ? something that is not the case for the return type ? I think the answer is uncertain at best, so we figured might as well opt for a simpler API and type parameter fewer. You may say that your suggestion gives us the best of both worlds: those who wish to wrap exceptions can do so, and those who want to propagate them can do it more easily and type-safely (I see how it could still work nicely with ShutdownOnFailure but not as nicely with other policies). But one could just as easily claim that it gives us the worst of both worlds: It doesn?t have the architectural elegance of the ?parallel for? design, and it makes STS a bit more complicated. I don?t think we have the empirical knowledge to make a determination at this point. Maybe we will in one more release, and maybe it would take longer and we could add other structured concurrency constructs in the future. There are so many possible structured concurrency constructs, some much cleverer than STS (we were overwhelmed by the variety of sensible choices), and I?d love to see libraries experimenting with them. As structured concurrency is better understood by Java programmers, we could consider adding cleverer SC constructs to the JDK. Finally, I know that the general question of checked exception composability is near and dear to your heart, but STS is no more afflicted by this issue than other JDK constructs, and I?d rather see a more general approach supported by the language itself. > > I believe that in that case, the future subclass of STS with a join() that takes a function with a stream is the way to handle centralized logging because only the result|exception of the tasks that have get outside of handleComplete() will be seen by the stream. This argument doesn?t fly because most logging of exceptions, like most code, is not and should not be aware it?s running inside STS. In any event, this kind of centralised logging is not something we want to encourage people to do with STS. However, your suggested third built-in policy has other merits, and we?ll definitely consider adding it. ? Ron From rengels at ix.netcom.com Wed May 31 12:07:19 2023 From: rengels at ix.netcom.com (Robert Engels) Date: Wed, 31 May 2023 07:07:19 -0500 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> References: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> Message-ID: I?m going to add 2 cents to this. After reviewing a lot of streams code that wraps checks exceptions into runtime exceptions - in order to work - it becomes clear the streams api is horrible and absolutely terrible for long-term maintenance. If you use streams with anything but pure functions you are creating lots of grief for the next dev. This api is giving me similar pause. If we don?t have a clean way of dealing with checked exceptions we are creating the same mess all over again. This feels like something that needs first class language support/syntax rather than a bolt on. > On May 31, 2023, at 6:35 AM, Ron Pressler wrote: > > ? > >> On 26 May 2023, at 11:32, forax at univ-mlv.fr wrote: >> >> yes, no inference because the Java type system lacks unions. >> But i see the explicit declaration of the common exception has an advantage more than a burden, you care once about the type of the exception and the STS implementation deals with the exceptions properly, the same way the type of the result is correctly propagated. >> > > I am sympathetic to your suggestion because among all the designs we explored, we tried a design that propagates exceptions automatically. It was, in my opinion, more theoretically satisfying than STS, because it works like a parallel analogue of a for loop. Just as any exception inside the body of a for loop propagates outside the loop unless it is caught in the body of the loop, any exception in a fork ? whether checked or unchecked ? is automatically propagated unless caught in the body of the fork. This was quite elegant. > > But in the end we decided to go down a different path because the propagating ?parallel for? one was, we felt, a tad too clever for our first structured concurrency construct. Instead, we designed STS to very much *not* propagate exceptions, and let the policy decide what to do with them. STS encourages examining the exceptions in the policy and then throwing a new wrapped exception. Yes, it makes refactoring sequential code into parallel code less automatically-composable, but it makes the multithreaded nature of the code more explicit ? both in the code and in the exception stack traces ? and we felt that is more appropriate as an introduction to structured concurrency. > > Now the question is, with the design we?ve chosen and that we primarily designed for wrapping fork exceptions rather than directly propagating them ? for all its pros and cons ? does it make sense to restrict the checked exceptions thrown by the forks? Given that this design requires the explicit handling of unchecked exceptions, which are not restricted by the extra type parameter anyway ? something that is not the case for the return type ? I think the answer is uncertain at best, so we figured might as well opt for a simpler API and type parameter fewer. > > You may say that your suggestion gives us the best of both worlds: those who wish to wrap exceptions can do so, and those who want to propagate them can do it more easily and type-safely (I see how it could still work nicely with ShutdownOnFailure but not as nicely with other policies). But one could just as easily claim that it gives us the worst of both worlds: It doesn?t have the architectural elegance of the ?parallel for? design, and it makes STS a bit more complicated. I don?t think we have the empirical knowledge to make a determination at this point. Maybe we will in one more release, and maybe it would take longer and we could add other structured concurrency constructs in the future. > > There are so many possible structured concurrency constructs, some much cleverer than STS (we were overwhelmed by the variety of sensible choices), and I?d love to see libraries experimenting with them. As structured concurrency is better understood by Java programmers, we could consider adding cleverer SC constructs to the JDK. > > Finally, I know that the general question of checked exception composability is near and dear to your heart, but STS is no more afflicted by this issue than other JDK constructs, and I?d rather see a more general approach supported by the language itself. > >> >> I believe that in that case, the future subclass of STS with a join() that takes a function with a stream is the way to handle centralized logging because only the result|exception of the tasks that have get outside of handleComplete() will be seen by the stream. > > This argument doesn?t fly because most logging of exceptions, like most code, is not and should not be aware it?s running inside STS. In any event, this kind of centralised logging is not something we want to encourage people to do with STS. However, your suggested third built-in policy has other merits, and we?ll definitely consider adding it. > > ? Ron From ron.pressler at oracle.com Wed May 31 12:56:33 2023 From: ron.pressler at oracle.com (Ron Pressler) Date: Wed, 31 May 2023 12:56:33 +0000 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> Message-ID: I also think that checked exceptions pose a challenge is worth addressing (and the reason it hasn?t been addressed yet is that it?s not an easy challenge). But, unlike streams, STS does work nicely with checked exceptions. The question of propagating fork exceptions, however, is separate, and STS was designed for wrapping exceptions rather than propagating them, regardless of whether they?re checked or not. I completely agree with R?mi that a different structured concurrency construct designed around the propagation of exceptions could be quite elegant, but STS was intentionally designed differently. ? Ron > On 31 May 2023, at 13:07, Robert Engels wrote: > > I?m going to add 2 cents to this. > > After reviewing a lot of streams code that wraps checks exceptions into runtime exceptions - in order to work - it becomes clear the streams api is horrible and absolutely terrible for long-term maintenance. If you use streams with anything but pure functions you are creating lots of grief for the next dev. > > This api is giving me similar pause. If we don?t have a clean way of dealing with checked exceptions we are creating the same mess all over again. > > This feels like something that needs first class language support/syntax rather than a bolt on. > >> On May 31, 2023, at 6:35 AM, Ron Pressler wrote: >> >> ? >> >>> On 26 May 2023, at 11:32, forax at univ-mlv.fr wrote: >>> >>> yes, no inference because the Java type system lacks unions. >>> But i see the explicit declaration of the common exception has an advantage more than a burden, you care once about the type of the exception and the STS implementation deals with the exceptions properly, the same way the type of the result is correctly propagated. >>> >> >> I am sympathetic to your suggestion because among all the designs we explored, we tried a design that propagates exceptions automatically. It was, in my opinion, more theoretically satisfying than STS, because it works like a parallel analogue of a for loop. Just as any exception inside the body of a for loop propagates outside the loop unless it is caught in the body of the loop, any exception in a fork ? whether checked or unchecked ? is automatically propagated unless caught in the body of the fork. This was quite elegant. >> >> But in the end we decided to go down a different path because the propagating ?parallel for? one was, we felt, a tad too clever for our first structured concurrency construct. Instead, we designed STS to very much *not* propagate exceptions, and let the policy decide what to do with them. STS encourages examining the exceptions in the policy and then throwing a new wrapped exception. Yes, it makes refactoring sequential code into parallel code less automatically-composable, but it makes the multithreaded nature of the code more explicit ? both in the code and in the exception stack traces ? and we felt that is more appropriate as an introduction to structured concurrency. >> >> Now the question is, with the design we?ve chosen and that we primarily designed for wrapping fork exceptions rather than directly propagating them ? for all its pros and cons ? does it make sense to restrict the checked exceptions thrown by the forks? Given that this design requires the explicit handling of unchecked exceptions, which are not restricted by the extra type parameter anyway ? something that is not the case for the return type ? I think the answer is uncertain at best, so we figured might as well opt for a simpler API and type parameter fewer. >> >> You may say that your suggestion gives us the best of both worlds: those who wish to wrap exceptions can do so, and those who want to propagate them can do it more easily and type-safely (I see how it could still work nicely with ShutdownOnFailure but not as nicely with other policies). But one could just as easily claim that it gives us the worst of both worlds: It doesn?t have the architectural elegance of the ?parallel for? design, and it makes STS a bit more complicated. I don?t think we have the empirical knowledge to make a determination at this point. Maybe we will in one more release, and maybe it would take longer and we could add other structured concurrency constructs in the future. >> >> There are so many possible structured concurrency constructs, some much cleverer than STS (we were overwhelmed by the variety of sensible choices), and I?d love to see libraries experimenting with them. As structured concurrency is better understood by Java programmers, we could consider adding cleverer SC constructs to the JDK. >> >> Finally, I know that the general question of checked exception composability is near and dear to your heart, but STS is no more afflicted by this issue than other JDK constructs, and I?d rather see a more general approach supported by the language itself. >> >>> >>> I believe that in that case, the future subclass of STS with a join() that takes a function with a stream is the way to handle centralized logging because only the result|exception of the tasks that have get outside of handleComplete() will be seen by the stream. >> >> This argument doesn?t fly because most logging of exceptions, like most code, is not and should not be aware it?s running inside STS. In any event, this kind of centralised logging is not something we want to encourage people to do with STS. However, your suggested third built-in policy has other merits, and we?ll definitely consider adding it. >> >> ? Ron From eric at kolotyluk.net Wed May 31 13:20:02 2023 From: eric at kolotyluk.net (Eric Kolotyluk) Date: Wed, 31 May 2023 06:20:02 -0700 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> Message-ID: Who says there will be only one way to handle this... nice to know there are other great ideas lurking... Coming from a Reactive Akka/Scala background, I feel Loom heals many wounds I have experienced along the way... Java may be and old dog, but there are many new tricks left... On 2023-05-31 5:56 a.m., Ron Pressler wrote: > I completely agree with R?mi that a different structured concurrency construct designed around the propagation of exceptions could be quite elegant, but STS was intentionally designed differently. > > ? Ron From josiahnoel at gmail.com Wed May 31 13:58:21 2023 From: josiahnoel at gmail.com (Josiah Noel) Date: Wed, 31 May 2023 09:58:21 -0400 Subject: [External] : Re: Changes to JEP 453 In-Reply-To: References: <187B4C2B-0F6C-4AFD-96A5-EDA68EF6B49D@oracle.com> Message-ID: For my uses it's perfect. Indeed, I actually really like how it is now. On Wed, May 31, 2023, 9:20 AM Eric Kolotyluk wrote: > Who says there will be only one way to handle this... nice to know there > are other great ideas lurking... > > Coming from a Reactive Akka/Scala background, I feel Loom heals many > wounds I have experienced along the way... Java may be and old dog, but > there are many new tricks left... > > On 2023-05-31 5:56 a.m., Ron Pressler wrote: > > I completely agree with R?mi that a different structured concurrency > construct designed around the propagation of exceptions could be quite > elegant, but STS was intentionally designed differently. > > > > ? Ron > -------------- next part -------------- An HTML attachment was scrubbed... URL: From attila.kelemen85 at gmail.com Wed May 31 19:38:32 2023 From: attila.kelemen85 at gmail.com (Attila Kelemen) Date: Wed, 31 May 2023 21:38:32 +0200 Subject: ScopedValue: Capturing current bindings In-Reply-To: References: Message-ID: The gain would be that I can use the upper bindings without worrying that there are new bindings. For my DI framework example, the problem is that a DI framework might want to bind a factory (maybe because it is a lazy singleton, or not a singleton at all), which is then queried ina nested scope. However, if we do not capture the current ScopedValue bindings at the time the DI framework captures its own factories, then the factories might behave differently depending on the context they were called for, and this would be unacceptable for a DI framework (you want very predictable behaviour for your factories). Andrew Haley ezt ?rta (id?pont: 2023. m?j. 31., Sze, 11:26): > > It may be that I am misunderstanding you, but: > > On 5/30/23 17:58, Attila Kelemen wrote: > > > But then `CapturedScopedValueContext.inContext` would be created by > > the JDK, and it could verify that we are still within the scope, > > which would ensure that resources (like the one you have mentioned) > > passed in a scoped value are not used outside of the scope. > > If we're still within the scope, then surely we don't need to capture > the bindings. If we're within the scope, the values will still be > bound. > > > I don't see that it would be fundamentally different compared to the > > check of `StructuredTaskScope.fork`, which you can also try to use > > outside of the scope in which case it would just throw an > > exception. > > > Similarly, `CapturedScopedValueContext.inContext` would behave > > similarly as `StructuredTaskScope.fork`. The only relaxation would > > be that `CapturedScopedValueContext.inContext` would be allowed to > > be called in a nested context (while `fork` is not, because that > > would be misleading). Granted, this check can't be made as efficient > > as `fork`, but I would assume that in reasonable circumstances, the > > efficiency would be satisfactory. > > But what would be the point, even if we could do this? All we'd be > doing would be making sure that nesting was done correctly with a > run-time check, rather than simply enforcing that by construction. > > We want to be able to do this in Class X: > > private static final ScopedValue RESOURCE = ScopedValue.newInstance(); > > ... > ScopedValue.where(RESOURCE, null).run(action); > > in the knowledge that RESOURCE.get() will always be null within > action's dynamic scope, unless some code in Class X changes it. > If action has a way to restore previously captured scoped values, > we can't guarantee that. > > -- > Andrew Haley (he/him) > Java Platform Lead Engineer > Red Hat UK Ltd. > https://keybase.io/andrewhaley > EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 >