88579 Commits

Author SHA1 Message Date
Ehsan Behrangi
0f585e352a 8381560: Relax cnt and result register constraints for SVE String.equals 2026-06-08 11:33:28 +00:00
Ehsan Behrangi
00cc9be854 8381560: AArch64: Optimize String.equals intrinsic
This change improves the AArch64 implementation of String.equals by
introducing SIMD-based fast paths using SVE and NEON.

SVE implementation:
- Uses predicated loads and comparisons for short lengths (len < VL)
- Uses a full predicated loop for longer inputs
- Handles the tail via an overlapped compare at (base + len - VL)

NEON implementation:
- Uses an 8-byte pre-read to simplify tail handling and eliminate
  4/2/1-byte scalar branches
- Processes 16-byte chunks using LDP pair loads
- Uses CMP/CCMP to collapse comparisons into a single branch on mismatch

These changes reduce branch pressure and improve throughput for both
short and long strings.

Correctness:
- The implementation preserves existing semantics and matches behavior
  for all lengths

Testing:
- Updated and extended intrinsic tests to cover boundary conditions
  and mismatch positions

Benchmark:
Across evaluated macrobenchmarks (DaCapo and Renaissance), most workloads
spend <0.5% of CPU time in String.equals. DaCapo biojava is a notable
exception (~8–9%). In biojava, most String.equals calls are on very short
strings (1–2 bytes), where SVE shows ~1% end-to-end improvement, while
NEON is largely neutral or shows a small regression (~1%).

Measured using JMH on AArch64 (Arm Neoverse V2 CPU).
Values are relative (%) vs baseline. Negative values indicate regressions.
Mismatch results are reported across first(DF), middle(DM),
and last(DL) difference positions.

SVE results:
Length | L1_EQ  L1_DF  L1_DM  L1_DL | U16_EQ U16_DF U16_DM U16_DL | Avg
-------+----------------------------+-----------------------------+------
0      | 19.63                      | 20.05                      | 19.84
1      | 16.59  17.81  16.57  18.34 | 16.02   0.71   0.42   1.39 | 10.98
2      | 16.44   1.32   0.30  -0.16 | 15.90  -5.17  -4.55  -1.09 |  2.87
3      | 26.58   1.60   1.43  27.07 | 30.34  -8.86  -7.06  14.08 | 10.65
7      | 41.47  -2.94  -3.37  39.82 | 24.02  -8.82  -6.27  20.48 | 13.05
8      | 19.08  -1.16  -3.50  -0.90 | 22.49  -9.75  17.50  13.13 |  7.11
9      | 20.17  -4.12  -5.17  19.03 |  9.25  -2.24  21.35   3.39 |  7.71
15     | 19.48  -3.83  -4.50  19.01 | 29.26 -10.06  11.76  17.07 |  9.77
16     | 19.04  -3.15  16.41  16.85 | 38.37 -11.12  13.18  27.70 | 14.66
17     |  8.95  -2.40   5.68   6.38 | 16.32  -1.61   7.49  11.44 |  6.53
31     | 28.87  -0.01  19.79  23.37 | 41.43  -7.57  23.85  35.89 | 20.70
32     | 32.58   3.38  12.39  26.90 | 46.01 -10.99  20.53  44.15 | 21.87
33     | 11.62 -15.20   6.04  13.27 | 32.27  -9.38  20.33  32.28 | 11.40
63     | 44.66 -11.59  37.20  42.56 | 55.41 -10.57  43.19  55.90 | 32.10
64     | 53.99  -2.19  27.04  51.79 | 59.36  -8.72  35.41  60.32 | 34.63
65     | 33.79 -14.01  23.95  29.15 | 48.91 -11.58  36.54  50.03 | 24.60
127    | 62.10  -3.79  47.51  62.79 | 58.13  -8.89  60.68  60.90 | 42.43
128    | 67.38  -2.47  38.62  67.09 | 62.83  -0.38  51.72  61.87 | 43.33
129    | 52.02  -1.42  39.17  49.20 | 55.04  -9.52  53.23  52.81 | 36.32
256    | 66.11  -1.38  56.12  64.93 | 70.67  -3.68  53.67  74.54 | 47.62

Average:
         33.03  -2.40  17.46  30.34 | 37.60  -7.27  23.84  33.49 | 20.91

NEON results:
Length | L1_EQ  L1_DF  L1_DM  L1_DL | U16_EQ U16_DF U16_DM U16_DL | Avg
-------+----------------------------+-----------------------------+------
0      |  9.22                      |  8.69                      |  8.95
1      |  3.07   3.59   1.34   5.42 |  6.36  -6.20  -6.71 -10.59 | -0.47
2      |  3.23  -4.79  -5.67  -4.09 |  8.06  -8.43  -9.89  -9.20 | -3.85
3      | 12.80  -4.16  -3.95  11.28 | 11.94 -14.50 -14.41  11.83 |  1.36
7      | 31.00  -7.21 -12.76  33.59 |  4.73 -17.67 -17.38   1.65 |  1.99
8      |  4.43  -7.20  -4.70  -6.73 |  2.71 -18.05  -3.17  -4.05 | -4.59
9      | -9.33 -19.90 -16.27  -1.80 | 16.65 -23.72   4.26   8.78 | -5.17
15     | -6.96 -16.17 -15.60  -4.01 |  7.46 -24.60  -3.19  77.82 |  1.84
16     |  2.48 -16.38  -2.56  -3.62 |  9.08 -19.29  -5.45  77.93 |  5.27
17     |  4.88 -18.85  -0.18  19.35 | 18.43 -19.80  -8.37  84.96 | 10.05
31     |  6.92 -21.13  -4.62  60.71 | 24.42 -21.81   9.48 188.59 | 30.32
32     |  7.75 -24.20  -5.29  68.23 | 25.33 -20.57   4.17 183.65 | 29.88
33     | 20.23 -20.42 -11.33  98.60 | 23.76 -24.76   5.97 188.57 | 35.08
63     | 30.25 -22.30  14.29 152.37 | 25.02 -28.37  21.43 419.68 | 76.55
64     | 28.99 -22.91   9.03 185.51 | 38.20 -22.82  19.76 446.60 | 85.29
65     | 16.13 -21.77   1.45 211.38 | 27.94 -24.79  17.50 446.80 | 84.33
127    | 33.69 -28.94  28.75 429.23 | 41.75 -24.86  37.35 832.68 |168.71
128    | 26.28 -29.03  24.13 432.87 | 43.48 -18.53  26.44 810.20 |164.48
129    | 27.73 -20.30  20.84 439.01 | 44.09 -22.35  30.09 827.38 |168.31
256    | 53.30 -20.27  26.09 841.37 | 56.66 -21.07  47.41 1604.98|323.56

Average:
         15.30 -16.97   2.26 156.24 | 22.24 -20.12   8.17 325.70 | 59.10

Observations:
- SVE shows consistent improvements across all tested lengths, with gains
  increasing as input size grows
- NEON improves equal-string performance across all lengths
- NEON shows regressions for short mismatched inputs due to the loss
  of the scalar tbz-based early-exit sequence, which efficiently
  detects mismatches at small sizes and at early positions
- The scalar implementation relies on a branchy 4/2/1 tbz ladder,
  which is efficient for early mismatches but suboptimal for equal
  strings
- The NEON implementation replaces this with a branchless SIMD
  approach and performs upfront comparisons of the first and last
  8 bytes, improving throughput and late-mismatch detection
2026-06-05 12:22:15 +01:00
Thomas Schatzl
5719b671a2 8385369: G1: Concurrent Cleanup For Next Mark accesses uncommitted bitmaps after region uncommit
Reviewed-by: aboldtch, manc
2026-06-05 07:33:51 +00:00
Emanuel Peter
cc69221519 8381618: VectorExpressionFuzzer.java: enable test for all platforms
Reviewed-by: vlivanov, mhaessig
2026-06-05 05:44:21 +00:00
Xueming Shen
9229878648 8385355: NullPointerException in jdk.tools.jlink.internal.ImageResourcesTree after JDK-8377070
Co-authored-by: David Beaumont <dbeaumont@openjdk.org>
Reviewed-by: alanb
jdk-28+1
2026-06-05 00:10:44 +00:00
Archie Cobbs
55d528eb37 8385660: Audit and remove unnecessary lint categories from $DISABLED_WARNINGS
Reviewed-by: erikj, asemenyuk, prr
2026-06-04 23:07:47 +00:00
Chen Liang
5415a27ed8 8385974: Update symbol information for jdk-28+0
Reviewed-by: darcy
2026-06-04 20:43:30 +00:00
Chad Rakoczy
cf78a2a89a 8384606: HotCodeHeap tests require C2
Reviewed-by: shade, kvn
2026-06-04 19:36:30 +00:00
Phil Race
aa98d5d20b 8385100: Null pointer dereference in java.desktop/windows/classes/sun/print/Win32PrintJob.java:606 and other PrintJob implementations
Reviewed-by: psadhukhan, kizune
2026-06-04 19:09:19 +00:00
Nizar Benalla
ca52afa38e 8384833: Start of release updates for JDK 28
8384838: Add SourceVersion.RELEASE_28
8384842: Add source 28 and target 28 to javac

Reviewed-by: iris, darcy, erikj, dholmes
2026-06-04 16:06:29 +00:00
Manuel Hässig
f8f7ad28ba 8381235: TestCompileTaskTimeout intermittently fails due to unexpected exit code 1
Reviewed-by: dlong, kvn
jdk-28+0 jdk-27+25
2026-06-04 15:01:15 +00:00
Per Minborg
c4a3373faa 8385885: Clarify comment in LazyConstantImpl
Reviewed-by: vklang
2026-06-04 12:54:23 +00:00
Jan Lahoda
ee53e7569e 8381812: The synthetic $deserializeLambda$ is notably bigger
Reviewed-by: mcimadamore
2026-06-04 12:04:03 +00:00
Per Minborg
c6f9c23111 8385054: Spec: Clarify ofLazy List/Set/Map equals/hashCode/toString Javadoc
Reviewed-by: vklang
2026-06-04 08:50:52 +00:00
Per Minborg
d47d729c9b 8384648: LazyConstantTest::interruptStatusIsPreservedForComputingThread fails
Reviewed-by: jvernee
2026-06-04 07:59:21 +00:00
Manuel Hässig
8fad96dea3 8377808: compiler/c2/irTests/TestFloat16ScalarOperations.java is fragile in the presence of special constants
Reviewed-by: qamai, epeter, syan, jbhateja
2026-06-04 07:51:20 +00:00
Amit Kumar
bbb4dd8b9b 8385622: [s390x] Debugger very slow during stepping
Reviewed-by: mdoerr, sspitsyn
2026-06-04 05:07:52 +00:00
Cesar Soares Lucas
b7e26358f6 8384442: Shenandoah: Remove vestigial CAS barrier code
Reviewed-by: fyang, shade
2026-06-04 02:45:01 +00:00
Gui Cao
19146ad7ca 8385915: RISC-V: Remove unused cmpxchg* methods
Reviewed-by: fyang, dzhang
2026-06-04 01:48:51 +00:00
Daniel Gredler
7ebfc031bc 8269888: Thai text rendered incorrectly using some AffineTransform-derived fonts
Reviewed-by: prr, psadhukhan
2026-06-03 22:07:46 +00:00
Mikael Vidstedt
b328a326b1 8385552: Improve devkit/sysroot creation
Reviewed-by: erikj
2026-06-03 19:48:32 +00:00
Alexey Ivanov
24d31296e1 8372546: UnixMultiResolutionSplashTest.java fails intermittently on Ubuntu_24.04
Remove .../unix/UnixMultiResolutionSplashTest.java

Reviewed-by: syan, prr
2026-06-03 18:46:54 +00:00
Phil Race
9f83006f10 8378464: PixelInterleavedSampleModel constructors and methods do not specify behavior when arguments are null or out of bounds
Reviewed-by: kizune, psadhukhan
2026-06-03 18:32:56 +00:00
Aleksey Shipilev
fac043a97a 8385835: Shenandoah: Polish C2 pre/post barrier signatures
Reviewed-by: mdoerr, dbriemann, fyang
2026-06-03 18:29:49 +00:00
Leonid Mesnik
1b1576d055 8372442: 2 Null pointer dereference defect groups in jvmtiExport.cpp
Reviewed-by: dholmes, sspitsyn
2026-06-03 18:09:14 +00:00
Anthony Scarpino
e70e691307 8377506: Implement JEP 538: PEM Encodings of Cryptographic Objects (Third Preview)
Reviewed-by: weijun, mullan
2026-06-03 17:06:31 +00:00
Robert Toyonaga
79923019f5 8334403: Unify behavior of os::committed_in_range across OSes
Reviewed-by: stuefe, jsjolen
2026-06-03 16:05:09 +00:00
Dusan Balek
7a7f37f0e5 8385828: The javac benchmarks fail after JDK-8385347
Reviewed-by: asotona, syan
2026-06-03 15:27:07 +00:00
Ivan Walulya
85db081db4 8379846: G1: IHOP Allocation rate calculation too sensitive to outliers causing endless concurrent cycles
Co-authored-by: Thomas Schatzl <tschatzl@openjdk.org>
Reviewed-by: tschatzl, aboldtch
2026-06-03 14:04:11 +00:00
Derek White
d3483a98d4 8385831: Prevent APX instruction being generated on non-APX machines
Reviewed-by: sviswanathan, shade
2026-06-03 13:56:28 +00:00
Kerem Kat
15726f9b6c 8384182: Incorrect assertion eq4a_state in vectorization AlignmentSolver::solve
Reviewed-by: chagedorn, snatarajan
2026-06-03 13:45:26 +00:00
Per Minborg
bf14f24f76 8385013: Startup regression ~30% / 7-10ms with noop
Reviewed-by: liach
2026-06-03 12:28:18 +00:00
Thomas Schatzl
a29ef339f2 8382249: G1: Racy concurrent update of young gen size and revising young gen length
Reviewed-by: iwalulya, aboldtch
2026-06-03 10:43:10 +00:00
Nizar Benalla
2352da05ef 8385836: Update comment in SourceVersion for language evolution history for changes in 27
Reviewed-by: darcy, iris
2026-06-03 10:42:38 +00:00
David Briemann
563befb8a1 8385633: PPC64: Shenandoah weak CAS fails after late barrier expansion
Reviewed-by: mdoerr, shade
2026-06-03 10:30:43 +00:00
Aleksey Shipilev
ec1bffd9a5 8385702: Improve polymorphic handling in JDK-8385648
Reviewed-by: mdoerr, sviswanathan, fyang
2026-06-03 07:36:14 +00:00
Fredrik Bredberg
1900d661bd 8385312: Intermittent assert while running JCK test api/java_util/concurrent/Assorted/SynchronousQueue20.html
Reviewed-by: coleenp, pchilanomate
2026-06-03 07:34:19 +00:00
Vladimir Petko
2688bf7305 8385738: Javadoc does not produce reproducible output due to the snippet ids
Reviewed-by: nbenalla
2026-06-03 06:35:57 +00:00
Erik Gahlin
39de79eae2 8367584: Implement JEP 536: JFR In-Process Data Redaction
Reviewed-by: mgronlun
2026-06-03 06:33:32 +00:00
Aleksey Shipilev
8ba600d6f3 8385333: Shenandoah: Final mark spins up workers without work to do
Reviewed-by: xpeng, kdnilsen
2026-06-03 04:32:58 +00:00
Jayathirth D V
ab33d9d331 8385490: Update HarfBuzz to 14.2.0
Reviewed-by: prr, azvegint
2026-06-03 03:55:28 +00:00
Alexander Matveev
f630ab0e5f 8384250: [macos] Test tools/jpackage/share/AsyncTest.java failed
Reviewed-by: asemenyuk
2026-06-02 22:35:48 +00:00
Anthony Scarpino
43d80fd192 8329548: Change KeyUpdate messages from TLS 1.3
Reviewed-by: jnimeh
2026-06-02 21:42:24 +00:00
Naoto Sato
4192f9bf2e 8385736: Optimize ListFormat custom pattern parsing
Reviewed-by: jlu
2026-06-02 20:27:12 +00:00
Ferenc Rakoczi
6253a03af3 8383635: Improve performance of ML-KEM's implKyberNttMultJava() method
Reviewed-by: semery, weijun
2026-06-02 16:43:57 +00:00
Quan Anh Mai
1e67c84b66 8382936: C2: Load folding must not drop Type information
Reviewed-by: kvn, vlivanov
2026-06-02 15:26:28 +00:00
Roman Marchenko
c469bb2cd7 8383867: File.getCanonicalPath drops backslash from UNC path with directory junctions
Reviewed-by: alanb
2026-06-02 14:54:16 +00:00
Stefan Karlsson
cb502e7993 8385747: Test gc/g1/TestGCLogMessages.java failed: 'Update Derived Pointers' found in stdout
Reviewed-by: dholmes, tschatzl
2026-06-02 14:46:25 +00:00
Martin Doerr
e5d8e33205 8385658: Debug code in frame::patch_pc() doesn't initialize on_heap info
Reviewed-by: dlong, mbaesken
2026-06-02 13:33:09 +00:00
Martin Doerr
3efa011b96 8385648: PPC64: Improve receiver type profiling reliability
Reviewed-by: shade, dbriemann
2026-06-02 13:29:16 +00:00