Update to jdk-21.0.8+1 (EA)
- Update release notes to 21.0.8+1 - Bump freetype version to 2.13.3 following JDK-8348596 - Bump harfbuzz version to 10.4.0 following JDK-8348597 - Bump lcms2 version to 2.17.0 following JDK-8348110 - Bump libpng version to 1.6.47 following JDK-8348598 - Switch to EA mode - Drop JDK-8351500 local patch which is now available in 21.0.8+1 upstream Related: RHEL-101799
This commit is contained in:
		
							parent
							
								
									887308c5a5
								
							
						
					
					
						commit
						b1fe4679f1
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -34,3 +34,4 @@ | |||||||
| /openjdk-21.0.7+4-ea.tar.xz | /openjdk-21.0.7+4-ea.tar.xz | ||||||
| /openjdk-21.0.7+5-ea.tar.xz | /openjdk-21.0.7+5-ea.tar.xz | ||||||
| /openjdk-21.0.7+6.tar.xz | /openjdk-21.0.7+6.tar.xz | ||||||
|  | /openjdk-21.0.8+1-ea.tar.xz | ||||||
|  | |||||||
							
								
								
									
										387
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										387
									
								
								NEWS
									
									
									
									
									
								
							| @ -3,6 +3,393 @@ Key: | |||||||
| JDK-X  - https://bugs.openjdk.java.net/browse/JDK-X | JDK-X  - https://bugs.openjdk.java.net/browse/JDK-X | ||||||
| CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY | CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY | ||||||
| 
 | 
 | ||||||
|  | New in release OpenJDK 21.0.8 (2025-07-15): | ||||||
|  | =========================================== | ||||||
|  | Live versions of these release notes can be found at: | ||||||
|  |   * https://bit.ly/openjdk2108 | ||||||
|  | 
 | ||||||
|  | * Changes | ||||||
|  |   - JDK-6956385: URLConnection.getLastModified() leaks file handles for jar:file and file: URLs | ||||||
|  |   - JDK-8051591: Test javax/swing/JTabbedPane/8007563/Test8007563.java fails | ||||||
|  |   - JDK-8136895: Writer not closed with disk full error, file resource leaked | ||||||
|  |   - JDK-8180450: secondary_super_cache does not scale well | ||||||
|  |   - JDK-8200566: DistributionPointFetcher fails to fetch CRLs if the DistributionPoints field contains more than one DistributionPoint and the first one fails | ||||||
|  |   - JDK-8211400: nsk.share.gc.Memory::getArrayLength returns wrong value | ||||||
|  |   - JDK-8220213: com/sun/jndi/dns/ConfigTests/Timeout.java failed intermittent | ||||||
|  |   - JDK-8253440: serviceability/sa/TestJhsdbJstackLineNumbers.java failed with "Didn't find enough line numbers" | ||||||
|  |   - JDK-8256211: assert fired in java/net/httpclient/DependentPromiseActionsTest (infrequent) | ||||||
|  |   - JDK-8258483: [TESTBUG] gtest CollectorPolicy.young_scaled_initial_ergo_vm fails if heap is too small | ||||||
|  |   - JDK-8270269: Desktop.browse method fails if earlier CoInitialize call as COINIT_MULTITHREADED | ||||||
|  |   - JDK-8276995: Bug in jdk.jfr.event.gc.collection.TestSystemGC | ||||||
|  |   - JDK-8279016: JFR Leak Profiler is broken with Shenandoah | ||||||
|  |   - JDK-8280991: [XWayland] No displayChanged event after setDisplayMode call | ||||||
|  |   - JDK-8281511: java/net/ipv6tests/UdpTest.java fails with checkTime failed | ||||||
|  |   - JDK-8282726: java/net/vthread/BlockingSocketOps.java timeout/hang intermittently on Windows | ||||||
|  |   - JDK-8286204: [Accessibility,macOS,VoiceOver] VoiceOver reads the spinner value 10 as 1 when user iterates to 10 for the first time on macOS | ||||||
|  |   - JDK-8286875: ProgrammableUpcallHandler::on_entry/on_exit access thread fields from native | ||||||
|  |   - JDK-8294155: Exception thrown before awaitAndCheck hangs PassFailJFrame | ||||||
|  |   - JDK-8295804: javax/swing/JFileChooser/JFileChooserSetLocationTest.java failed with "setLocation() is not working properly" | ||||||
|  |   - JDK-8303770: Remove Baltimore root certificate expiring in May 2025 | ||||||
|  |   - JDK-8305010: Test vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java timed out: thread not suspended | ||||||
|  |   - JDK-8307318: Test serviceability/sa/ClhsdbCDSJstackPrintAll.java failed: ArrayIndexOutOfBoundsException | ||||||
|  |   - JDK-8308966: Add intrinsic for float/double modulo for x86 AVX2 and AVX512 | ||||||
|  |   - JDK-8309667: TLS handshake fails because of ConcurrentModificationException in PKCS12KeyStore.engineGetEntry | ||||||
|  |   - JDK-8309841: Jarsigner should print a warning if an entry is removed | ||||||
|  |   - JDK-8309978: [x64] Fix useless padding | ||||||
|  |   - JDK-8312475: org.jline.util.PumpReader signed byte problem | ||||||
|  |   - JDK-8314056: Remove runtime platform check from frem/drem | ||||||
|  |   - JDK-8314136: Test java/net/httpclient/CancelRequestTest.java failed: WARNING: tracker for HttpClientImpl(42) has outstanding operations | ||||||
|  |   - JDK-8314236: Overflow in Collections.rotate | ||||||
|  |   - JDK-8314840: 3 gc/epsilon tests ignore external vm options | ||||||
|  |   - JDK-8314842: zgc/genzgc tests ignore vm flags | ||||||
|  |   - JDK-8315484: java/awt/dnd/RejectDragDropActionTest.java timed out | ||||||
|  |   - JDK-8315669: Open source several Swing PopupMenu related tests | ||||||
|  |   - JDK-8315742: Open source several Swing Scroll related tests | ||||||
|  |   - JDK-8315871: Opensource five more Swing regression tests | ||||||
|  |   - JDK-8315876: Open source several Swing CSS related tests | ||||||
|  |   - JDK-8315951: Open source several Swing HTMLEditorKit related tests | ||||||
|  |   - JDK-8315981: Opensource five more random Swing tests | ||||||
|  |   - JDK-8316061: Open source several Swing RootPane and Slider related tests | ||||||
|  |   - JDK-8316324: Opensource five miscellaneous Swing tests | ||||||
|  |   - JDK-8316388: Opensource five Swing component related regression tests | ||||||
|  |   - JDK-8316452: java/lang/instrument/modules/AppendToClassPathModuleTest.java ignores VM flags | ||||||
|  |   - JDK-8316497: ColorConvertOp - typo for non-ICC conversions needs one-line fix | ||||||
|  |   - JDK-8316580: HttpClient with StructuredTaskScope does not close when a task fails | ||||||
|  |   - JDK-8318636: Add jcmd to print annotated process memory map | ||||||
|  |   - JDK-8318700: MacOS Zero cannot run gtests due to wrong JVM path | ||||||
|  |   - JDK-8318915: Enhance checks in BigDecimal.toPlainString() | ||||||
|  |   - JDK-8319439: Move BufferNode from PtrQueue files to new files | ||||||
|  |   - JDK-8319572: Test jdk/incubator/vector/LoadJsvmlTest.java ignores VM flags | ||||||
|  |   - JDK-8319690: [AArch64] C2 compilation hits offset_ok_for_immed: assert "c2 compiler bug" | ||||||
|  |   - JDK-8320687: sun.jvmstat.monitor.MonitoredHost.getMonitoredHost() throws unexpected exceptions when invoked concurrently | ||||||
|  |   - JDK-8321204: C2: assert(false) failed: node should be in igvn hash table | ||||||
|  |   - JDK-8321479: java -D-D crashes | ||||||
|  |   - JDK-8321931: memory_swap_current_in_bytes reports 0 as "unlimited" | ||||||
|  |   - JDK-8322141: SequenceInputStream.transferTo should not return as soon as Long.MAX_VALUE bytes have been transferred | ||||||
|  |   - JDK-8322475: Extend printing for System.map | ||||||
|  |   - JDK-8323795: jcmd Compiler.codecache should print total size of code cache | ||||||
|  |   - JDK-8324678: Replace NULL with nullptr in HotSpot gtests | ||||||
|  |   - JDK-8325435: [macos] Menu or JPopupMenu not closed when main window is resized | ||||||
|  |   - JDK-8325680: Uninitialised memory in deleteGSSCB of GSSLibStub.c:179 | ||||||
|  |   - JDK-8326586: Improve Speed of System.map | ||||||
|  |   - JDK-8327071: [Testbug] g-tests for cgroup leave files in /tmp on linux | ||||||
|  |   - JDK-8327169: serviceability/dcmd/vm/SystemMapTest.java and SystemDumpMapTest.java may fail after JDK-8326586 | ||||||
|  |   - JDK-8327370: (ch) sun.nio.ch.Poller.register throws AssertionError | ||||||
|  |   - JDK-8327461: KeyStore getEntry is not thread-safe | ||||||
|  |   - JDK-8328107: Shenandoah/C2: TestVerifyLoopOptimizations test failure | ||||||
|  |   - JDK-8328301: Convert Applet test ManualHTMLDataFlavorTest.java to main program | ||||||
|  |   - JDK-8328482: Convert and Open source few manual applet test to main based | ||||||
|  |   - JDK-8328484: Convert and Opensource few JFileChooser applet test to main | ||||||
|  |   - JDK-8328648: Remove applet usage from JFileChooser tests bug4150029 | ||||||
|  |   - JDK-8328670: Automate and open source few closed manual applet test | ||||||
|  |   - JDK-8328864: NullPointerException in sun.security.jca.ProviderList.getService() | ||||||
|  |   - JDK-8329261: G1: interpreter post-barrier x86 code asserts index size of wrong buffer | ||||||
|  |   - JDK-8329729: java/util/Properties/StoreReproducibilityTest.java times out | ||||||
|  |   - JDK-8330106: C2: VectorInsertNode::make() shouldn't call ConINode::make() directly | ||||||
|  |   - JDK-8330158: C2: Loop strip mining uses ABS with min int | ||||||
|  |   - JDK-8330598: java/net/httpclient/Http1ChunkedTest.java fails with java.util.MissingFormatArgumentException: Format specifier '%s' | ||||||
|  |   - JDK-8330936: [ubsan] exclude function BilinearInterp and ShapeSINextSpan in libawt java2d from ubsan checks | ||||||
|  |   - JDK-8331088: Incorrect TraceLoopPredicate output | ||||||
|  |   - JDK-8331735: UpcallLinker::on_exit races with GC when copying frame anchor | ||||||
|  |   - JDK-8332506: SIGFPE In ObjectSynchronizer::is_async_deflation_needed() | ||||||
|  |   - JDK-8332641: Update nsk.share.jpda.Jdb to don't use finalization | ||||||
|  |   - JDK-8332880: JFR GCHelper class recognizes "Archive" regions as valid | ||||||
|  |   - JDK-8333805: Replaying compilation with null static final fields results in a crash | ||||||
|  |   - JDK-8333890: Fatal error in auto-vectorizer with float16 kernel. | ||||||
|  |   - JDK-8334644: Automate javax/print/attribute/PageRangesException.java | ||||||
|  |   - JDK-8334780: Crash: assert(h_array_list.not_null()) failed: invariant | ||||||
|  |   - JDK-8334895: OpenJDK fails to configure on linux aarch64 when CDS is disabled after JDK-8331942 | ||||||
|  |   - JDK-8335181: Incorrect handling of HTTP/2 GOAWAY frames in HttpClient | ||||||
|  |   - JDK-8335643: serviceability/dcmd/vm tests fail for ZGC after JDK-8322475 | ||||||
|  |   - JDK-8335662: [AArch64] C1: guarantee(val < (1ULL << nbits)) failed: Field too big for insn | ||||||
|  |   - JDK-8335684: Test ThreadCpuTime.java should pause like ThreadCpuTimeArray.java | ||||||
|  |   - JDK-8335710: serviceability/dcmd/vm/SystemDumpMapTest.java and SystemMapTest.java fail on Linux Alpine after 8322475 | ||||||
|  |   - JDK-8335860: compiler/vectorization/TestFloat16VectorConvChain.java fails with non-standard AVX/SSE settings | ||||||
|  |   - JDK-8336042: Caller/callee param size mismatch in deoptimization causes crash | ||||||
|  |   - JDK-8336499: Failure when creating non-CRT RSA private keys in SunPKCS11 | ||||||
|  |   - JDK-8336827: compiler/vectorization/TestFloat16VectorConvChain.java  timeouts on ppc64 platforms after JDK-8335860 | ||||||
|  |   - JDK-8337221: CompileFramework: test library to conveniently compile java and jasm sources for fuzzing | ||||||
|  |   - JDK-8337299: vmTestbase/nsk/jdb/stop_at/stop_at002/stop_at002.java failure goes undetected | ||||||
|  |   - JDK-8337681: PNGImageWriter uses much more memory than necessary | ||||||
|  |   - JDK-8337795: Type annotation attached to incorrect type during class reading | ||||||
|  |   - JDK-8337958: Out-of-bounds array access in secondary_super_cache | ||||||
|  |   - JDK-8337981: ShenandoahHeap::is_in should check for alive regions | ||||||
|  |   - JDK-8337998: CompletionFailure in getEnclosingType attaching type annotations | ||||||
|  |   - JDK-8338010: WB_IsFrameDeoptimized miss ResourceMark | ||||||
|  |   - JDK-8338064: Give better error for ConcurrentHashTable corruption | ||||||
|  |   - JDK-8338136: Hotspot should support multiple large page sizes on Windows | ||||||
|  |   - JDK-8338202: Shenandoah: Improve handshake closure labels | ||||||
|  |   - JDK-8338314: JFR: Split JFRCheckpoint VM operation | ||||||
|  |   - JDK-8339148: Make os::Linux::active_processor_count() public | ||||||
|  |   - JDK-8339288: Improve diagnostic logging runtime/cds/DeterministicDump.java | ||||||
|  |   - JDK-8339300: CollectorPolicy.young_scaled_initial_ergo_vm gtest fails on ppc64 based platforms | ||||||
|  |   - JDK-8339538: Wrong timeout computations in DnsClient | ||||||
|  |   - JDK-8339639: Opensource few AWT PopupMenu tests | ||||||
|  |   - JDK-8339678: Update runtime/condy tests to be executed with VM flags | ||||||
|  |   - JDK-8339727: Open source several AWT focus tests - series 1 | ||||||
|  |   - JDK-8339794: Open source closed choice tests #1 | ||||||
|  |   - JDK-8339810: Clean up the code in sun.tools.jar.Main to properly close resources and use ZipFile during extract | ||||||
|  |   - JDK-8339836: Open source several AWT Mouse tests - Batch 1 | ||||||
|  |   - JDK-8339842: Open source several AWT focus tests - series 2 | ||||||
|  |   - JDK-8339895: Open source several AWT focus tests - series 3 | ||||||
|  |   - JDK-8339906: Open source several AWT focus tests - series 4 | ||||||
|  |   - JDK-8339935: Open source several AWT focus tests - series 5 | ||||||
|  |   - JDK-8339982: Open source several AWT Mouse tests - Batch 2 | ||||||
|  |   - JDK-8339984: Open source AWT MenuItem related tests | ||||||
|  |   - JDK-8339995: Open source several AWT focus tests - series 6 | ||||||
|  |   - JDK-8340024: In ClassReader, extract a constant for the superclass supertype_index | ||||||
|  |   - JDK-8340077: Open source few Checkbox tests - Set2 | ||||||
|  |   - JDK-8340084: Open source AWT Frame related tests | ||||||
|  |   - JDK-8340143: Open source several Java2D rendering loop tests. | ||||||
|  |   - JDK-8340164: Open source few Component tests - Set1 | ||||||
|  |   - JDK-8340173: Open source some Component/Panel/EventQueue tests - Set2 | ||||||
|  |   - JDK-8340176: Replace usage of -noclassgc with -Xnoclassgc in test/jdk/java/lang/management/MemoryMXBean/LowMemoryTest2.java | ||||||
|  |   - JDK-8340193: Open source several AWT Dialog tests - Batch 1 | ||||||
|  |   - JDK-8340228: Open source couple more miscellaneous AWT tests | ||||||
|  |   - JDK-8340271: Open source several AWT Robot tests | ||||||
|  |   - JDK-8340279: Open source several AWT Dialog tests - Batch 2 | ||||||
|  |   - JDK-8340332: Open source mixed AWT tests - Set3 | ||||||
|  |   - JDK-8340366: Open source several AWT Dialog tests - Batch 3 | ||||||
|  |   - JDK-8340367: Opensource few AWT image tests | ||||||
|  |   - JDK-8340393: Open source closed choice tests #2 | ||||||
|  |   - JDK-8340417: Open source some MenuBar tests - Set1 | ||||||
|  |   - JDK-8340432: Open source some MenuBar tests - Set2 | ||||||
|  |   - JDK-8340433: Open source closed choice tests #3 | ||||||
|  |   - JDK-8340437: Open source few more AWT Frame related tests | ||||||
|  |   - JDK-8340458: Open source additional Component tests (part 2) | ||||||
|  |   - JDK-8340555: Open source DnD tests - Set4 | ||||||
|  |   - JDK-8340560: Open Source several AWT/2D font and rendering tests | ||||||
|  |   - JDK-8340605: Open source several AWT PopupMenu tests | ||||||
|  |   - JDK-8340621: Open source several AWT List tests | ||||||
|  |   - JDK-8340625: Open source additional Component tests (part 3) | ||||||
|  |   - JDK-8340639: Open source few more AWT List tests | ||||||
|  |   - JDK-8340713: Open source DnD tests - Set5 | ||||||
|  |   - JDK-8340784: Remove PassFailJFrame constructor with screenshots | ||||||
|  |   - JDK-8340790: Open source several AWT Dialog tests - Batch 4 | ||||||
|  |   - JDK-8340809: Open source few more AWT PopupMenu tests | ||||||
|  |   - JDK-8340874: Open source some of the AWT Geometry/Button tests | ||||||
|  |   - JDK-8340907: Open source closed frame tests # 2 | ||||||
|  |   - JDK-8340966: Open source few Checkbox and Cursor tests - Set1 | ||||||
|  |   - JDK-8340967: Open source few Cursor tests - Set2 | ||||||
|  |   - JDK-8340978: Open source few DnD tests - Set6 | ||||||
|  |   - JDK-8340985: Open source some Desktop related tests | ||||||
|  |   - JDK-8341000: Open source some of the AWT Window tests | ||||||
|  |   - JDK-8341004: Open source AWT FileDialog related tests | ||||||
|  |   - JDK-8341072: Open source several AWT Canvas and Rectangle related tests | ||||||
|  |   - JDK-8341128: open source some 2d graphics tests | ||||||
|  |   - JDK-8341148: Open source several Choice related tests | ||||||
|  |   - JDK-8341162: Open source some of the AWT window test | ||||||
|  |   - JDK-8341170: Open source several Choice related tests (part 2) | ||||||
|  |   - JDK-8341191: Open source few more AWT FileDialog tests | ||||||
|  |   - JDK-8341239: Open source closed frame tests # 3 | ||||||
|  |   - JDK-8341257: Open source few DND tests - Set1 | ||||||
|  |   - JDK-8341258: Open source few various AWT tests - Set1 | ||||||
|  |   - JDK-8341278: Open source few TrayIcon tests - Set7 | ||||||
|  |   - JDK-8341298: Open source more AWT window tests | ||||||
|  |   - JDK-8341373: Open source closed frame tests # 4 | ||||||
|  |   - JDK-8341378: Open source few TrayIcon tests - Set8 | ||||||
|  |   - JDK-8341447: Open source closed frame tests # 5 | ||||||
|  |   - JDK-8341535: sun/awt/font/TestDevTransform.java fails with RuntimeException: Different rendering | ||||||
|  |   - JDK-8341637: java/net/Socket/UdpSocket.java fails with "java.net.BindException: Address already in use" (macos-aarch64) | ||||||
|  |   - JDK-8341779: [REDO BACKPORT] type annotations are not visible to javac plugins across compilation boundaries (JDK-8225377) | ||||||
|  |   - JDK-8341972: java/awt/dnd/DnDRemoveFocusOwnerCrashTest.java timed out after JDK-8341257 | ||||||
|  |   - JDK-8342075: HttpClient: improve HTTP/2 flow control checks | ||||||
|  |   - JDK-8342376: More reliable OOM handling in ExceptionDuringDumpAtObjectsInitPhase test | ||||||
|  |   - JDK-8342524: Use latch in AbstractButton/bug6298940.java instead of delay | ||||||
|  |   - JDK-8342633: javax/management/security/HashedPasswordFileTest.java creates tmp file in src dir | ||||||
|  |   - JDK-8342958: Use jvmArgs consistently in microbenchmarks | ||||||
|  |   - JDK-8343019: Primitive caches must use boxed instances from the archive | ||||||
|  |   - JDK-8343103: Enable debug logging for vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java | ||||||
|  |   - JDK-8343124: Tests fails with java.lang.IllegalAccessException: class com.sun.javatest.regtest.agent.MainWrapper$MainTask cannot access | ||||||
|  |   - JDK-8343144: UpcallLinker::on_entry racingly clears pending exception with GC safepoints | ||||||
|  |   - JDK-8343170: java/awt/Cursor/JPanelCursorTest/JPanelCursorTest.java does not show the default cursor | ||||||
|  |   - JDK-8343224: print/Dialog/PaperSizeError.java fails with MediaSizeName is not A4: A4 | ||||||
|  |   - JDK-8343342: java/io/File/GetXSpace.java fails on Windows with CD-ROM drive | ||||||
|  |   - JDK-8343345: Use -jvmArgsPrepend when running microbenchmarks in RunTests.gmk | ||||||
|  |   - JDK-8343529: serviceability/sa/ClhsdbWhere.java fails AssertionFailure: Corrupted constant pool | ||||||
|  |   - JDK-8343754: Problemlist jdk/jfr/event/oldobject/TestShenandoah.java after JDK-8279016 | ||||||
|  |   - JDK-8343855: HTTP/2 ConnectionWindowUpdateSender may miss some unprocessed DataFrames from closed streams | ||||||
|  |   - JDK-8343891: Test javax/swing/JTabbedPane/TestJTabbedPaneBackgroundColor.java failed | ||||||
|  |   - JDK-8343936: Adjust timeout in test javax/management/monitor/DerivedGaugeMonitorTest.java | ||||||
|  |   - JDK-8344316: security/auth/callback/TextCallbackHandler/Password.java make runnable with JTReg and add the UI | ||||||
|  |   - JDK-8344346: java/net/httpclient/ShutdownNow.java fails with java.lang.AssertionError: client was still running, but exited after further delay: timeout should be adjusted | ||||||
|  |   - JDK-8344361: Restore null return for invalid services from legacy providers | ||||||
|  |   - JDK-8344414: ZGC: Another division by zero in rule_major_allocation_rate | ||||||
|  |   - JDK-8345133: Test sun/security/tools/jarsigner/TsacertOptionTest.java failed: Warning found in stdout | ||||||
|  |   - JDK-8345134: Test sun/security/tools/jarsigner/ConciseJarsigner.java failed: unable to find valid certification path to requested target | ||||||
|  |   - JDK-8345146: [PPC64] Make intrinsic conversions between bit representations of half precision values and floats | ||||||
|  |   - JDK-8345341: Fix incorrect log message in JDI stop002t test | ||||||
|  |   - JDK-8345357: test/jdk/javax/swing/JRadioButton/8033699/bug8033699.java fails in ubuntu22.04 | ||||||
|  |   - JDK-8345598: Upgrade NSS binaries for interop tests | ||||||
|  |   - JDK-8345728: [Accessibility,macOS,Screen Magnifier]: JCheckbox unchecked state does not magnify but works for checked state | ||||||
|  |   - JDK-8346049: jdk/test/lib/security/timestamp/TsaServer.java warnings | ||||||
|  |   - JDK-8346082: Output JVMTI agent information in hserr files | ||||||
|  |   - JDK-8346264: "Total compile time" counter should include time spent in failing/bailout compiles | ||||||
|  |   - JDK-8346581: JRadioButton/ButtonGroupFocusTest.java fails in CI on Linux | ||||||
|  |   - JDK-8346888: [ubsan] block.cpp:1617:30: runtime error: 9.97582e+36 is outside the range of representable values of type 'int' | ||||||
|  |   - JDK-8347126: gc/stress/TestStressG1Uncommit.java gets OOM-killed | ||||||
|  |   - JDK-8347173: java/net/DatagramSocket/InterruptibleDatagramSocket.java fails with virtual thread factory | ||||||
|  |   - JDK-8347286: (fs) Remove some extensions from java/nio/file/Files/probeContentType/Basic.java | ||||||
|  |   - JDK-8347373: HTTP/2 flow control checks may count unprocessed data twice | ||||||
|  |   - JDK-8347506: Compatible OCSP readtimeout property with OCSP timeout | ||||||
|  |   - JDK-8347596: Update HSS/LMS public key encoding | ||||||
|  |   - JDK-8347629: Test FailOverDirectExecutionControlTest.java fails with -Xcomp | ||||||
|  |   - JDK-8347995: Race condition in jdk/java/net/httpclient/offline/FixedResponseHttpClient.java | ||||||
|  |   - JDK-8348107: test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java fails intermittently | ||||||
|  |   - JDK-8348110: Update LCMS to 2.17 | ||||||
|  |   - JDK-8348299: Update List/ItemEventTest/ItemEventTest.java | ||||||
|  |   - JDK-8348323: Corrupted timezone string in JVM crash log | ||||||
|  |   - JDK-8348596: Update FreeType to 2.13.3 | ||||||
|  |   - JDK-8348597: Update HarfBuzz to 10.4.0 | ||||||
|  |   - JDK-8348598: Update Libpng to 1.6.47 | ||||||
|  |   - JDK-8348600: Update PipeWire to 1.3.81 | ||||||
|  |   - JDK-8348936: [Accessibility,macOS,VoiceOver] VoiceOver doesn't announce untick on toggling the checkbox with "space" key on macOS | ||||||
|  |   - JDK-8349200: [JMH] time.format.ZonedDateTimeFormatterBenchmark fails | ||||||
|  |   - JDK-8349348: Refactor ClassLoaderDeadlock.sh and Deadlock.sh to run fully in java | ||||||
|  |   - JDK-8349358: [JMH] Cannot access class jdk.internal.vm.ContinuationScope | ||||||
|  |   - JDK-8349623: [ASAN] Gtest os_linux.glibc_mallinfo_wrapper_vm fails | ||||||
|  |   - JDK-8349637: Integer.numberOfLeadingZeros outputs incorrectly in certain cases | ||||||
|  |   - JDK-8349751: AIX build failure after upgrade pipewire to 1.3.81 | ||||||
|  |   - JDK-8350201: Out of bounds access on Linux aarch64 in os::print_register_info | ||||||
|  |   - JDK-8350211: CTW: Attempt to preload all classes in constant pool | ||||||
|  |   - JDK-8350224: Test javax/swing/JComboBox/TestComboBoxComponentRendering.java fails in ubuntu 23.x and later | ||||||
|  |   - JDK-8350260: Improve HTML instruction formatting in PassFailJFrame | ||||||
|  |   - JDK-8350313: Include timings for leaving safepoint in safepoint logging | ||||||
|  |   - JDK-8350386: Test TestCodeCacheFull.java fails with option -XX:-UseCodeCacheFlushing | ||||||
|  |   - JDK-8350412: [21u] AArch64: Ambiguous frame layout leads to incorrect traces in JFR | ||||||
|  |   - JDK-8350483: AArch64: turn on signum intrinsics by default on Ampere CPUs | ||||||
|  |   - JDK-8350546: Several java/net/InetAddress tests fails UnknownHostException | ||||||
|  |   - JDK-8350616: Skip ValidateHazardPtrsClosure in non-debug builds | ||||||
|  |   - JDK-8350650: Bump update version for OpenJDK: jdk-21.0.8 | ||||||
|  |   - JDK-8350682: [JMH] vector.IndexInRangeBenchmark failed with IndexOutOfBoundsException for size=1024 | ||||||
|  |   - JDK-8350786: Some java/lang jtreg tests miss requires vm.hasJFR | ||||||
|  |   - JDK-8350924: javax/swing/JMenu/4213634/bug4213634.java fails | ||||||
|  |   - JDK-8351086: (fc) Make java/nio/channels/FileChannel/BlockDeviceSize.java test manual | ||||||
|  |   - JDK-8351500: G1: NUMA migrations cause crashes in region allocation | ||||||
|  |   - JDK-8351665: Remove unused UseNUMA in os_aix.cpp | ||||||
|  |   - JDK-8351933: Inaccurate masking of TC subfield decrement in ForkJoinPool | ||||||
|  |   - JDK-8352076: [21u] Problem list tests that fail in 21 and would be fixed by 8309622 | ||||||
|  |   - JDK-8352109: java/awt/Desktop/MailTest.java fails in platforms where Action.MAIL is not supported | ||||||
|  |   - JDK-8352302: Test sun/security/tools/jarsigner/TimestampCheck.java is failing | ||||||
|  |   - JDK-8352512: TestVectorZeroCount: counter not reset between iterations | ||||||
|  |   - JDK-8352706: httpclient HeadTest does not run on HTTP2 | ||||||
|  |   - JDK-8352716: (tz) Update Timezone Data to 2025b | ||||||
|  |   - JDK-8353138: Screen capture for test TaskbarPositionTest.java, failure case | ||||||
|  |   - JDK-8353709: Debug symbols bundle should contain full debug files when building --with-external-symbols-in-bundles=public | ||||||
|  |   - JDK-8353787: Increased number of SHA-384-Digest java.util.jar.Attributes$Name instances leading to higher memory footprint | ||||||
|  |   - JDK-8354893: [REDO BACKPORT] javac crashes while adding type annotations to the return type of a constructor (JDK-8320001) | ||||||
|  | 
 | ||||||
|  | Notes on individual issues: | ||||||
|  | =========================== | ||||||
|  | 
 | ||||||
|  | tools/javac: | ||||||
|  | 
 | ||||||
|  | JDK-8341779: [REDO BACKPORT] type annotations are not visible to javac plugins across compilation boundaries (JDK-8225377) | ||||||
|  | ========================================================================================================================== | ||||||
|  | The compiler in previous releases of OpenJDK 21 would only provide | ||||||
|  | access to type annotations on types loaded from source code files.  If | ||||||
|  | the type was instead loaded from bytecode, then any type annotations | ||||||
|  | would be absent. | ||||||
|  | 
 | ||||||
|  | With this release, `TypeMirror` now provides access to annotations for | ||||||
|  | types loaded from bytecode.  These type annotations can be obtained | ||||||
|  | using `AnnotationMirror#getAnnotationMirrors` and will be included in | ||||||
|  | the output of `AnnotationMirror#toString`. | ||||||
|  | 
 | ||||||
|  | Programs that rely on type annotations being absent from elements | ||||||
|  | loaded from bytecode will need to be updated accordingly. Due to | ||||||
|  | ongoing issues with this new feature (see JDK-8360406), it is not | ||||||
|  | enabled by default and the option `-XDaddTypeAnnotationsToSymbol=true` | ||||||
|  | must be specified in order for bytecode type annotations to be | ||||||
|  | included. | ||||||
|  | 
 | ||||||
|  | core-libs/java.net: | ||||||
|  | 
 | ||||||
|  | JDK-8342075: HttpClient: improve HTTP/2 flow control checks | ||||||
|  | =========================================================== | ||||||
|  | This release of OpenJDK 21 enhances the HTTP/2 client implementation | ||||||
|  | in `java.net.http.HttpClient` to report flow control errors back to | ||||||
|  | the server. While this should be transparent in most cases, it may | ||||||
|  | lead to streams being reset or connections being closed if connecting | ||||||
|  | to a HTTP/2 server that does not correctly handle these errors. | ||||||
|  | 
 | ||||||
|  | Flow control limits can be adjusted using the following existing | ||||||
|  | properties: | ||||||
|  | 
 | ||||||
|  | * `jdk.httpclient.connectionWindowSize` | ||||||
|  |   - Specifies the HTTP/2 client connection window size in bytes. | ||||||
|  |   - Default value: `2^26` | ||||||
|  |   - Range: `2^16-1` to `2^31-1`. | ||||||
|  | 
 | ||||||
|  | * `jdk.httpclient.windowSize` | ||||||
|  |   - Specifies the HTTP/2 client stream window size in bytes. | ||||||
|  |   - Default value: `16777216` (16MB) | ||||||
|  |   - Range: `2^14` to `2^31-1` | ||||||
|  | 
 | ||||||
|  | Specifying an invalid value leads to the default value being used. | ||||||
|  | The implementation guarantees that the actual value used for the | ||||||
|  | connection window size will be no smaller than the stream window size. | ||||||
|  | 
 | ||||||
|  | hotspot/runtime: | ||||||
|  | 
 | ||||||
|  | JDK-8318636: Add jcmd to print annotated process memory map | ||||||
|  | =========================================================== | ||||||
|  | Two new diagnostic commands have been added to `jcmd`, which print the | ||||||
|  | virtual memory map of the JVM either to standard output or a file.  If | ||||||
|  | Native Memory Tracking (NMT) is enabled, NMT information about the | ||||||
|  | virtual memory segments will be included. | ||||||
|  | 
 | ||||||
|  | The new commands are: | ||||||
|  | 
 | ||||||
|  | * `jcmd <pid> System.map` -- prints the virtual memory map of the JVM | ||||||
|  | identified by `<pid>` to the standard output. | ||||||
|  | 
 | ||||||
|  | * `jcmd <pid> System.dump_map` -- prints the virtual memory map of the | ||||||
|  | JVM identified by `<pid>` to a file `vm_memory_map_<pid>.txt` in the | ||||||
|  | current directory. | ||||||
|  | 
 | ||||||
|  | security-libs/java.security: | ||||||
|  | 
 | ||||||
|  | JDK-8303770: Remove Baltimore root certificate expiring in May 2025 | ||||||
|  | =================================================================== | ||||||
|  | The following root certificate from Baltimore has been removed from | ||||||
|  | the `cacerts` keystore: | ||||||
|  | 
 | ||||||
|  | Alias Name: baltimorecybertrustca [jdk] | ||||||
|  | Distinguished Name: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE | ||||||
|  | 
 | ||||||
|  | JDK-8347506: Compatible OCSP readtimeout property with OCSP timeout | ||||||
|  | =================================================================== | ||||||
|  | The initial release of OpenJDK 21 introduced the | ||||||
|  | `com.sun.security.ocsp.readtimeout` property, which was paired with | ||||||
|  | the existing `com.sun.security.ocsp.timeout` to give greater control | ||||||
|  | over the timeouts for OCSP connections and certificate retrieval. The | ||||||
|  | existence of two separate properties allows the timeout for reading | ||||||
|  | data to be set separately from the timeout for the transport layer. | ||||||
|  | 
 | ||||||
|  | When `com.sun.security.ocsp.readtimeout` was backported to OpenJDK | ||||||
|  | 17.0.15, the default value of `com.sun.security.ocsp.readtimeout` was | ||||||
|  | changed from 15 seconds to the value of | ||||||
|  | `com.sun.security.ocsp.timeout`, which itself has a default of 15 | ||||||
|  | seconds.  This change is brought forward to OpenJDK 21 with this | ||||||
|  | release. | ||||||
|  | 
 | ||||||
|  | If neither property is set, both will default to 15 seconds as in | ||||||
|  | previous OpenJDK 21 releases.  If only `com.sun.security.ocsp.timeout` | ||||||
|  | is set, `com.sun.security.ocsp.readtimeout` will use the same value | ||||||
|  | which retains the behaviour from before the | ||||||
|  | `com.sun.security.ocsp.readtimeout` property was introduced. | ||||||
|  | 
 | ||||||
|  | JDK-8347596: Update HSS/LMS public key encoding | ||||||
|  | =============================================== | ||||||
|  | The X.509 encoding format for HSS/LMS public keys has been updated to | ||||||
|  | align with the latest standard outlined in RFC 9708 [0].  Notably, the | ||||||
|  | OCTET_STRING wrapping around the public key value has been removed. | ||||||
|  | For compatibility, the JDK will still detect the presence of DER | ||||||
|  | encoding when reading keys encoded by earlier releases. | ||||||
|  | 
 | ||||||
|  | [0] https://www.rfc-editor.org/rfc/rfc9708.html#name-hss-lms-public-key-identifi | ||||||
|  | 
 | ||||||
| New in release OpenJDK 21.0.7 (2025-04-15): | New in release OpenJDK 21.0.7 (2025-04-15): | ||||||
| =========================================== | =========================================== | ||||||
| Live versions of these release notes can be found at: | Live versions of these release notes can be found at: | ||||||
|  | |||||||
| @ -308,7 +308,7 @@ | |||||||
| # New Version-String scheme-style defines | # New Version-String scheme-style defines | ||||||
| %global featurever 21 | %global featurever 21 | ||||||
| %global interimver 0 | %global interimver 0 | ||||||
| %global updatever 7 | %global updatever 8 | ||||||
| %global patchver 0 | %global patchver 0 | ||||||
| # We don't add any LTS designator for STS packages (Fedora and EPEL). | # We don't add any LTS designator for STS packages (Fedora and EPEL). | ||||||
| # We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined. | # We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined. | ||||||
| @ -365,10 +365,10 @@ | |||||||
| %global origin_nice     OpenJDK | %global origin_nice     OpenJDK | ||||||
| %global top_level_dir_name   %{vcstag} | %global top_level_dir_name   %{vcstag} | ||||||
| %global top_level_dir_name_backup %{top_level_dir_name}-backup | %global top_level_dir_name_backup %{top_level_dir_name}-backup | ||||||
| %global buildver        6 | %global buildver        1 | ||||||
| %global rpmrelease      2 | %global rpmrelease      1 | ||||||
| # Settings used by the portable build | # Settings used by the portable build | ||||||
| %global portablerelease 2 | %global portablerelease 1 | ||||||
| # Portable suffix differs between RHEL and CentOS | # Portable suffix differs between RHEL and CentOS | ||||||
| %if 0%{?centos} == 0 | %if 0%{?centos} == 0 | ||||||
| %global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} | %global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} | ||||||
| @ -394,7 +394,7 @@ | |||||||
| # Release will be (where N is usually a number starting at 1): | # Release will be (where N is usually a number starting at 1): | ||||||
| # - 0.N%%{?extraver}%%{?dist} for EA releases, | # - 0.N%%{?extraver}%%{?dist} for EA releases, | ||||||
| # - N%%{?extraver}{?dist} for GA releases | # - N%%{?extraver}{?dist} for GA releases | ||||||
| %global is_ga           1 | %global is_ga           0 | ||||||
| %if %{is_ga} | %if %{is_ga} | ||||||
| %global build_type GA | %global build_type GA | ||||||
| %global ea_designator "" | %global ea_designator "" | ||||||
| @ -1450,9 +1450,7 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch | |||||||
| # | # | ||||||
| ############################################# | ############################################# | ||||||
| 
 | 
 | ||||||
| # JDK-8351500: G1: NUMA migrations cause crashes in region allocation | # Currently empty | ||||||
| # Upstream in 21.0.8+1 |  | ||||||
| Patch2001: jdk8351500-numa_migration_crashes.patch |  | ||||||
| 
 | 
 | ||||||
| ############################################# | ############################################# | ||||||
| # | # | ||||||
| @ -1531,17 +1529,17 @@ BuildRequires: libpng-devel | |||||||
| BuildRequires: zlib-devel | BuildRequires: zlib-devel | ||||||
| %else | %else | ||||||
| # Version in src/java.desktop/share/legal/freetype.md | # Version in src/java.desktop/share/legal/freetype.md | ||||||
| Provides: bundled(freetype) = 2.13.2 | Provides: bundled(freetype) = 2.13.3 | ||||||
| # Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h | # Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h | ||||||
| Provides: bundled(giflib) = 5.2.2 | Provides: bundled(giflib) = 5.2.2 | ||||||
| # Version in src/java.desktop/share/native/libharfbuzz/hb-version.h | # Version in src/java.desktop/share/native/libharfbuzz/hb-version.h | ||||||
| Provides: bundled(harfbuzz) = 8.2.2 | Provides: bundled(harfbuzz) = 10.4.0 | ||||||
| # Version in src/java.desktop/share/native/liblcms/lcms2.h | # Version in src/java.desktop/share/native/liblcms/lcms2.h | ||||||
| Provides: bundled(lcms2) = 2.16.0 | Provides: bundled(lcms2) = 2.17.0 | ||||||
| # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h | # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h | ||||||
| Provides: bundled(libjpeg) = 6b | Provides: bundled(libjpeg) = 6b | ||||||
| # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h | # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h | ||||||
| Provides: bundled(libpng) = 1.6.43 | Provides: bundled(libpng) = 1.6.47 | ||||||
| # Version in src/java.base/share/native/libzip/zlib/zlib.h | # Version in src/java.base/share/native/libzip/zlib/zlib.h | ||||||
| Provides: bundled(zlib) = 1.3.1 | Provides: bundled(zlib) = 1.3.1 | ||||||
| %endif | %endif | ||||||
| @ -1921,8 +1919,6 @@ sh %{SOURCE12} %{top_level_dir_name} | |||||||
| pushd %{top_level_dir_name} | pushd %{top_level_dir_name} | ||||||
| # Add crypto policy and FIPS support | # Add crypto policy and FIPS support | ||||||
| %patch -P1001 -p1 | %patch -P1001 -p1 | ||||||
| # Add early JDK-8351500 |  | ||||||
| %patch -P2001 -p1 |  | ||||||
| popd # openjdk | popd # openjdk | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -2566,6 +2562,17 @@ require "copy_jdk_configs.lua" | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Wed Jul 09 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.8.0.1-0.1.ea | ||||||
|  | - Update to jdk-21.0.8+1 (EA) | ||||||
|  | - Update release notes to 21.0.8+1 | ||||||
|  | - Bump freetype version to 2.13.3 following JDK-8348596 | ||||||
|  | - Bump harfbuzz version to 10.4.0 following JDK-8348597 | ||||||
|  | - Bump lcms2 version to 2.17.0 following JDK-8348110 | ||||||
|  | - Bump libpng version to 1.6.47 following JDK-8348598 | ||||||
|  | - Switch to EA mode | ||||||
|  | - Drop JDK-8351500 local patch which is now available in 21.0.8+1 upstream | ||||||
|  | - Related: RHEL-101799 | ||||||
|  | 
 | ||||||
| * Thu May 08 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.7.0.6-2 | * Thu May 08 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.7.0.6-2 | ||||||
| - Add local version of JDK-8351500 for early interim release before 21.0.8 | - Add local version of JDK-8351500 for early interim release before 21.0.8 | ||||||
| - Sync the copy of the portable specfile with the latest update | - Sync the copy of the portable specfile with the latest update | ||||||
|  | |||||||
| @ -1,274 +0,0 @@ | |||||||
| commit c5c0ac6140ec5241d949bc66f54469bfa516c60c |  | ||||||
| Author: Thomas Stuefe <stuefe@openjdk.org> |  | ||||||
| Date:   Thu Mar 27 17:37:44 2025 +0000 |  | ||||||
| 
 |  | ||||||
|     8351500: G1: NUMA migrations cause crashes in region allocation |  | ||||||
|      |  | ||||||
|     Reviewed-by: sjohanss |  | ||||||
|     Backport-of: 37ec796255ae857588a5c7e0d572407dd81cbec9 |  | ||||||
| 
 |  | ||||||
| diff --git a/src/hotspot/share/gc/g1/g1Allocator.cpp b/src/hotspot/share/gc/g1/g1Allocator.cpp
 |  | ||||||
| index 5b33e24de75..23c7ee839d8 100644
 |  | ||||||
| --- a/src/hotspot/share/gc/g1/g1Allocator.cpp
 |  | ||||||
| +++ b/src/hotspot/share/gc/g1/g1Allocator.cpp
 |  | ||||||
| @@ -212,10 +212,10 @@ size_t G1Allocator::used_in_alloc_regions() {
 |  | ||||||
|   |  | ||||||
|   |  | ||||||
|  HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, |  | ||||||
| -                                              size_t word_size,
 |  | ||||||
| -                                              uint node_index) {
 |  | ||||||
| +                                              uint node_index,
 |  | ||||||
| +                                              size_t word_size) {
 |  | ||||||
|    size_t temp = 0; |  | ||||||
| -  HeapWord* result = par_allocate_during_gc(dest, word_size, word_size, &temp, node_index);
 |  | ||||||
| +  HeapWord* result = par_allocate_during_gc(dest, node_index, word_size, word_size, &temp);
 |  | ||||||
|    assert(result == nullptr || temp == word_size, |  | ||||||
|           "Requested " SIZE_FORMAT " words, but got " SIZE_FORMAT " at " PTR_FORMAT, |  | ||||||
|           word_size, temp, p2i(result)); |  | ||||||
| @@ -223,13 +223,13 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
 |  | ||||||
|  } |  | ||||||
|   |  | ||||||
|  HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, |  | ||||||
| +                                              uint node_index,
 |  | ||||||
|                                                size_t min_word_size, |  | ||||||
|                                                size_t desired_word_size, |  | ||||||
| -                                              size_t* actual_word_size,
 |  | ||||||
| -                                              uint node_index) {
 |  | ||||||
| +                                              size_t* actual_word_size) {
 |  | ||||||
|    switch (dest.type()) { |  | ||||||
|      case G1HeapRegionAttr::Young: |  | ||||||
| -      return survivor_attempt_allocation(min_word_size, desired_word_size, actual_word_size, node_index);
 |  | ||||||
| +      return survivor_attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size);
 |  | ||||||
|      case G1HeapRegionAttr::Old: |  | ||||||
|        return old_attempt_allocation(min_word_size, desired_word_size, actual_word_size); |  | ||||||
|      default: |  | ||||||
| @@ -238,10 +238,10 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
 |  | ||||||
|    } |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -HeapWord* G1Allocator::survivor_attempt_allocation(size_t min_word_size,
 |  | ||||||
| +HeapWord* G1Allocator::survivor_attempt_allocation(uint node_index,
 |  | ||||||
| +                                                   size_t min_word_size,
 |  | ||||||
|                                                     size_t desired_word_size, |  | ||||||
| -                                                   size_t* actual_word_size,
 |  | ||||||
| -                                                   uint node_index) {
 |  | ||||||
| +                                                   size_t* actual_word_size) {
 |  | ||||||
|    assert(!_g1h->is_humongous(desired_word_size), |  | ||||||
|           "we should not be seeing humongous-size allocations in this path"); |  | ||||||
|   |  | ||||||
| @@ -396,10 +396,10 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest,
 |  | ||||||
|   |  | ||||||
|      size_t actual_plab_size = 0; |  | ||||||
|      HeapWord* buf = _allocator->par_allocate_during_gc(dest, |  | ||||||
| +                                                       node_index,
 |  | ||||||
|                                                         required_in_plab, |  | ||||||
|                                                         plab_word_size, |  | ||||||
| -                                                       &actual_plab_size,
 |  | ||||||
| -                                                       node_index);
 |  | ||||||
| +                                                       &actual_plab_size);
 |  | ||||||
|   |  | ||||||
|      assert(buf == nullptr || ((actual_plab_size >= required_in_plab) && (actual_plab_size <= plab_word_size)), |  | ||||||
|             "Requested at minimum %zu, desired %zu words, but got %zu at " PTR_FORMAT, |  | ||||||
| @@ -418,7 +418,7 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest,
 |  | ||||||
|      *plab_refill_failed = true; |  | ||||||
|    } |  | ||||||
|    // Try direct allocation. |  | ||||||
| -  HeapWord* result = _allocator->par_allocate_during_gc(dest, word_sz, node_index);
 |  | ||||||
| +  HeapWord* result = _allocator->par_allocate_during_gc(dest, node_index, word_sz);
 |  | ||||||
|    if (result != nullptr) { |  | ||||||
|      plab_data->_direct_allocated += word_sz; |  | ||||||
|      plab_data->_num_direct_allocations++; |  | ||||||
| diff --git a/src/hotspot/share/gc/g1/g1Allocator.hpp b/src/hotspot/share/gc/g1/g1Allocator.hpp
 |  | ||||||
| index 32f37778a18..b2828d64d87 100644
 |  | ||||||
| --- a/src/hotspot/share/gc/g1/g1Allocator.hpp
 |  | ||||||
| +++ b/src/hotspot/share/gc/g1/g1Allocator.hpp
 |  | ||||||
| @@ -78,19 +78,16 @@ class G1Allocator : public CHeapObj<mtGC> {
 |  | ||||||
|    inline OldGCAllocRegion* old_gc_alloc_region(); |  | ||||||
|   |  | ||||||
|    // Allocation attempt during GC for a survivor object / PLAB. |  | ||||||
| -  HeapWord* survivor_attempt_allocation(size_t min_word_size,
 |  | ||||||
| +  HeapWord* survivor_attempt_allocation(uint node_index,
 |  | ||||||
| +                                        size_t min_word_size,
 |  | ||||||
|                                          size_t desired_word_size, |  | ||||||
| -                                        size_t* actual_word_size,
 |  | ||||||
| -                                        uint node_index);
 |  | ||||||
| +                                        size_t* actual_word_size);
 |  | ||||||
|   |  | ||||||
|    // Allocation attempt during GC for an old object / PLAB. |  | ||||||
|    HeapWord* old_attempt_allocation(size_t min_word_size, |  | ||||||
|                                     size_t desired_word_size, |  | ||||||
|                                     size_t* actual_word_size); |  | ||||||
|   |  | ||||||
| -  // Node index of current thread.
 |  | ||||||
| -  inline uint current_node_index() const;
 |  | ||||||
| -
 |  | ||||||
|  public: |  | ||||||
|    G1Allocator(G1CollectedHeap* heap); |  | ||||||
|    ~G1Allocator(); |  | ||||||
| @@ -110,18 +107,22 @@ class G1Allocator : public CHeapObj<mtGC> {
 |  | ||||||
|    void abandon_gc_alloc_regions(); |  | ||||||
|    bool is_retained_old_region(HeapRegion* hr); |  | ||||||
|   |  | ||||||
| +  // Node index of current thread.
 |  | ||||||
| +  inline uint current_node_index() const;
 |  | ||||||
| +
 |  | ||||||
|    // Allocate blocks of memory during mutator time. |  | ||||||
|   |  | ||||||
|    // Attempt allocation in the current alloc region. |  | ||||||
| -  inline HeapWord* attempt_allocation(size_t min_word_size,
 |  | ||||||
| +  inline HeapWord* attempt_allocation(uint node_index,
 |  | ||||||
| +                                      size_t min_word_size,
 |  | ||||||
|                                        size_t desired_word_size, |  | ||||||
|                                        size_t* actual_word_size); |  | ||||||
|   |  | ||||||
|    // This is to be called when holding an appropriate lock. It first tries in the |  | ||||||
|    // current allocation region, and then attempts an allocation using a new region. |  | ||||||
| -  inline HeapWord* attempt_allocation_locked(size_t word_size);
 |  | ||||||
| +  inline HeapWord* attempt_allocation_locked(uint node_index, size_t word_size);
 |  | ||||||
|   |  | ||||||
| -  inline HeapWord* attempt_allocation_force(size_t word_size);
 |  | ||||||
| +  inline HeapWord* attempt_allocation_force(uint node_index, size_t word_size);
 |  | ||||||
|   |  | ||||||
|    size_t unsafe_max_tlab_alloc(); |  | ||||||
|    size_t used_in_alloc_regions(); |  | ||||||
| @@ -131,14 +132,15 @@ class G1Allocator : public CHeapObj<mtGC> {
 |  | ||||||
|    // heap, and then allocate a block of the given size. The block |  | ||||||
|    // may not be a humongous - it must fit into a single heap region. |  | ||||||
|    HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, |  | ||||||
| -                                   size_t word_size,
 |  | ||||||
| -                                   uint node_index);
 |  | ||||||
| +                                   uint node_index,
 |  | ||||||
| +                                   size_t word_size
 |  | ||||||
| +                                   );
 |  | ||||||
|   |  | ||||||
|    HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, |  | ||||||
| +                                   uint node_index,
 |  | ||||||
|                                     size_t min_word_size, |  | ||||||
|                                     size_t desired_word_size, |  | ||||||
| -                                   size_t* actual_word_size,
 |  | ||||||
| -                                   uint node_index);
 |  | ||||||
| +                                   size_t* actual_word_size);
 |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  // Manages the PLABs used during garbage collection. Interface for allocation from PLABs. |  | ||||||
| diff --git a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
 |  | ||||||
| index 13ae9b9bbbd..7e516b48faa 100644
 |  | ||||||
| --- a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
 |  | ||||||
| +++ b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
 |  | ||||||
| @@ -49,11 +49,10 @@ inline OldGCAllocRegion* G1Allocator::old_gc_alloc_region() {
 |  | ||||||
|    return &_old_gc_alloc_region; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size,
 |  | ||||||
| +inline HeapWord* G1Allocator::attempt_allocation(uint node_index,
 |  | ||||||
| +                                                 size_t min_word_size,
 |  | ||||||
|                                                   size_t desired_word_size, |  | ||||||
|                                                   size_t* actual_word_size) { |  | ||||||
| -  uint node_index = current_node_index();
 |  | ||||||
| -
 |  | ||||||
|    HeapWord* result = mutator_alloc_region(node_index)->attempt_retained_allocation(min_word_size, desired_word_size, actual_word_size); |  | ||||||
|    if (result != nullptr) { |  | ||||||
|      return result; |  | ||||||
| @@ -62,8 +61,7 @@ inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size,
 |  | ||||||
|    return mutator_alloc_region(node_index)->attempt_allocation(min_word_size, desired_word_size, actual_word_size); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) {
 |  | ||||||
| -  uint node_index = current_node_index();
 |  | ||||||
| +inline HeapWord* G1Allocator::attempt_allocation_locked(uint node_index, size_t word_size) {
 |  | ||||||
|    HeapWord* result = mutator_alloc_region(node_index)->attempt_allocation_locked(word_size); |  | ||||||
|   |  | ||||||
|    assert(result != nullptr || mutator_alloc_region(node_index)->get() == nullptr, |  | ||||||
| @@ -71,8 +69,7 @@ inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) {
 |  | ||||||
|    return result; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -inline HeapWord* G1Allocator::attempt_allocation_force(size_t word_size) {
 |  | ||||||
| -  uint node_index = current_node_index();
 |  | ||||||
| +inline HeapWord* G1Allocator::attempt_allocation_force(uint node_index, size_t word_size) {
 |  | ||||||
|    return mutator_alloc_region(node_index)->attempt_allocation_force(word_size); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
 |  | ||||||
| index 9b6b22a29e7..a43e45c4afa 100644
 |  | ||||||
| --- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
 |  | ||||||
| +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
 |  | ||||||
| @@ -401,7 +401,7 @@ G1CollectedHeap::mem_allocate(size_t word_size,
 |  | ||||||
|    return attempt_allocation(word_size, word_size, &dummy); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| -HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
 |  | ||||||
| +HeapWord* G1CollectedHeap::attempt_allocation_slow(uint node_index, size_t word_size) {
 |  | ||||||
|    ResourceMark rm; // For retrieving the thread names in log messages. |  | ||||||
|   |  | ||||||
|    // Make sure you read the note in attempt_allocation_humongous(). |  | ||||||
| @@ -427,7 +427,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
 |  | ||||||
|   |  | ||||||
|        // Now that we have the lock, we first retry the allocation in case another |  | ||||||
|        // thread changed the region while we were waiting to acquire the lock. |  | ||||||
| -      result = _allocator->attempt_allocation_locked(word_size);
 |  | ||||||
| +      result = _allocator->attempt_allocation_locked(node_index, word_size);
 |  | ||||||
|        if (result != nullptr) { |  | ||||||
|          return result; |  | ||||||
|        } |  | ||||||
| @@ -438,7 +438,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
 |  | ||||||
|        if (GCLocker::is_active_and_needs_gc() && policy()->can_expand_young_list()) { |  | ||||||
|          // No need for an ergo message here, can_expand_young_list() does this when |  | ||||||
|          // it returns true. |  | ||||||
| -        result = _allocator->attempt_allocation_force(word_size);
 |  | ||||||
| +        result = _allocator->attempt_allocation_force(node_index, word_size);
 |  | ||||||
|          if (result != nullptr) { |  | ||||||
|            return result; |  | ||||||
|          } |  | ||||||
| @@ -495,7 +495,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
 |  | ||||||
|      // follow-on attempt will be at the start of the next loop |  | ||||||
|      // iteration (after taking the Heap_lock). |  | ||||||
|      size_t dummy = 0; |  | ||||||
| -    result = _allocator->attempt_allocation(word_size, word_size, &dummy);
 |  | ||||||
| +    result = _allocator->attempt_allocation(node_index, word_size, word_size, &dummy);
 |  | ||||||
|      if (result != nullptr) { |  | ||||||
|        return result; |  | ||||||
|      } |  | ||||||
| @@ -636,11 +636,14 @@ inline HeapWord* G1CollectedHeap::attempt_allocation(size_t min_word_size,
 |  | ||||||
|    assert(!is_humongous(desired_word_size), "attempt_allocation() should not " |  | ||||||
|           "be called for humongous allocation requests"); |  | ||||||
|   |  | ||||||
| -  HeapWord* result = _allocator->attempt_allocation(min_word_size, desired_word_size, actual_word_size);
 |  | ||||||
| +  // Fix NUMA node association for the duration of this allocation
 |  | ||||||
| +  const uint node_index = _allocator->current_node_index();
 |  | ||||||
| +
 |  | ||||||
| +  HeapWord* result = _allocator->attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size);
 |  | ||||||
|   |  | ||||||
|    if (result == nullptr) { |  | ||||||
|      *actual_word_size = desired_word_size; |  | ||||||
| -    result = attempt_allocation_slow(desired_word_size);
 |  | ||||||
| +    result = attempt_allocation_slow(node_index, desired_word_size);
 |  | ||||||
|    } |  | ||||||
|   |  | ||||||
|    assert_heap_not_locked(); |  | ||||||
| @@ -778,8 +781,11 @@ HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size,
 |  | ||||||
|    assert(!_allocator->has_mutator_alloc_region() || !expect_null_mutator_alloc_region, |  | ||||||
|           "the current alloc region was unexpectedly found to be non-null"); |  | ||||||
|   |  | ||||||
| +  // Fix NUMA node association for the duration of this allocation
 |  | ||||||
| +  const uint node_index = _allocator->current_node_index();
 |  | ||||||
| +
 |  | ||||||
|    if (!is_humongous(word_size)) { |  | ||||||
| -    return _allocator->attempt_allocation_locked(word_size);
 |  | ||||||
| +    return _allocator->attempt_allocation_locked(node_index, word_size);
 |  | ||||||
|    } else { |  | ||||||
|      HeapWord* result = humongous_obj_allocate(word_size); |  | ||||||
|      if (result != nullptr && policy()->need_to_start_conc_mark("STW humongous allocation")) { |  | ||||||
| diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
 |  | ||||||
| index 88f4f680800..6afaeb6e6d4 100644
 |  | ||||||
| --- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
 |  | ||||||
| +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
 |  | ||||||
| @@ -453,7 +453,7 @@ class G1CollectedHeap : public CollectedHeap {
 |  | ||||||
|    // Second-level mutator allocation attempt: take the Heap_lock and |  | ||||||
|    // retry the allocation attempt, potentially scheduling a GC |  | ||||||
|    // pause. This should only be used for non-humongous allocations. |  | ||||||
| -  HeapWord* attempt_allocation_slow(size_t word_size);
 |  | ||||||
| +  HeapWord* attempt_allocation_slow(uint node_index, size_t word_size);
 |  | ||||||
|   |  | ||||||
|    // Takes the Heap_lock and attempts a humongous allocation. It can |  | ||||||
|    // potentially schedule a GC pause. |  | ||||||
							
								
								
									
										2
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sources
									
									
									
									
									
								
							| @ -1,2 +1,2 @@ | |||||||
| SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 | SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 | ||||||
| SHA512 (openjdk-21.0.7+6.tar.xz) = 4ccbad22a7284fc8a38f78585dbc9e2b632c634f0a496d0f41bc5a0ec35ef1f2ca75b2aad135c299e9ebb04c8bd73b905f6c57ae041bd39d4474ecbda3656c97 | SHA512 (openjdk-21.0.8+1-ea.tar.xz) = 52dec88fa4ddf746ef64d014e14b0a96b2fdd1b7ced650d735d5919a4e16c6fb6d69721c90a1791210539c1506cc523b562eda77ada52a45e370820fb0aea467 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user