From jdv at openjdk.org Mon Dec 1 05:43:58 2025 From: jdv at openjdk.org (Jayathirth D V) Date: Mon, 1 Dec 2025 05:43:58 GMT Subject: Integrated: 8372534: Update Libpng to 1.6.51 In-Reply-To: <3LLhVAk4ZEb7Jd1DtXsdSh86IO0v9ESh8Rxy2XbPK0g=.7b1ba348-7cfd-4499-8f1f-77a1056079ea@github.com> References: <3LLhVAk4ZEb7Jd1DtXsdSh86IO0v9ESh8Rxy2XbPK0g=.7b1ba348-7cfd-4499-8f1f-77a1056079ea@github.com> Message-ID: <-oMBQGb7A6HK_23xlpq31JXIlBhj1JljQ0RQxMrW9zE=.d03849f6-0b64-463c-9c1a-f49e37bcaab9@github.com> On Thu, 27 Nov 2025 01:12:48 GMT, Jayathirth D V wrote: > Upgrade libpng used for Splashscreen from 1.6.47 to 1.6.51 version. This pull request has now been integrated. Changeset: c7a489db Author: Jayathirth D V URL: https://git.openjdk.org/jdk/commit/c7a489db9e4a7d696623fc2155a5504d9d2adb0d Stats: 638 lines in 21 files changed: 297 ins; 207 del; 134 mod 8372534: Update Libpng to 1.6.51 Reviewed-by: serb, azvegint, prr ------------- PR: https://git.openjdk.org/jdk/pull/28518 From aboldtch at openjdk.org Mon Dec 1 06:55:52 2025 From: aboldtch at openjdk.org (Axel Boldt-Christmas) Date: Mon, 1 Dec 2025 06:55:52 GMT Subject: RFR: 8371346: ZGC: Flexible heap base selection [v3] In-Reply-To: References: Message-ID: > ZGC reserves a virtual address range for its heap with one high order bit set which is referred to as the heap base. Internally we then often represent heap addresses as offset from this heap base. > > Currently we select one specific heap base at the start based on MaxHeapSize and the current system properties. > > With instrumented builds, or custom launchers it may be that we are unable to reserve a usable address range using that heap base. Currently we just give up if this happens and exits the VM. > > This is problematic when using instrumented builds such as ASAN where there are certain address ranges it uses which often clash with the default ZGC heap base. > > I propose that we are more flexible when selecting the heap base, and we start as we do today at our preferred location, but are able to retry other compatible heap bases within some broader limits. > > The implementation will now start at the recommended or required heap base which ever is larger and try to first reserve the desired reservation size (normally 16 * MaxHeapSize). If no heap base can accommodate this desired size, it will attempt to find at least the required size and use that. > > On linux x86_64 we will now also probe for the heap base rather than hard coding the max heap base as we did previously. This is beneficial when there are address space restrictions (such as with ASAN), and when there are none, we only do a couple of extra system calls at most. > > There are some changes to the gc+init logging. The ZAddressOffsetMax is adjusted to always be a correct upper bound. And the exit path when reservation fails is clean up, so that we exit early when we know that the external virtual memory limits will prohibit the heap reservation. > > Performance testing show no significant differences. > > Testing: > * GHA > * Running ZGC tier1-8 on Oracle supported platforms Axel Boldt-Christmas has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 12 commits: - Merge tag 'jdk-26+26' into zgc_flexible_heap_base Added tag jdk-26+26 for changeset 847fbab7 - Small fixes - Merge remote-tracking branch 'upstream_jdk/master' into stefank_review_pr_28161 - Fixes and cleanups - pr/28161_review - Merge remote-tracking branch 'upstream/master' into pr/28161 - Initial Test Implementation - Initial implementation flexible heap base - Constrain ZAddressOffsetMax correctly when multi-partition fails - Log reserved size correctly when multi-partition fails - ... and 2 more: https://git.openjdk.org/jdk/compare/847fbab7...4603db33 ------------- Changes: https://git.openjdk.org/jdk/pull/28161/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28161&range=02 Stats: 2727 lines in 50 files changed: 1886 ins; 631 del; 210 mod Patch: https://git.openjdk.org/jdk/pull/28161.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28161/head:pull/28161 PR: https://git.openjdk.org/jdk/pull/28161 From shade at openjdk.org Mon Dec 1 08:02:34 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 1 Dec 2025 08:02:34 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 Message-ID: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. Additional testing: - [x] GHA ------------- Commit messages: - Also X11 dependencies - Also fontconfig dependency - Fix Changes: https://git.openjdk.org/jdk/pull/28555/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28555&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372733 Stats: 16 lines in 4 files changed: 7 ins; 0 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/28555.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28555/head:pull/28555 PR: https://git.openjdk.org/jdk/pull/28555 From shade at openjdk.org Mon Dec 1 08:44:06 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 1 Dec 2025 08:44:06 GMT Subject: Integrated: 8372188: AArch64: Generate atomic match rules from M4 stencils In-Reply-To: References: Message-ID: On Thu, 27 Nov 2025 14:54:06 GMT, Aleksey Shipilev wrote: > Current atomic match rules are all over the place in AArch64: > - CAE and weak CAS rules are generated with the help of `cas.m4`, and then are supposed to be copy-pasted (?) into `aarch64.ad`. I did it about 20 times when fixing [JDK-8372154](https://bugs.openjdk.org/browse/JDK-8372154), gets tedious very quickly. > - Strong CAS and get-and-set rules are still in the same section of `aarch64.ad`, and are written by hand. Yet, those can be automatically generated from M4 stencils as well. > > This PR cleans that up by moving all these rules into a separate `.ad` file, which one can cleanly re-generate by invoking `m4 aarch64_atomic_ad.m4 > aarch64_atomic.ad`. The meat of the change is `aarch64_atomic.m4`, everything else is either generated from it, or removed in favor of auto-generated code. There should be no semantic change, as I attempted to move the rules mostly verbatim, only changing non-semantic stuff like match rule names and some formats. > > Testing: > - [x] Eyeballing match rules before/after > - [x] Linux AArch64 server fastdebug, `hotspot_compiler` > - [x] Linux AArch64 server fastdebug, `tier1` > - [x] Linux AArch64 server fastdebug, `all` > - [x] Linux AArch64 server fastdebug, jcstress run This pull request has now been integrated. Changeset: 3481252c Author: Aleksey Shipilev URL: https://git.openjdk.org/jdk/commit/3481252ced7c06c44154ceccc56b12cfd9a490c3 Stats: 2349 lines in 5 files changed: 1156 ins; 1193 del; 0 mod 8372188: AArch64: Generate atomic match rules from M4 stencils Reviewed-by: aph, haosun ------------- PR: https://git.openjdk.org/jdk/pull/28538 From shade at openjdk.org Mon Dec 1 08:44:04 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 1 Dec 2025 08:44:04 GMT Subject: RFR: 8372188: AArch64: Generate atomic match rules from M4 stencils In-Reply-To: References: Message-ID: On Thu, 27 Nov 2025 14:54:06 GMT, Aleksey Shipilev wrote: > Current atomic match rules are all over the place in AArch64: > - CAE and weak CAS rules are generated with the help of `cas.m4`, and then are supposed to be copy-pasted (?) into `aarch64.ad`. I did it about 20 times when fixing [JDK-8372154](https://bugs.openjdk.org/browse/JDK-8372154), gets tedious very quickly. > - Strong CAS and get-and-set rules are still in the same section of `aarch64.ad`, and are written by hand. Yet, those can be automatically generated from M4 stencils as well. > > This PR cleans that up by moving all these rules into a separate `.ad` file, which one can cleanly re-generate by invoking `m4 aarch64_atomic_ad.m4 > aarch64_atomic.ad`. The meat of the change is `aarch64_atomic.m4`, everything else is either generated from it, or removed in favor of auto-generated code. There should be no semantic change, as I attempted to move the rules mostly verbatim, only changing non-semantic stuff like match rule names and some formats. > > Testing: > - [x] Eyeballing match rules before/after > - [x] Linux AArch64 server fastdebug, `hotspot_compiler` > - [x] Linux AArch64 server fastdebug, `tier1` > - [x] Linux AArch64 server fastdebug, `all` > - [x] Linux AArch64 server fastdebug, jcstress run Over the weekend (60+ hours) jcstress run comes clean, apart from errant `MaxVectorSize` asserts unrelated to this patch. So I am integrating. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28538#issuecomment-3595289184 From nbenalla at openjdk.org Mon Dec 1 08:53:37 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Mon, 1 Dec 2025 08:53:37 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - revert MAX_COLUMNS to 80 - Update LATEST_MAJOR_VERSION in Versions.java - Merge branch 'master' into start-of-release-27 - Merge branch 'master' into start-of-release-27 - ... and 7 more: https://git.openjdk.org/jdk/compare/41b7823d...e5214614 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/78895b2b..e5214614 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=05-06 Stats: 11187 lines in 367 files changed: 7430 ins; 1793 del; 1964 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From clanger at openjdk.org Mon Dec 1 09:02:48 2025 From: clanger at openjdk.org (Christoph Langer) Date: Mon, 1 Dec 2025 09:02:48 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v4] In-Reply-To: References: Message-ID: <3ZU647xKHADlBXnoJiI3iZAa6zEzlH28yUw2428cGa0=.e2312aa2-48a6-44a0-a5db-f3c209416463@github.com> > This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. > > The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. > > During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. > > With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. Christoph Langer has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision: - Implement new strategy - Merge branch 'master' into JDK-8351842 - Merge branch 'master' into JDK-8351842 - Merge branch 'master' into JDK-8351842 - Fix tests - JDK-8351842 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/24012/files - new: https://git.openjdk.org/jdk/pull/24012/files/e8bff098..7a409863 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=02-03 Stats: 333764 lines in 3194 files changed: 217067 ins; 72151 del; 44546 mod Patch: https://git.openjdk.org/jdk/pull/24012.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/24012/head:pull/24012 PR: https://git.openjdk.org/jdk/pull/24012 From clanger at openjdk.org Mon Dec 1 09:21:09 2025 From: clanger at openjdk.org (Christoph Langer) Date: Mon, 1 Dec 2025 09:21:09 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v5] In-Reply-To: References: Message-ID: > This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. > > The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. > > During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. > > With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. Christoph Langer has updated the pull request incrementally with one additional commit since the last revision: Revert to build of stripped pdbs ------------- Changes: - all: https://git.openjdk.org/jdk/pull/24012/files - new: https://git.openjdk.org/jdk/pull/24012/files/7a409863..96aef215 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=03-04 Stats: 5 lines in 1 file changed: 1 ins; 2 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/24012.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/24012/head:pull/24012 PR: https://git.openjdk.org/jdk/pull/24012 From clanger at openjdk.org Mon Dec 1 09:31:58 2025 From: clanger at openjdk.org (Christoph Langer) Date: Mon, 1 Dec 2025 09:31:58 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v6] In-Reply-To: References: Message-ID: <7xjbY7Wkdo7ImiFeTdjUWgYkB-7155QLLxtZ13M3-Io=.d86b647e-6335-43ea-bf1c-ccd2113e74dd@github.com> > This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. > > The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. > > During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. > > With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. Christoph Langer has updated the pull request incrementally with two additional commits since the last revision: - Cleanup comment - Fix pdb filtering for JMODs build ------------- Changes: - all: https://git.openjdk.org/jdk/pull/24012/files - new: https://git.openjdk.org/jdk/pull/24012/files/96aef215..ca92b6a1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=04-05 Stats: 9 lines in 2 files changed: 4 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/24012.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/24012/head:pull/24012 PR: https://git.openjdk.org/jdk/pull/24012 From clanger at openjdk.org Mon Dec 1 10:42:56 2025 From: clanger at openjdk.org (Christoph Langer) Date: Mon, 1 Dec 2025 10:42:56 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v3] In-Reply-To: References: Message-ID: On Wed, 22 Oct 2025 22:47:34 GMT, Erik Joelsson wrote: >> OK, I believe I understand what you're saying. Do you know where the place is where the JDK_IMAGE_DIR is created and renaming/filtering of the pdb files would need to happen? > >> OK, I believe I understand what you're saying. Do you know where the place is where the JDK_IMAGE_DIR is created and renaming/filtering of the pdb files would need to happen? > > So the change would be to _not_ copy debug symbols to the `JDK_IMAGE_DIR` when `--with-external-symbols-in-bundles=public` is set. I think this would be the line you need to put conditions around: https://github.com/openjdk/jdk/blob/be18e7ecfd2e89a0abb168e0d9a5b69598e2199f/make/Images.gmk#L307 OK, finally I have updated my PR to implement the suggestions of @erikj79. Now the exploded image during the build will only contain the full pdb files and in the actual JDK and JRE images, we'll have the stripped pdb files (as well as in the jmods), if the option is set. And this also propagates to bundles. The debug image/debug bundle will of course only have the full symbol files. I also update the test test/hotspot/jtreg/runtime/NMT/CheckForProperDetailStackTrace.java to expect debug symbols in case configure option `--with-external-symbols-in-bundles` is non-empty. This also contains some updates to the Whitebox functionality for checking which kind of debug symbols should be delivered and cleanup of test test/hotspot/jtreg/runtime/NMT/CheckForProperDetailStackTrace.java which was modified already with [JDK-8370064](https://bugs.openjdk.org/browse/JDK-8370064). ------------- PR Comment: https://git.openjdk.org/jdk/pull/24012#issuecomment-3595830306 From jpai at openjdk.org Mon Dec 1 12:44:57 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Mon, 1 Dec 2025 12:44:57 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Fri, 28 Nov 2025 15:47:04 GMT, Matthias Baesken wrote: > When building the recent mainline JDK (26), I see the following warning messages: > > warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory > warning: no debug symbols in executable (-arch arm64) > > > The build completes normally even with these warnings. > I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. > Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue > > https://clang.llvm.org/docs/CommandGuide/clang.html > Note > > ` > On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` Hello Matthias @MBaesken, I'll run this PR in our CI and see how it goes. I'll update here once I have the results. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28559#issuecomment-3596363051 From erikj at openjdk.org Mon Dec 1 14:40:19 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 14:40:19 GMT Subject: RFR: 8372393: Document requirement for separate metallib installation with Xcode 26.1.1 [v2] In-Reply-To: References: Message-ID: On Thu, 27 Nov 2025 11:04:29 GMT, Galder Zamarre?o wrote: >> Document the metal toolchain requirements starting with Xcode 26. > > Galder Zamarre?o has updated the pull request incrementally with one additional commit since the last revision: > > Fix line breaks Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28489#pullrequestreview-3525324245 From erik.joelsson at oracle.com Mon Dec 1 14:45:18 2025 From: erik.joelsson at oracle.com (Erik Joelsson) Date: Mon, 1 Dec 2025 06:45:18 -0800 Subject: Mac devkit requires changes for XCode 26 In-Reply-To: References: Message-ID: <505682a1-1308-4e1c-8c37-da01da04a321@oracle.com> Hello Galder, At Oracle we use this script to generate new devkits every time we update the toolchains we use for official builds, so it should be up to date and working for the latest toolchain we use at least, which at this time is Xcode 15.4. We have not yet jumped to Xcode 26, but when we do, we will make the script work unless someone else beats us to it. The expectation when running the script should not be to first have to copy things around in the installation directory of Xcode. The script should handle this automatically. However, it could be that we need to supply a path to both Xcode and metal going forward. I have not looked into this at all yet. /Erik On 11/27/25 04:20, Galder Zamarreno wrote: > Hi, > > I'm wondering what's the objective of the Mac devkit and how much is it > being kept up to date. > > I've been finding it useful to create a devkit that works for me to > build the jdk inside a Nix shell on a mac. Nix shells easily allow me to > capture all the dependencies building jdks have (e.g. capstone) in a > reproducable way independent of global installations at the mac level. > > With the latest XCode 26 and Metal separation, I've been finding that > the current mac devkit is not fully suited for this changes. > > As you might have seen in [1], Metal is no longer part of XCode 26 and > now needs to be installed separately. The location where Metal gets > installed by default is not inside /Applications/XCode.app but a rather > different place. On my system this is: > > ``` > % xcrun --find metallib > /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v17.2.54.0.mgWMUd/Metal.xctoolchain/usr/bin/metallib > ``` > > To be able to carry on building the JDK on a Nix shell, I manually moved > the Metal.xctoolchain folder to > /Applications/Xcode.app/Contents/Developer/Toolchains and then invoked > the mac devkit script. > > This alone however was not enough to get the jdk to build, but the XCode > 26 itself does have the `metal` executable and the jdk was picking it > up. So, on top of that manual move, I tweaked the > `DEVKIT_TOOLCHAIN_PATH` so that the Metal binaries would resolve out of > the Metal.xctoolchain/usr/bin folder: > > ``` > echo-info "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/Xcode/Contents/Developer/Toolchains/Metal.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode/Contents/Developer/usr/bin\"" > ``` > > After doing this I rebuilt the devkit and I was able to build the jdk > once again inside a Nix shell on mac. > > Of course, the devkit could have been modified to avoid the need for the > manual move and instead resolve the `/var/run/...` folder. But I do > wonder how much this devkit really is kept up to date and what's the use > case that ended up creating it. > > Thanks > Galder > > [1] https://bugs.openjdk.org/browse/JDK-8372393 > [2] https://medium.com/%40sergey-pekar/how-to-fix-annoying-xcode-26-not-building-swiftui-previews-error-cannot-execute-tool-metal-due-49564e20357c > -- > Galder Zamarre?o > Software Developer > IBM Software > galder at ibm.com > > IBM From erikj at openjdk.org Mon Dec 1 14:57:09 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 14:57:09 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v13] In-Reply-To: References: <4_rkUaOwuH6_uQRt0HnZKey0t4Z83CQvcrHEqS-VYys=.c825780e-778b-431e-9800-b3a548f1355d@github.com> Message-ID: On Fri, 28 Nov 2025 19:38:20 GMT, Nick Hall wrote: > Thanks. I had a go at this today, but am struggling to build a devkit (even without any changes). Can you recommend a suitable host OS for building one, and which OS targets I should use to build the devkits to test? > > (I've tried building a devkit for Fedora 41 using both RHEL8 and Fedora 41 as host OSes, but am getting a variety of issues in the build) I haven't used this myself in a while, but I believe our internal kits use Oracle Linux 7 as host (in a container) and Oracle Linux 6 as target. RHEL should be equivalent to Oracle Linux, at least in this context. These are quite old, but the motivation for us to use devkits is to guarantee compatibility with old Linux versions. The host OS dictates the oldest where the kit itself can be used and the target dictates the oldest where the subsequently built JDK can be used. That said, getting a devkit to compile can be finicky for all sorts of reasons. The important part in this case is the sysroot, which is what you are going to change here, by adding extra packages. At least in theory, you could generate just a sysroot and supply that to the JDK build to verify this. I don't think there is a readily available make target for that though. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3596996889 From erikj at openjdk.org Mon Dec 1 15:01:23 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 15:01:23 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 In-Reply-To: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: On Fri, 28 Nov 2025 11:56:26 GMT, Aleksey Shipilev wrote: > GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. > > We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. > > Additional testing: > - [x] GHA Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28555#pullrequestreview-3525446158 From liach at openjdk.org Mon Dec 1 16:03:38 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 16:03:38 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/3c6406b2...e5214614 bin/generate-symbol-data.sh line 41: > 39: # - open a terminal program and run these commands: > 40: # cd "${JDK_CHECKOUT}"/src/jdk.compiler/share/data/symbols > 41: # bash ../../../../../bin/generate-symbol-data.sh "${JDK_N_INSTALL}" Same, extract to 26 doc/starting-next-release.md line 68: > 66: update annotation processor extended by `javac` tests to cover the new source version > 67: * `test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out` and `test/langtools/tools/javac/preview/classReaderTest/Client.preview.out`: update expected messages for preview errors and warnings > 68: * `test/langtools/tools/javac/versions/Versions.java`: add new source version to the set of valid sources and add new enum constant for the new class file version. Same remark, extract to 26 src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: > 380: * > 381: * @see 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1: > 1: /* Let's extract this change to 26 src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties line 1: > 1: # Let's extract this for 26. src/jdk.compiler/share/data/symbols/README line 1: > 1: This directory contains history data for -release. Let's extract this for 26. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577666303 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577665823 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577662551 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577673512 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577675100 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577674956 From nbenalla at openjdk.org Mon Dec 1 16:03:40 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Mon, 1 Dec 2025 16:03:40 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> On Mon, 1 Dec 2025 15:52:42 GMT, Chen Liang wrote: >> Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/3c6406b2...e5214614 > > src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: > >> 380: * >> 381: * @see > 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> > > This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. Great idea Chen, I will open a PR for this today ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577683094 From iris at openjdk.org Mon Dec 1 17:15:11 2025 From: iris at openjdk.org (Iris Clark) Date: Mon, 1 Dec 2025 17:15:11 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/3b597a10...e5214614 Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3526121001 From erikj at openjdk.org Mon Dec 1 19:01:32 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 19:01:32 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Fri, 28 Nov 2025 15:47:04 GMT, Matthias Baesken wrote: > When building the recent mainline JDK (26), I see the following warning messages: > > warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory > warning: no debug symbols in executable (-arch arm64) > > > The build completes normally even with these warnings. > I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. > Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue > > https://clang.llvm.org/docs/CommandGuide/clang.html > Note > > ` > On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` make/autoconf/flags-ldflags.m4 line 83: > 81: else > 82: LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" > 83: fi The way I understand this flag, we are defining a non temporary location for this file. Just specifying a file name without a directory path means it's relative to the directory where the compiler is running, which in our case is `make/`. We do not want to drop files in the source tree. Also, this file needs to be unique for each link unit using lto, so we can't have a global value defined here in configure. The filename needs to be generated uniquely into the build output dir for each call to SetupNativeCompilation. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28559#discussion_r2578270182 From erikj at openjdk.org Mon Dec 1 19:35:52 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 19:35:52 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v6] In-Reply-To: <7xjbY7Wkdo7ImiFeTdjUWgYkB-7155QLLxtZ13M3-Io=.d86b647e-6335-43ea-bf1c-ccd2113e74dd@github.com> References: <7xjbY7Wkdo7ImiFeTdjUWgYkB-7155QLLxtZ13M3-Io=.d86b647e-6335-43ea-bf1c-ccd2113e74dd@github.com> Message-ID: On Mon, 1 Dec 2025 09:31:58 GMT, Christoph Langer wrote: >> This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. >> >> The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. >> >> During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. >> >> With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. > > Christoph Langer has updated the pull request incrementally with two additional commits since the last revision: > > - Cleanup comment > - Fix pdb filtering for JMODs build > OK, finally I have updated my PR to implement the suggestions of @erikj79. Now the exploded image during the build will only contain the full pdb files and in the actual JDK and JRE images, we'll have the stripped pdb files (as well as in the jmods), if the option is set. And this also propagates to bundles. The debug image/debug bundle will of course only have the full symbol files. >From what I can tell, this is also removing the full debug symbols from the actual JDK/JRE images in all cases and all platforms, so they actually match the bundles. I think that's ok, but it needs to be clearly stated somewhere, at least in the bug, for future reference of when that happened. make/CreateJmods.gmk line 72: > 70: DEST := $(LIBS_DIR_FILTERED), \ > 71: FILES := $(FILES_LIBS), \ > 72: NAME_MACRO := rename_stripped \ These trailing commas were deliberate and are part of the [Code Conventions for the Build System](https://openjdk.org/groups/build/doc/code-conventions.html) (17, though it's not very clearly stated). make/Images.gmk line 313: > 311: $(call SetupCopyStrippedDebuginfo,JDK) > 312: $(call SetupCopyStrippedDebuginfo,JRE) > 313: endif I might be missing something, but why is this needed? Shouldn't the public pdbs already be part of the jmods in this case and so would get linked into the image by jlink? make/Images.gmk line 322: > 320: $(eval DBGFILES := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \ > 321: $(filter-out %.stripped.pdb,$(DBGFILES)),$(DBGFILES)) \ > 322: ) \ I think I would use lower case for `DBGFILES` to signify a local variable and reduce risk of clashing with any other variable in the current context. ------------- PR Review: https://git.openjdk.org/jdk/pull/24012#pullrequestreview-3525547958 PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2577512768 PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2578323956 PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2578344932 From darcy at openjdk.org Mon Dec 1 19:48:53 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 19:48:53 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/bec8ec07...e5214614 src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 394: > 392: * > 393: * @see 394: * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jvms/index.html"> Presumably the analagous URL update should be done here as in ClassFileFormatVersion for the JLS instead of the JVMS. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578389248 From darcy at openjdk.org Mon Dec 1 19:52:54 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 19:52:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: <9vzVbgAOcM7Svoy5DoqhDVY4Tn2bysq9WAYpMsBcenc=.441a1ba8-3e46-41d2-bf77-afb86fe8515c@github.com> On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/04b667ed...e5214614 src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1368: > 1366: } > 1367: > 1368: private static String formatAbbreviatedList(Collection values) { I think changing the policy here is okay, but it should be better documented in comments here. Additionally, it assume there will be a dense collection of supported values between the 4 th and (n-3) rd. That is currently the de facto policy, but is not ironclad. This assumption should also be documented. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578399308 From liach at openjdk.org Mon Dec 1 20:27:07 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 20:27:07 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required Message-ID: Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) ------------- Commit messages: - 8160821 Changes: https://git.openjdk.org/jdk/pull/28585/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8160821 Stats: 135 lines in 7 files changed: 104 ins; 20 del; 11 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Mon Dec 1 20:27:07 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 20:27:07 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 20:09:38 GMT, Chen Liang wrote: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) java.lang.invoke tests all pass. New benchmark results for `VarHandleExact`: Benchmark Mode Cnt Score Error Units VarHandleExact.exact_exactInvocation avgt 30 0.380 ? 0.007 ns/op VarHandleExact.generic_exactInvocation avgt 30 0.389 ? 0.008 ns/op VarHandleExact.generic_genericInvocation avgt 30 0.384 ? 0.008 ns/op Submitting internal CI runs. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28585#issuecomment-3598661038 From liach at openjdk.org Mon Dec 1 20:34:31 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 20:34:31 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v2] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Logical fallacy ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/522cbe9d..886d3918 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=00-01 Stats: 2 lines in 2 files changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From kurt at openjdk.org Mon Dec 1 21:52:02 2025 From: kurt at openjdk.org (Kurt Miller) Date: Mon, 1 Dec 2025 21:52:02 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng In-Reply-To: References: Message-ID: On Fri, 14 Nov 2025 14:48:14 GMT, Kurt Miller wrote: > When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: > > `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` > > This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. Could someone from client review this PR please? It would be helpful to the future bsd-port integration to correct this. Thank you ------------- PR Comment: https://git.openjdk.org/jdk/pull/28324#issuecomment-3599107891 From erikj at openjdk.org Mon Dec 1 22:24:07 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 22:24:07 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/193bb114...e5214614 make/conf/version-numbers.conf line 40: > 38: DEFAULT_VERSION_CLASSFILE_MINOR=0 > 39: DEFAULT_VERSION_DOCS_API_SINCE=11 > 40: DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26" Need to add 27 to this line. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578923651 From naoto at openjdk.org Mon Dec 1 23:09:54 2025 From: naoto at openjdk.org (Naoto Sato) Date: Mon, 1 Dec 2025 23:09:54 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Tue, 25 Nov 2025 20:21:26 GMT, Xueming Shen wrote: >> ### Summary >> >> Case folding is a key operation for case-insensitive matching (e.g., string equality, regex matching), where the goal is to eliminate case distinctions without applying locale or language specific conversions. >> >> Currently, the JDK does not expose a direct API for Unicode-compliant case folding. Developers now rely on methods such as: >> >> **String.equalsIgnoreCase(String)** >> >> - Unicode-aware, locale-independent. >> - Implementation uses Character.toLowerCase(Character.toUpperCase(int)) per code point. >> - Limited: does not support 1:M mapping defined in Unicode case folding. >> >> **Character.toLowerCase(int) / Character.toUpperCase(int)** >> >> - Locale-independent, single code point only. >> - No support for 1:M mappings. >> >> **String.toLowerCase(Locale.ROOT) / String.toUpperCase(Locale.ROOT)** >> >> - Based on Unicode SpecialCasing.txt, supports 1:M mappings. >> - Intended primarily for presentation/display, not structural case-insensitive matching. >> - Requires full string conversion before comparison, which is less efficient and not intended for structural matching. >> >> **1:M mapping example, U+00DF (?)** >> >> - String.toUpperCase(Locale.ROOT, "?") ? "SS" >> - Case folding produces "ss", matching Unicode caseless comparison rules. >> >> >> jshell> "\u00df".equalsIgnoreCase("ss") >> $22 ==> false >> >> jshell> "\u00df".toUpperCase(Locale.ROOT).toLowerCase(Locale.ROOT).equals("ss") >> $24 ==> true >> >> >> ### Motivation & Direction >> >> Add Unicode standard-compliant case-less comparison methods to the String class, enabling & improving reliable and efficient Unicode-aware/compliant case-insensitive matching. >> >> - Unicode-compliant **full** case folding. >> - Simpler, stable and more efficient case-less matching without workarounds. >> - Brings Java's string comparison handling in line with other programming languages/libraries. >> >> This PR proposes to introduce the following comparison methods in `String` class >> >> - boolean equalsFoldCase(String anotherString) >> - int compareToFoldCase(String anotherString) >> - Comparator UNICODE_CASEFOLD_ORDER >> >> These methods are intended to be the preferred choice when Unicode-compliant case-less matching is required. >> >> *Note: An early draft also proposed a String.toCaseFold() method returning a new case-folded string. >> However, during review this was considered error-prone, as the resulting string could easily be mistaken for a general transformation like toLowerCase() and then pass... > > Xueming Shen has updated the pull request incrementally with one additional commit since the last revision: > > minor doc formatting update make/jdk/src/classes/build/tools/generatecharacter/GenerateCaseFolding.java line 79: > 77: // hack, hack, hack! the logic does not pick 0131. just add manually to support 'I's. > 78: // 0049; T; 0131; # LATIN CAPITAL LETTER I > 79: final String T_0x0131_0x49 = String.format(" entry(0x%04x, 0x%04x),\n", 0x0131, 0x49); The 'T' status reads (in CaseFolding.txt): # T: special case for uppercase I and dotted uppercase I # - For non-Turkic languages, this mapping is normally not used. # - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters. # Note that the Turkic mappings do not maintain canonical equivalence without additional processing. Since this casefold feature is locale independent, should this `T` status be ignored? It might be helpful if we mention in the spec if we do this `T` case folding. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27628#discussion_r2579019726 From dlsmith at openjdk.org Mon Dec 1 23:36:54 2025 From: dlsmith at openjdk.org (Dan Smith) Date: Mon, 1 Dec 2025 23:36:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 15:58:38 GMT, Nizar Benalla wrote: >> src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: >> >>> 380: * >>> 381: * @see >> 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> >> >> This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. > > Great idea Chen, I will open a PR for this today Better to use a relative url now and stop bumping the version with each release: href="../../../../specs/jvms/index.html" (Check my work on the number of dots, may be one or two off.) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579082529 From liach at openjdk.org Mon Dec 1 23:41:04 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 23:41:04 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Tweak VH usage in some classes ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/886d3918..7bcdcbf3 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=01-02 Stats: 9 lines in 1 file changed: 0 ins; 0 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From naoto at openjdk.org Mon Dec 1 23:47:49 2025 From: naoto at openjdk.org (Naoto Sato) Date: Mon, 1 Dec 2025 23:47:49 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Tue, 25 Nov 2025 20:21:26 GMT, Xueming Shen wrote: >> ### Summary >> >> Case folding is a key operation for case-insensitive matching (e.g., string equality, regex matching), where the goal is to eliminate case distinctions without applying locale or language specific conversions. >> >> Currently, the JDK does not expose a direct API for Unicode-compliant case folding. Developers now rely on methods such as: >> >> **String.equalsIgnoreCase(String)** >> >> - Unicode-aware, locale-independent. >> - Implementation uses Character.toLowerCase(Character.toUpperCase(int)) per code point. >> - Limited: does not support 1:M mapping defined in Unicode case folding. >> >> **Character.toLowerCase(int) / Character.toUpperCase(int)** >> >> - Locale-independent, single code point only. >> - No support for 1:M mappings. >> >> **String.toLowerCase(Locale.ROOT) / String.toUpperCase(Locale.ROOT)** >> >> - Based on Unicode SpecialCasing.txt, supports 1:M mappings. >> - Intended primarily for presentation/display, not structural case-insensitive matching. >> - Requires full string conversion before comparison, which is less efficient and not intended for structural matching. >> >> **1:M mapping example, U+00DF (?)** >> >> - String.toUpperCase(Locale.ROOT, "?") ? "SS" >> - Case folding produces "ss", matching Unicode caseless comparison rules. >> >> >> jshell> "\u00df".equalsIgnoreCase("ss") >> $22 ==> false >> >> jshell> "\u00df".toUpperCase(Locale.ROOT).toLowerCase(Locale.ROOT).equals("ss") >> $24 ==> true >> >> >> ### Motivation & Direction >> >> Add Unicode standard-compliant case-less comparison methods to the String class, enabling & improving reliable and efficient Unicode-aware/compliant case-insensitive matching. >> >> - Unicode-compliant **full** case folding. >> - Simpler, stable and more efficient case-less matching without workarounds. >> - Brings Java's string comparison handling in line with other programming languages/libraries. >> >> This PR proposes to introduce the following comparison methods in `String` class >> >> - boolean equalsFoldCase(String anotherString) >> - int compareToFoldCase(String anotherString) >> - Comparator UNICODE_CASEFOLD_ORDER >> >> These methods are intended to be the preferred choice when Unicode-compliant case-less matching is required. >> >> *Note: An early draft also proposed a String.toCaseFold() method returning a new case-folded string. >> However, during review this was considered error-prone, as the resulting string could easily be mistaken for a general transformation like toLowerCase() and then pass... > > Xueming Shen has updated the pull request incrementally with one additional commit since the last revision: > > minor doc formatting update src/java.base/share/classes/jdk/internal/lang/CaseFolding.java.template line 69: > 67: * | 1:2 mapping | 0002 | 0000 | xxxx | xxxx | FB02 => 0066 006C > 68: * +---+---------+--------+---------+--------+--------+ > 69: * | 1:3 mapping | 0003 | xxxx | xxxx | xxxx | FB03 => 0066 0066 0069 What if 1:2/3 mappings included non-BMP case folded forms? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27628#discussion_r2579098131 From darcy at openjdk.org Mon Dec 1 23:52:47 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 23:52:47 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 23:34:16 GMT, Dan Smith wrote: >> Great idea Chen, I will open a PR for this today > > Better to use a relative url now and stop bumping the version with each release: > > > href="../../../../specs/jvms/index.html" > > > (Check my work on the number of dots, may be one or two off.) I assume there is going to be some canonical publication of the JLS and JVMS specs per release. If so, these URLs should refer to that release. In JDK ($N+1) will will still want the links to JLS $N to resolve to JLS $N and _not_ JLS ($N + 1). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579106368 From liach at openjdk.org Mon Dec 1 23:53:46 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 23:53:46 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes Since I removed the return type dropping VarHandle bypass, TestGetAndAdd became affected because it can no longer access the x86 assembly. Updated the Java calling convention to fix it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28585#issuecomment-3599477724 From vlivanov at openjdk.org Tue Dec 2 00:25:49 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 00:25:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2033: > 2031: > 2032: @ForceInline > 2033: MethodHandle adaptedMethodHandle(VarHandle vh) { Can you elaborate, please, how this method is intended to behave? test/hotspot/jtreg/compiler/c2/irTests/TestGetAndAdd.java line 78: > 76: @IR(counts = {IRNode.X86_LOCK_XADDB, "3"}, phase = CompilePhase.FINAL_CODE) > 77: public static void addB() { > 78: var _ = (byte) B.getAndAdd(b2); > Since I removed the return type dropping VarHandle bypass, TestGetAndAdd became affected because it can no longer access the x86 assembly. It has performance implications for user code, doesn't it? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579149358 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579150006 From dlsmith at openjdk.org Tue Dec 2 00:35:54 2025 From: dlsmith at openjdk.org (Dan Smith) Date: Tue, 2 Dec 2025 00:35:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 23:50:29 GMT, Joe Darcy wrote: >> Better to use a relative url now and stop bumping the version with each release: >> >> >> href="../../../../specs/jvms/index.html" >> >> >> (Check my work on the number of dots, may be one or two off.) > > I assume there is going to be some canonical publication of the JLS and JVMS specs per release. If so, these URLs should refer to that release. In JDK ($N+1) will will still want the links to JLS $N to resolve to JLS $N and _not_ JLS ($N + 1). Oh, yes, thanks Joe, I'd missed that context. If the goal is to have a stable URL that will always point to the snapshot for a given version, yes, you want the full URL, and this updated URL looks like the correct one. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579166554 From liach at openjdk.org Tue Dec 2 01:12:48 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 01:12:48 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> Message-ID: <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> On Tue, 2 Dec 2025 00:20:21 GMT, Vladimir Ivanov wrote: >> Chen Liang has updated the pull request incrementally with one additional commit since the last revision: >> >> Tweak VH usage in some classes > > src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2033: > >> 2031: >> 2032: @ForceInline >> 2033: MethodHandle adaptedMethodHandle(VarHandle vh) { > > Can you elaborate, please, how this method is intended to behave? When this is compiled, `constant` will become either `1` for constant VH and `2` for non-constant VH. So for constant VH, this becomes a stable read. For a non-constant VH, this becomes `getMethodHandle(mode).asType(...)`, equivalent to before. > test/hotspot/jtreg/compiler/c2/irTests/TestGetAndAdd.java line 78: > >> 76: @IR(counts = {IRNode.X86_LOCK_XADDB, "3"}, phase = CompilePhase.FINAL_CODE) >> 77: public static void addB() { >> 78: var _ = (byte) B.getAndAdd(b2); > >> Since I removed the return type dropping VarHandle bypass, TestGetAndAdd became affected because it can no longer access the x86 assembly. > > It has performance implications for user code, doesn't it? The performance is measured by the existing `org.openjdk.bench.java.lang.invoke.VarHandleExact` benchmark, which originally expects `generic_genericInvocation` to be much slower. Now it instead has a performance on par with the exact invocations. The constant folding ability is verified with the new `VarHandleMismatchedTypeFold` IR test. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579218324 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579221253 From vlivanov at openjdk.org Tue Dec 2 01:45:49 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 01:45:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> Message-ID: On Tue, 2 Dec 2025 01:08:19 GMT, Chen Liang wrote: >> src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2033: >> >>> 2031: >>> 2032: @ForceInline >>> 2033: MethodHandle adaptedMethodHandle(VarHandle vh) { >> >> Can you elaborate, please, how this method is intended to behave? > > When this is compiled, `constant` will become either `1` for constant VH and `2` for non-constant VH. So for constant VH, this becomes a stable read. For a non-constant VH, this becomes `getMethodHandle(mode).asType(...)`, equivalent to before. What's the purpose of `constant == MethodHandleImpl.CONSTANT_YES ` and `constant != MethodHandleImpl.CONSTANT_NO` checks then? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579287707 From liach at openjdk.org Tue Dec 2 01:51:47 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 01:51:47 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> Message-ID: <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> On Tue, 2 Dec 2025 01:42:50 GMT, Vladimir Ivanov wrote: >> When this is compiled, `constant` will become either `1` for constant VH and `2` for non-constant VH. So for constant VH, this becomes a stable read. For a non-constant VH, this becomes `getMethodHandle(mode).asType(...)`, equivalent to before. > > What's the purpose of `constant == MethodHandleImpl.CONSTANT_YES ` and `constant != MethodHandleImpl.CONSTANT_NO` checks then? Indeed, I should move the adaptedMh read into `constant == MethodHandleImpl.CONSTANT_YES` block. `constant != MethodHandleImpl.CONSTANT_NO` prevents capturing any further if the VH is known non-constant; we keep this branch in constant case in case the adapted MH is not ready when we know the VH is constant. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579302480 From vlivanov at openjdk.org Tue Dec 2 01:51:49 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 01:51:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> Message-ID: On Tue, 2 Dec 2025 01:09:59 GMT, Chen Liang wrote: >> test/hotspot/jtreg/compiler/c2/irTests/TestGetAndAdd.java line 78: >> >>> 76: @IR(counts = {IRNode.X86_LOCK_XADDB, "3"}, phase = CompilePhase.FINAL_CODE) >>> 77: public static void addB() { >>> 78: var _ = (byte) B.getAndAdd(b2); >> >>> Since I removed the return type dropping VarHandle bypass, TestGetAndAdd became affected because it can no longer access the x86 assembly. >> >> It has performance implications for user code, doesn't it? > > The performance is measured by the existing `org.openjdk.bench.java.lang.invoke.VarHandleExact` benchmark, which originally expects `generic_genericInvocation` to be much slower. Now it instead has a performance on par with the exact invocations. > > The constant folding ability is verified with the new `VarHandleMismatchedTypeFold` IR test. If I understand the IR test logic correctly, C2 was able to compile `(void) B.getAndAdd(b2)` call down to the desired instruction sequence. Is it still the case after the fix? What happens if you keep `TestGetAndAdd.java ` intact? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579300293 From liach at openjdk.org Tue Dec 2 01:54:46 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 01:54:46 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> Message-ID: On Tue, 2 Dec 2025 01:48:13 GMT, Vladimir Ivanov wrote: >> The performance is measured by the existing `org.openjdk.bench.java.lang.invoke.VarHandleExact` benchmark, which originally expects `generic_genericInvocation` to be much slower. Now it instead has a performance on par with the exact invocations. >> >> The constant folding ability is verified with the new `VarHandleMismatchedTypeFold` IR test. > > If I understand the IR test logic correctly, C2 was able to compile `(void) B.getAndAdd(b2)` call down to the desired instruction sequence. Is it still the case after the fix? What happens if you keep `TestGetAndAdd.java > ` intact? No. The old code worked because it implicitly depended on the backdoor path present in the now removed `GUARD_METHOD_TEMPLATE_V` in `VarHandleGuardMethodGenerator`. If this test is intact, now its IR compiles to doing something in adaptedMethodHandle and calling a MethodHandle. Not sure why it doesn't inline through that MethodHandle. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579310315 From vlivanov at openjdk.org Tue Dec 2 02:02:46 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 02:02:46 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> Message-ID: On Tue, 2 Dec 2025 01:49:04 GMT, Chen Liang wrote: >> What's the purpose of `constant == MethodHandleImpl.CONSTANT_YES ` and `constant != MethodHandleImpl.CONSTANT_NO` checks then? > > Indeed, I should move the adaptedMh read into `constant == MethodHandleImpl.CONSTANT_YES` block. > > `constant != MethodHandleImpl.CONSTANT_NO` prevents capturing any further if the VH is known non-constant; we keep this branch in constant case in case the adapted MH is not ready when we know the VH is constant. I still have a hard time reasoning about state transitions of the cache. 1) Why do you limit successful cache read (`cache != null`) to constant `vh` case (`constant == MethodHandleImpl.CONSTANT_YES`)? 2) Why do you avoid cache update in non-constant case (`constant != MethodHandleImpl.CONSTANT_NO`)? What happens if it runs compiled `adaptedMethodHandle` method? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579329673 From vlivanov at openjdk.org Tue Dec 2 02:08:44 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 02:08:44 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> Message-ID: <53uGo7JI87pm-cZmvxBiHniURB_bKryyfrWpewgZLP8=.bb97af75-8a6d-4aa8-8a90-e8c4cbc77ec8@github.com> On Tue, 2 Dec 2025 01:52:04 GMT, Chen Liang wrote: >> If I understand the IR test logic correctly, C2 was able to compile `(void) B.getAndAdd(b2)` call down to the desired instruction sequence. Is it still the case after the fix? What happens if you keep `TestGetAndAdd.java >> ` intact? > > No. The old code worked because it implicitly depended on the backdoor path present in the now removed `GUARD_METHOD_TEMPLATE_V` in `VarHandleGuardMethodGenerator`. If this test is intact, now its IR compiles to doing something in adaptedMethodHandle and calling a MethodHandle. Not sure why it doesn't inline through that MethodHandle. Ok, so you eliminated a fast-path check for void-return case and now JIT can't fully optimize it anymore. Do I get it right? Since this particular bytecode shape is exposed through public API, I don't see why user code can't step on it. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579341027 From liach at openjdk.org Tue Dec 2 02:16:52 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 02:16:52 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> Message-ID: <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> On Tue, 2 Dec 2025 02:00:08 GMT, Vladimir Ivanov wrote: >> Indeed, I should move the adaptedMh read into `constant == MethodHandleImpl.CONSTANT_YES` block. >> >> `constant != MethodHandleImpl.CONSTANT_NO` prevents capturing any further if the VH is known non-constant; we keep this branch in constant case in case the adapted MH is not ready when we know the VH is constant. > > I still have a hard time reasoning about state transitions of the cache. > > 1) Why do you limit successful cache read (`cache != null`) to constant `vh` case (`constant == MethodHandleImpl.CONSTANT_YES`)? > > 2) Why do you avoid cache update in non-constant case (`constant != MethodHandleImpl.CONSTANT_NO`)? What happens if it runs compiled `adaptedMethodHandle` method? So an `AccessDescriptor` is created for each sigpoly VH site in the source code. Usually it is `VH.operation()`, but it is legal to use a non-constant VarHandle variable and call an operation on that. If `constant == MethodHandleImpl.CONSTANT_NO`, we are sure that we have the non-constant case, so we cannot trust that cached method handle, and there is no point further caching. We can only read that previous MH conversion cache if `constant == MethodHandleImpl.CONSTANT_YES` because this means our cache is always correct. >> No. The old code worked because it implicitly depended on the backdoor path present in the now removed `GUARD_METHOD_TEMPLATE_V` in `VarHandleGuardMethodGenerator`. If this test is intact, now its IR compiles to doing something in adaptedMethodHandle and calling a MethodHandle. Not sure why it doesn't inline through that MethodHandle. > > Ok, so you eliminated a fast-path check for void-return case and now JIT can't fully optimize it anymore. Do I get it right? Since this particular bytecode shape is exposed through public API, I don't see why user code can't step on it. JIT can fully optimize it in JMH benchmarks. I don't know why the IR in this test can't optimize it - I couldn't reproduce this CI failure locally on my linux-x64-debug profile, but this modified test passes on CI. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579352226 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579353722 From vlivanov at openjdk.org Tue Dec 2 02:32:47 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 02:32:47 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> Message-ID: On Tue, 2 Dec 2025 02:13:15 GMT, Chen Liang wrote: >> I still have a hard time reasoning about state transitions of the cache. >> >> 1) Why do you limit successful cache read (`cache != null`) to constant `vh` case (`constant == MethodHandleImpl.CONSTANT_YES`)? >> >> 2) Why do you avoid cache update in non-constant case (`constant != MethodHandleImpl.CONSTANT_NO`)? What happens if it runs compiled `adaptedMethodHandle` method? > > So an `AccessDescriptor` is created for each sigpoly VH site in the source code. Usually it is `VH.operation()`, but it is legal to use a non-constant VarHandle variable and call an operation on that. If `constant == MethodHandleImpl.CONSTANT_NO`, we are sure that we have the non-constant case, so we cannot trust that cached method handle, and there is no point further caching. We can only read that previous MH conversion cache if `constant == MethodHandleImpl.CONSTANT_YES` because this means our cache is always correct. So, it seems like what you are trying to achieve is a 1-1 mapping from `AccessDescriptor` to `vh` through `adaptedMh`. So, once `cache != null` you can trust that it corresponds to the `vh` instance passed as a constant. But cache pollution can easily break the invariant, so you try to eliminate the pollution by avoiding cache updates when vh is not constant. Do I get it right? >> Ok, so you eliminated a fast-path check for void-return case and now JIT can't fully optimize it anymore. Do I get it right? Since this particular bytecode shape is exposed through public API, I don't see why user code can't step on it. > > JIT can fully optimize it in JMH benchmarks. I don't know why the IR in this test can't optimize it - I couldn't reproduce this CI failure locally on my linux-x64-debug profile, but this modified test passes on CI. I'd say it's a bad sign. Intermittent bugs manifest exactly in such a way. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579374286 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579375565 From liach at openjdk.org Tue Dec 2 02:54:46 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 02:54:46 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> Message-ID: On Tue, 2 Dec 2025 02:29:28 GMT, Vladimir Ivanov wrote: >> So an `AccessDescriptor` is created for each sigpoly VH site in the source code. Usually it is `VH.operation()`, but it is legal to use a non-constant VarHandle variable and call an operation on that. If `constant == MethodHandleImpl.CONSTANT_NO`, we are sure that we have the non-constant case, so we cannot trust that cached method handle, and there is no point further caching. We can only read that previous MH conversion cache if `constant == MethodHandleImpl.CONSTANT_YES` because this means our cache is always correct. > > So, it seems like what you are trying to achieve is a 1-1 mapping from `AccessDescriptor` to `vh` through `adaptedMh`. So, once `cache != null` you can trust that it corresponds to the `vh` instance passed as a constant. But cache pollution can easily break the invariant, so you try to eliminate the pollution by avoiding cache updates when vh is not constant. Do I get it right? No. The avoidance of cache update simply trims down the generated code by throwing away the meaningless cache update. The access to cache is already safeguarded by `constant == MethodHandleImpl.CONSTANT_YES`. I should have moved `var cache = adaptedMh;` into the if block of `constant == CONSTANT_YES`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2579405388 From hgreule at openjdk.org Tue Dec 2 07:54:01 2025 From: hgreule at openjdk.org (Hannes Greule) Date: Tue, 2 Dec 2025 07:54:01 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> Message-ID: On Tue, 2 Dec 2025 02:30:28 GMT, Vladimir Ivanov wrote: >> JIT can fully optimize it in JMH benchmarks. I don't know why the IR in this test can't optimize it - I couldn't reproduce this CI failure locally on my linux-x64-debug profile, but this modified test passes on CI. > > I'd say it's a bad sign. Intermittent bugs manifest exactly in such a way. > The performance is measured by the existing `org.openjdk.bench.java.lang.invoke.VarHandleExact` benchmark, which originally expects `generic_genericInvocation` to be much slower. Now it instead has a performance on par with the exact invocations. > > The constant folding ability is verified with the new `VarHandleMismatchedTypeFold` IR test. The benchmark doesn't consider such inexact getAndAdd calls (with a void return type), I think it should cover that too. This is a very common pattern that really must not regress. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2580041626 From mbaesken at openjdk.org Tue Dec 2 08:20:52 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Tue, 2 Dec 2025 08:20:52 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 18:58:11 GMT, Erik Joelsson wrote: >> When building the recent mainline JDK (26), I see the following warning messages: >> >> warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory >> warning: no debug symbols in executable (-arch arm64) >> >> >> The build completes normally even with these warnings. >> I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. >> Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue >> >> https://clang.llvm.org/docs/CommandGuide/clang.html >> Note >> >> ` >> On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` > > make/autoconf/flags-ldflags.m4 line 83: > >> 81: else >> 82: LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" >> 83: fi > > The way I understand this flag, we are defining a non temporary location for this file. Just specifying a file name without a directory path means it's relative to the directory where the compiler is running, which in our case is `make/`. We do not want to drop files in the source tree. Also, this file needs to be unique for each link unit using lto, so we can't have a global value defined here in configure. The filename needs to be generated uniquely into the build output dir for each call to SetupNativeCompilation. In the error/warning messages we got we saw `/tmp/lto.o` . Not sure if the files would show up under 'make' when giving no full path with this added flag, but if so this would not be very nice. Can we somehow reference the build-target-dir in configure/autoconf files ? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28559#discussion_r2580125344 From pminborg at openjdk.org Tue Dec 2 09:04:53 2025 From: pminborg at openjdk.org (Per Minborg) Date: Tue, 2 Dec 2025 09:04:53 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes src/hotspot/share/opto/library_call.cpp line 8926: > 8924: bool LibraryCallKit::inline_isCompileConstant() { > 8925: Node* n = argument(0); > 8926: set_result(n->is_Con() ? intcon(1) : intcon(2)); Can we get constants for these magic numbers on the C side as well? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2580266341 From pminborg at openjdk.org Tue Dec 2 09:31:03 2025 From: pminborg at openjdk.org (Per Minborg) Date: Tue, 2 Dec 2025 09:31:03 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: > 2034: var constant = MethodHandleImpl.isCompileConstant(vh); > 2035: var cache = adaptedMh; > 2036: if (constant == MethodHandleImpl.CONSTANT_YES && cache != null) { Rookie question: Is there multi-thread considerations here? How about visibility across threads? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2580353068 From vklang at openjdk.org Tue Dec 2 10:08:39 2025 From: vklang at openjdk.org (Viktor Klang) Date: Tue, 2 Dec 2025 10:08:39 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: <8tnePBnWu5w86zsXUOVMd7R_oHsTVl_Gjug0QP7N_vw=.5ce0106a-a7bf-40a2-b6a4-76e5d816150e@github.com> On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java line 632: > 630: @Hidden > 631: @jdk.internal.vm.annotation.IntrinsicCandidate > 632: static int isCompileConstant(Object obj) { nit: an "is"-question tends to indicate a yes/no answer, but in this case it is more of a compileConstantStatus. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2580489368 From shade at openjdk.org Tue Dec 2 11:56:13 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 2 Dec 2025 11:56:13 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 [v2] In-Reply-To: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: > GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. > > We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. > > Additional testing: > - [x] GHA Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision: - Coalesce two "apt install" blocks - Merge branch 'master' into JDK-8372733-gha-ubuntu-24.04 - Also X11 dependencies - Also fontconfig dependency - Fix ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28555/files - new: https://git.openjdk.org/jdk/pull/28555/files/294fb96e..56b7e5ed Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28555&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28555&range=00-01 Stats: 12101 lines in 276 files changed: 6224 ins; 4962 del; 915 mod Patch: https://git.openjdk.org/jdk/pull/28555.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28555/head:pull/28555 PR: https://git.openjdk.org/jdk/pull/28555 From ayang at openjdk.org Tue Dec 2 11:59:49 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Tue, 2 Dec 2025 11:59:49 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 [v2] In-Reply-To: References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: On Tue, 2 Dec 2025 11:56:13 GMT, Aleksey Shipilev wrote: >> GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. >> >> We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. >> >> Additional testing: >> - [x] GHA > > Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision: > > - Coalesce two "apt install" blocks > - Merge branch 'master' into JDK-8372733-gha-ubuntu-24.04 > - Also X11 dependencies > - Also fontconfig dependency > - Fix Marked as reviewed by ayang (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28555#pullrequestreview-3529712718 From shade at openjdk.org Tue Dec 2 12:05:32 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 2 Dec 2025 12:05:32 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 [v3] In-Reply-To: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: > GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. > > We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. > > Additional testing: > - [x] GHA Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: Dang it, suffix already has ":". Also sort. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28555/files - new: https://git.openjdk.org/jdk/pull/28555/files/56b7e5ed..a0f4eaeb Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28555&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28555&range=01-02 Stats: 9 lines in 1 file changed: 1 ins; 1 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/28555.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28555/head:pull/28555 PR: https://git.openjdk.org/jdk/pull/28555 From kbarrett at openjdk.org Tue Dec 2 14:14:03 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Tue, 2 Dec 2025 14:14:03 GMT Subject: RFR: 8372938: Fix reference to DeferredStatic in HotSpot Style Guide Message-ID: Please review this trivial editorial fix to the HotSpot Style Guide. JDK-8360458 changed the name of the utility class `Deferred` to `DeferredStatic`, but forgot to update the reference to that class in the Style Guide. ------------- Commit messages: - fix reference Changes: https://git.openjdk.org/jdk/pull/28602/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28602&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372938 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28602.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28602/head:pull/28602 PR: https://git.openjdk.org/jdk/pull/28602 From nbenalla at openjdk.org Tue Dec 2 14:23:38 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 14:23:38 GMT Subject: RFR: 8372940: Update symbol data script references Message-ID: Update path to the generate symbols script, and expand the start of release doc. ------------- Commit messages: - doc updates Changes: https://git.openjdk.org/jdk/pull/28606/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28606&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372940 Stats: 3 lines in 3 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28606.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28606/head:pull/28606 PR: https://git.openjdk.org/jdk/pull/28606 From stefank at openjdk.org Tue Dec 2 14:24:21 2025 From: stefank at openjdk.org (Stefan Karlsson) Date: Tue, 2 Dec 2025 14:24:21 GMT Subject: RFR: 8372938: Fix reference to DeferredStatic in HotSpot Style Guide In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:05:01 GMT, Kim Barrett wrote: > Please review this trivial editorial fix to the HotSpot Style Guide. > JDK-8360458 changed the name of the utility class `Deferred` to > `DeferredStatic`, but forgot to update the reference to that class in the > Style Guide. Marked as reviewed by stefank (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28602#pullrequestreview-3530393273 From nbenalla at openjdk.org Tue Dec 2 14:57:43 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 14:57:43 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v8] In-Reply-To: References: Message-ID: <8Fxjqxz7uHKELjvLEjJg4Zvkbs38Bz52UcbJJYkkN4I=.09b0c42a-4b86-4ba9-9a31-d0a7b60af3fe@github.com> > Get JDK 27 underway. Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 18 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - revert MAX_COLUMNS to 80 - Update LATEST_MAJOR_VERSION in Versions.java - Merge branch 'master' into start-of-release-27 - ... and 8 more: https://git.openjdk.org/jdk/compare/759d7098...b47b9ee9 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/e5214614..b47b9ee9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=06-07 Stats: 7726 lines in 83 files changed: 2728 ins; 4423 del; 575 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Tue Dec 2 15:07:11 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 15:07:11 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: References: Message-ID: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> > Get JDK 27 underway. Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: - revert changes to avoid conflict - add 27 to the acceptable boot versions ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/b47b9ee9..1237304b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=07-08 Stats: 49 lines in 4 files changed: 8 ins; 29 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Tue Dec 2 15:07:16 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 15:07:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 22:20:34 GMT, Erik Joelsson wrote: >> Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/8736a894...e5214614 > > make/conf/version-numbers.conf line 40: > >> 38: DEFAULT_VERSION_CLASSFILE_MINOR=0 >> 39: DEFAULT_VERSION_DOCS_API_SINCE=11 >> 40: DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26" > > Need to add 27 to this line. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/061986c2fa56bcf1411f479c5b76602f63dc93c3, thanks! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2581577462 From henryjen at openjdk.org Tue Dec 2 15:39:07 2025 From: henryjen at openjdk.org (Henry Jen) Date: Tue, 2 Dec 2025 15:39:07 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v8] In-Reply-To: References: <4uJhQdFQQB6PBMzwbQAOry2qOwZVDQtQxsABgUzcZq8=.89dc80a2-86c7-4602-b0ff-81bb5832f121@github.com> <5LkTJ4u01K0fIFPRkCi-myrfMJ7xNZatsSs4Ig2H-dE=.dc2a9653-7c8b-45dc-8de3-2b08563df781@github.com> Message-ID: On Fri, 21 Nov 2025 15:39:12 GMT, Severin Gehwolf wrote: >> It might be useful to see what breaks if a JDK were built with a newline in the vendor name, I assume other things will break. >> >> Overall I think the changes are looking good, the main thing is that the error message is clear. > >> It might be useful to see what breaks if a JDK were built with a newline in the vendor name, I assume other things will break. > > Writhing the manifest entries for `jrt-fs.jar` break (header validation fails). Since the vendor populates to that jar file. The CSR is approved, and the one line signature is in the text. And since other things break with newline in the vendor name, I assume that vendor name is also limited, so are we good with current implementation? If it helps, I can add code to ensure compare the whole file. Or are we suggesting to add error message when there is more than one line? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28155#discussion_r2581726793 From mbaesken at openjdk.org Tue Dec 2 15:47:58 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Tue, 2 Dec 2025 15:47:58 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: <48-Z0u1mjPdqwtl7Hm9nJKeFLvly8iF_ndADOSkFGqg=.5d15711f-c492-444e-8b4c-fa359110247b@github.com> On Tue, 2 Dec 2025 08:18:05 GMT, Matthias Baesken wrote: >> make/autoconf/flags-ldflags.m4 line 83: >> >>> 81: else >>> 82: LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" >>> 83: fi >> >> The way I understand this flag, we are defining a non temporary location for this file. Just specifying a file name without a directory path means it's relative to the directory where the compiler is running, which in our case is `make/`. We do not want to drop files in the source tree. Also, this file needs to be unique for each link unit using lto, so we can't have a global value defined here in configure. The filename needs to be generated uniquely into the build output dir for each call to SetupNativeCompilation. > > In the error/warning messages we got we saw `/tmp/lto.o` . Not sure if the files would show up under 'make' when giving no full path with this added flag, but if so this would not be very nice; but from my observations I never saw stored files. Can we somehow reference the build-target-dir in configure/autoconf files ? We could set EXTRA_LDFLAGS_LTO for macos/clang and then use it later in make/common/native/Flags.gmk where we add a unique string for every lib built and also keep it away from the source dir LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" + EXTRA_LDFLAGS_LTO="-Wl,-object_path_lto," LDFLAGS_CXX_PARTIAL_LINKING="$MACHINE_FLAG -r" if test "x$OPENJDK_TARGET_OS" = xlinux; then @@ -159,6 +160,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], # Export some intermediate variables for compatibility LDFLAGS_CXX_JDK="$DEBUGLEVEL_LDFLAGS_JDK_ONLY" AC_SUBST(LDFLAGS_LTO) + AC_SUBST(EXTRA_LDFLAGS_LTO) AC_SUBST(LDFLAGS_CXX_JDK) AC_SUBST(LDFLAGS_CXX_PARTIAL_LINKING) ]) diff --git a/make/autoconf/spec.gmk.template b/make/autoconf/spec.gmk.template index b3d58704c50..e4523a23e6e 100644 --- a/make/autoconf/spec.gmk.template +++ b/make/autoconf/spec.gmk.template @@ -592,6 +592,8 @@ LDFLAGS_CXX_PARTIAL_LINKING := @LDFLAGS_CXX_PARTIAL_LINKING@ # LDFLAGS specific to link time optimization LDFLAGS_LTO := @LDFLAGS_LTO@ +EXTRA_LDFLAGS_LTO := @EXTRA_LDFLAGS_LTO@ + # Sometimes a different linker is needed for c++ libs LDCXX := @LDCXX@ # The flags for linking libstdc++ linker. diff --git a/make/common/native/Flags.gmk b/make/common/native/Flags.gmk index 843701cb4db..ee96dbb5d11 100644 --- a/make/common/native/Flags.gmk +++ b/make/common/native/Flags.gmk @@ -229,6 +229,7 @@ define SetupLinkerFlags # TOOLCHAIN_TYPE plus OPENJDK_TARGET_OS ifeq ($$($1_LINK_TIME_OPTIMIZATION), true) $1_EXTRA_LDFLAGS += $(LDFLAGS_LTO) + $1_EXTRA_LDFLAGS += $(EXTRA_LDFLAGS_LTO)/tmp/$1.o endif ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28559#discussion_r2581755075 From liach at openjdk.org Tue Dec 2 15:56:14 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 15:56:14 GMT Subject: RFR: 8372940: Update symbol data script references In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:05:51 GMT, Nizar Benalla wrote: > Update path to the generate symbols script, and expand the start of release doc. Marked as reviewed by liach (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28606#pullrequestreview-3530884832 From henryjen at openjdk.org Tue Dec 2 16:11:02 2025 From: henryjen at openjdk.org (Henry Jen) Date: Tue, 2 Dec 2025 16:11:02 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v9] In-Reply-To: References: Message-ID: > This PR include build changes from @magicus and jlink change to verify the build signature. > > Tested with local builds for MacOS and Linux as below shows that cross linking with same build is working while linking with different build failed with error message. > > ? export JAVA_HOME=./build/macosx-x86_64-server-fastdebug/images/jdk-bundle/jdk-26.jdk/Contents/Home > > ? java --version > openjdk 26-internal 2026-03-17 > OpenJDK Runtime Environment (fastdebug build 26-internal-adhoc.hjen.JDK-8347831) > OpenJDK 64-Bit Server VM (fastdebug build 26-internal-adhoc.hjen.JDK-8347831, mixed mode, sharing) > > ? jlink --version > 26-internal > > ? jlink --module-path ./build/linux-x86_64-server-release/images/jdk/jmods --add-modules java.base --output linux > > ? jlink --add-modules java.base --output macos > > ? jlink --module-path ~/linux/jdk-25.0.1/jmods --add-modules java.base --output linux25 > Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A > > ? jlink --module-path /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/jmods --add-modules java.base --output macos25 > Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A Henry Jen has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 10 additional commits since the last revision: - Merge openjdk/master - adapt review feedbacks - remove the extra space - Update the error message when not finding release signature - Treat missing release.txt as emptry release signature - Refactoring to clarify version checking cases - Address review feedbacks - Use release.txt from java.base module in current and target for comparison - JLink to check java build information - Build changes to generate release.txt for java.base and jdk.jlink. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28155/files - new: https://git.openjdk.org/jdk/pull/28155/files/a3edf9ac..2641504b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28155&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28155&range=07-08 Stats: 257641 lines in 2281 files changed: 172190 ins; 47655 del; 37796 mod Patch: https://git.openjdk.org/jdk/pull/28155.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28155/head:pull/28155 PR: https://git.openjdk.org/jdk/pull/28155 From alanb at openjdk.org Tue Dec 2 16:19:22 2025 From: alanb at openjdk.org (Alan Bateman) Date: Tue, 2 Dec 2025 16:19:22 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v8] In-Reply-To: References: <4uJhQdFQQB6PBMzwbQAOry2qOwZVDQtQxsABgUzcZq8=.89dc80a2-86c7-4602-b0ff-81bb5832f121@github.com> <5LkTJ4u01K0fIFPRkCi-myrfMJ7xNZatsSs4Ig2H-dE=.dc2a9653-7c8b-45dc-8de3-2b08563df781@github.com> Message-ID: On Tue, 2 Dec 2025 15:36:46 GMT, Henry Jen wrote: >>> It might be useful to see what breaks if a JDK were built with a newline in the vendor name, I assume other things will break. >> >> Writhing the manifest entries for `jrt-fs.jar` break (header validation fails). Since the vendor populates to that jar file. > > The CSR is approved, and the one line signature is in the text. > And since other things break with newline in the vendor name, I assume that vendor name is also limited, so are we good with current implementation? > Are we suggesting to add error message when there is more than one line? I think current implementation is fine. I don't think we need to be concerned with this right now. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28155#discussion_r2581908452 From alanb at openjdk.org Tue Dec 2 16:23:51 2025 From: alanb at openjdk.org (Alan Bateman) Date: Tue, 2 Dec 2025 16:23:51 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v9] In-Reply-To: References: Message-ID: <5Z5h1NVJGWQq6HuAc1PVd0c7Vgqqd4Wgv8IYk8LFPKU=.a86cec44-774b-42ed-8683-f179d6ac2f20@github.com> On Tue, 2 Dec 2025 16:11:02 GMT, Henry Jen wrote: >> This PR include build changes from @magicus and jlink change to verify the build signature. >> >> Tested with local builds for MacOS and Linux as below shows that cross linking with same build is working while linking with different build failed with error message. >> >> ? export JAVA_HOME=./build/macosx-x86_64-server-fastdebug/images/jdk-bundle/jdk-26.jdk/Contents/Home >> >> ? java --version >> openjdk 26-internal 2026-03-17 >> OpenJDK Runtime Environment (fastdebug build 26-internal-adhoc.hjen.JDK-8347831) >> OpenJDK 64-Bit Server VM (fastdebug build 26-internal-adhoc.hjen.JDK-8347831, mixed mode, sharing) >> >> ? jlink --version >> 26-internal >> >> ? jlink --module-path ./build/linux-x86_64-server-release/images/jdk/jmods --add-modules java.base --output linux >> >> ? jlink --add-modules java.base --output macos >> >> ? jlink --module-path ~/linux/jdk-25.0.1/jmods --add-modules java.base --output linux25 >> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A >> >> ? jlink --module-path /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/jmods --add-modules java.base --output macos25 >> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A > > Henry Jen has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 10 additional commits since the last revision: > > - Merge openjdk/master > - adapt review feedbacks > - remove the extra space > - Update the error message when not finding release signature > - Treat missing release.txt as emptry release signature > - Refactoring to clarify version checking cases > - Address review feedbacks > - Use release.txt from java.base module in current and target for comparison > - JLink to check java build information > - Build changes to generate release.txt for java.base and jdk.jlink. Marked as reviewed by alanb (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28155#pullrequestreview-3531039627 From alanb at openjdk.org Tue Dec 2 16:23:53 2025 From: alanb at openjdk.org (Alan Bateman) Date: Tue, 2 Dec 2025 16:23:53 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v5] In-Reply-To: References: Message-ID: On Tue, 11 Nov 2025 17:56:18 GMT, Severin Gehwolf wrote: > I think this can be tested akin to `JLinkOptionsTest` by implementing a simple plugin that transforms the `release.txt` resource and uses `--keep-packaged-modules` and then attempts to perform a link on the resulting image. Similarly we could cover the case of `release.txt` missing by using the `--exclude-resources` plugin. Maybe we should have a follow-up issue to attempt to create a test for this. However, the bigger topic of testing the cross-linking scenario isn't really something we can do in a jtreg test. Instead it is something for "special testing", like the manual tests, as it needs builds from different platforms. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28155#issuecomment-3602889964 From jsjolen at openjdk.org Tue Dec 2 16:53:33 2025 From: jsjolen at openjdk.org (Johan =?UTF-8?B?U2rDtmxlbg==?=) Date: Tue, 2 Dec 2025 16:53:33 GMT Subject: RFR: 8372938: Fix reference to DeferredStatic in HotSpot Style Guide In-Reply-To: References: Message-ID: <7gkQ-kKU65EJKOZFPTS2rFhYyVmFwPITfVotM90xlh8=.fcb6522c-bcee-4033-9472-4def3ffa46f7@github.com> On Tue, 2 Dec 2025 14:05:01 GMT, Kim Barrett wrote: > Please review this trivial editorial fix to the HotSpot Style Guide. > JDK-8360458 changed the name of the utility class `Deferred` to > `DeferredStatic`, but forgot to update the reference to that class in the > Style Guide. Marked as reviewed by jsjolen (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28602#pullrequestreview-3531177588 From liach at openjdk.org Tue Dec 2 17:27:43 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 17:27:43 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 09:28:03 GMT, Per Minborg wrote: >> Chen Liang has updated the pull request incrementally with one additional commit since the last revision: >> >> Tweak VH usage in some classes > > src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: > >> 2034: var constant = MethodHandleImpl.isCompileConstant(vh); >> 2035: var cache = adaptedMh; >> 2036: if (constant == MethodHandleImpl.CONSTANT_YES && cache != null) { > > Rookie question: Is there multi-thread considerations here? How about visibility across threads? MethodHandle is immutable and can be safely published. So this is ok. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2582166754 From sherman at openjdk.org Tue Dec 2 18:05:52 2025 From: sherman at openjdk.org (Xueming Shen) Date: Tue, 2 Dec 2025 18:05:52 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Mon, 1 Dec 2025 23:03:17 GMT, Naoto Sato wrote: >> Xueming Shen has updated the pull request incrementally with one additional commit since the last revision: >> >> minor doc formatting update > > make/jdk/src/classes/build/tools/generatecharacter/GenerateCaseFolding.java line 79: > >> 77: // hack, hack, hack! the logic does not pick 0131. just add manually to support 'I's. >> 78: // 0049; T; 0131; # LATIN CAPITAL LETTER I >> 79: final String T_0x0131_0x49 = String.format(" entry(0x%04x, 0x%04x),\n", 0x0131, 0x49); > > The 'T' status reads (in CaseFolding.txt): > > # T: special case for uppercase I and dotted uppercase I > # - For non-Turkic languages, this mapping is normally not used. > # - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters. > # Note that the Turkic mappings do not maintain canonical equivalence without additional processing. > > Since this casefold feature is locale independent, should this `T` status be ignored? It might be helpful if we mention in the spec if we do this `T` case folding. T_0x0131_0x49 is for the table Expanded_Case_Map_Entries, which is used for the regex only. See: https://openjdk.github.io/cr/?repo=jdk&pr=26285&range=05#new-1-make/jdk/src/classes/build/tools/generatecharacter/CaseFolding.java The casefolding mapping for regex uses CTS, to match the existing behavior. We may want to do something later to "consolidate" the spec and implementation , but it's not within the scope of this change. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27628#discussion_r2582279595 From erikj at openjdk.org Tue Dec 2 18:08:02 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:08:02 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 [v3] In-Reply-To: References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: On Tue, 2 Dec 2025 12:05:32 GMT, Aleksey Shipilev wrote: >> GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. >> >> We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. >> >> Additional testing: >> - [x] GHA > > Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: > > Dang it, suffix already has ":". Also sort. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28555#pullrequestreview-3531483701 From erikj at openjdk.org Tue Dec 2 18:10:00 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:10:00 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Build changes look good. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3531491706 From erikj at openjdk.org Tue Dec 2 18:14:00 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:14:00 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: <48-Z0u1mjPdqwtl7Hm9nJKeFLvly8iF_ndADOSkFGqg=.5d15711f-c492-444e-8b4c-fa359110247b@github.com> References: <48-Z0u1mjPdqwtl7Hm9nJKeFLvly8iF_ndADOSkFGqg=.5d15711f-c492-444e-8b4c-fa359110247b@github.com> Message-ID: On Tue, 2 Dec 2025 15:43:00 GMT, Matthias Baesken wrote: >> In the error/warning messages we got we saw `/tmp/lto.o` . Not sure if the files would show up under 'make' when giving no full path with this added flag, but if so this would not be very nice; but from my observations I never saw stored files. Can we somehow reference the build-target-dir in configure/autoconf files ? > > We could set EXTRA_LDFLAGS_LTO for macos/clang and then use it later in make/common/native/Flags.gmk where we add a unique string for every lib built and also keep it away from the source dir > > > LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" > + EXTRA_LDFLAGS_LTO="-Wl,-object_path_lto," > LDFLAGS_CXX_PARTIAL_LINKING="$MACHINE_FLAG -r" > > if test "x$OPENJDK_TARGET_OS" = xlinux; then > @@ -159,6 +160,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], > # Export some intermediate variables for compatibility > LDFLAGS_CXX_JDK="$DEBUGLEVEL_LDFLAGS_JDK_ONLY" > AC_SUBST(LDFLAGS_LTO) > + AC_SUBST(EXTRA_LDFLAGS_LTO) > AC_SUBST(LDFLAGS_CXX_JDK) > AC_SUBST(LDFLAGS_CXX_PARTIAL_LINKING) > ]) > diff --git a/make/autoconf/spec.gmk.template b/make/autoconf/spec.gmk.template > index b3d58704c50..e4523a23e6e 100644 > --- a/make/autoconf/spec.gmk.template > +++ b/make/autoconf/spec.gmk.template > @@ -592,6 +592,8 @@ LDFLAGS_CXX_PARTIAL_LINKING := @LDFLAGS_CXX_PARTIAL_LINKING@ > # LDFLAGS specific to link time optimization > LDFLAGS_LTO := @LDFLAGS_LTO@ > > +EXTRA_LDFLAGS_LTO := @EXTRA_LDFLAGS_LTO@ > + > # Sometimes a different linker is needed for c++ libs > LDCXX := @LDCXX@ > # The flags for linking libstdc++ linker. > diff --git a/make/common/native/Flags.gmk b/make/common/native/Flags.gmk > index 843701cb4db..ee96dbb5d11 100644 > --- a/make/common/native/Flags.gmk > +++ b/make/common/native/Flags.gmk > @@ -229,6 +229,7 @@ define SetupLinkerFlags > # TOOLCHAIN_TYPE plus OPENJDK_TARGET_OS > ifeq ($$($1_LINK_TIME_OPTIMIZATION), true) > $1_EXTRA_LDFLAGS += $(LDFLAGS_LTO) > + $1_EXTRA_LDFLAGS += $(EXTRA_LDFLAGS_LTO)/tmp/$1.o > endif > In the error/warning messages we got we saw `/tmp/lto.o` . Not sure if the files would show up under 'make' when giving no full path with this added flag, but if so this would not be very nice; but from my observations I never saw stored files. Can we somehow reference the build-target-dir in configure/autoconf files ? I pointed this out because I observed it: $ git status On branch pull/28559 Untracked files: (use "git add ..." to include in what will be committed) make/lto.o nothing added to commit but untracked files present (use "git add" to track) Neither `/tmp/lto.o` nor `$TOPDIR/make/lto.o` are acceptable locations for output files, temporary or not, from the build process. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28559#discussion_r2582304694 From sgehwolf at openjdk.org Tue Dec 2 18:15:04 2025 From: sgehwolf at openjdk.org (Severin Gehwolf) Date: Tue, 2 Dec 2025 18:15:04 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v5] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 16:20:49 GMT, Alan Bateman wrote: > > I think this can be tested akin to `JLinkOptionsTest` by implementing a simple plugin that transforms the `release.txt` resource and uses `--keep-packaged-modules` and then attempts to perform a link on the resulting image. Similarly we could cover the case of `release.txt` missing by using the `--exclude-resources` plugin. > > Maybe we should have a follow-up issue to attempt to create a test for this. That's OK with me. Creating jtreg tests verifying that it fails if the file doesn't match/does not exist can still be done. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28155#issuecomment-3603351075 From erikj at openjdk.org Tue Dec 2 18:28:29 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:28:29 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: <48-Z0u1mjPdqwtl7Hm9nJKeFLvly8iF_ndADOSkFGqg=.5d15711f-c492-444e-8b4c-fa359110247b@github.com> Message-ID: On Tue, 2 Dec 2025 18:10:47 GMT, Erik Joelsson wrote: >> We could set EXTRA_LDFLAGS_LTO for macos/clang and then use it later in make/common/native/Flags.gmk where we add a unique string for every lib built and also keep it away from the source dir >> >> >> LDFLAGS_LTO="-flto=auto -fuse-linker-plugin -fno-strict-aliasing" >> + EXTRA_LDFLAGS_LTO="-Wl,-object_path_lto," >> LDFLAGS_CXX_PARTIAL_LINKING="$MACHINE_FLAG -r" >> >> if test "x$OPENJDK_TARGET_OS" = xlinux; then >> @@ -159,6 +160,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], >> # Export some intermediate variables for compatibility >> LDFLAGS_CXX_JDK="$DEBUGLEVEL_LDFLAGS_JDK_ONLY" >> AC_SUBST(LDFLAGS_LTO) >> + AC_SUBST(EXTRA_LDFLAGS_LTO) >> AC_SUBST(LDFLAGS_CXX_JDK) >> AC_SUBST(LDFLAGS_CXX_PARTIAL_LINKING) >> ]) >> diff --git a/make/autoconf/spec.gmk.template b/make/autoconf/spec.gmk.template >> index b3d58704c50..e4523a23e6e 100644 >> --- a/make/autoconf/spec.gmk.template >> +++ b/make/autoconf/spec.gmk.template >> @@ -592,6 +592,8 @@ LDFLAGS_CXX_PARTIAL_LINKING := @LDFLAGS_CXX_PARTIAL_LINKING@ >> # LDFLAGS specific to link time optimization >> LDFLAGS_LTO := @LDFLAGS_LTO@ >> >> +EXTRA_LDFLAGS_LTO := @EXTRA_LDFLAGS_LTO@ >> + >> # Sometimes a different linker is needed for c++ libs >> LDCXX := @LDCXX@ >> # The flags for linking libstdc++ linker. >> diff --git a/make/common/native/Flags.gmk b/make/common/native/Flags.gmk >> index 843701cb4db..ee96dbb5d11 100644 >> --- a/make/common/native/Flags.gmk >> +++ b/make/common/native/Flags.gmk >> @@ -229,6 +229,7 @@ define SetupLinkerFlags >> # TOOLCHAIN_TYPE plus OPENJDK_TARGET_OS >> ifeq ($$($1_LINK_TIME_OPTIMIZATION), true) >> $1_EXTRA_LDFLAGS += $(LDFLAGS_LTO) >> + $1_EXTRA_LDFLAGS += $(EXTRA_LDFLAGS_LTO)/tmp/$1.o >> endif > >> In the error/warning messages we got we saw `/tmp/lto.o` . Not sure if the files would show up under 'make' when giving no full path with this added flag, but if so this would not be very nice; but from my observations I never saw stored files. Can we somehow reference the build-target-dir in configure/autoconf files ? > > I pointed this out because I observed it: > > > $ git status > On branch pull/28559 > Untracked files: > (use "git add ..." to include in what will be committed) > make/lto.o > > nothing added to commit but untracked files present (use "git add" to track) > > > Neither `/tmp/lto.o` nor `$TOPDIR/make/lto.o` are acceptable locations for output files, temporary or not, from the build process. > We could set EXTRA_LDFLAGS_LTO for macos/clang and then use it later in make/common/native/Flags.gmk where we add a unique string for every lib built and also keep it away from the source dir Yes, something along these lines is needed, though I'm not sure we need to convolute this unnecessarily by defining the flag in configure. If there was ever an expectation that other toolchains would need something similar, then abstracting it out into a configure defined variable would make sense, but in this case I think keeping it simpler is preferred. Here is how I would like it solved. In Flags.gmk, inside the LINK_TIME_OPTIMIZATION conditional, check for macosx and add the flag. The filename needs to be an absolute path to the OBJECT_DIR and a unique file name based on the NAME. Also include a comment explaining why this is needed, some summary version of the note you quoted above. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28559#discussion_r2582354361 From erikj at openjdk.org Tue Dec 2 18:33:07 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:33:07 GMT Subject: RFR: 8347831: Re-examine version check when cross linking [v9] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 16:11:02 GMT, Henry Jen wrote: >> This PR include build changes from @magicus and jlink change to verify the build signature. >> >> Tested with local builds for MacOS and Linux as below shows that cross linking with same build is working while linking with different build failed with error message. >> >> ? export JAVA_HOME=./build/macosx-x86_64-server-fastdebug/images/jdk-bundle/jdk-26.jdk/Contents/Home >> >> ? java --version >> openjdk 26-internal 2026-03-17 >> OpenJDK Runtime Environment (fastdebug build 26-internal-adhoc.hjen.JDK-8347831) >> OpenJDK 64-Bit Server VM (fastdebug build 26-internal-adhoc.hjen.JDK-8347831, mixed mode, sharing) >> >> ? jlink --version >> 26-internal >> >> ? jlink --module-path ./build/linux-x86_64-server-release/images/jdk/jmods --add-modules java.base --output linux >> >> ? jlink --add-modules java.base --output macos >> >> ? jlink --module-path ~/linux/jdk-25.0.1/jmods --add-modules java.base --output linux25 >> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A >> >> ? jlink --module-path /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/jmods --add-modules java.base --output macos25 >> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A > > Henry Jen has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 10 additional commits since the last revision: > > - Merge openjdk/master > - adapt review feedbacks > - remove the extra space > - Update the error message when not finding release signature > - Treat missing release.txt as emptry release signature > - Refactoring to clarify version checking cases > - Address review feedbacks > - Use release.txt from java.base module in current and target for comparison > - JLink to check java build information > - Build changes to generate release.txt for java.base and jdk.jlink. Build change looks ok. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28155#pullrequestreview-3531592519 From sherman at openjdk.org Tue Dec 2 18:38:29 2025 From: sherman at openjdk.org (Xueming Shen) Date: Tue, 2 Dec 2025 18:38:29 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Mon, 1 Dec 2025 23:44:52 GMT, Naoto Sato wrote: >> Xueming Shen has updated the pull request incrementally with one additional commit since the last revision: >> >> minor doc formatting update > > src/java.base/share/classes/jdk/internal/lang/CaseFolding.java.template line 69: > >> 67: * | 1:2 mapping | 0002 | 0000 | xxxx | xxxx | FB02 => 0066 006C >> 68: * +---+---------+--------+---------+--------+--------+ >> 69: * | 1:3 mapping | 0003 | xxxx | xxxx | xxxx | FB03 => 0066 0066 0069 > > What if 1:2/3 mappings included non-BMP case folded forms? 1:2 should be fine, we still have enough bits available. 1:3 will be more challenging, but in theory 21-bit x 3 = 63. we still have the msb to indicate it's 3 non-bmp. That said, I assume we might simply fallback to the char/int[] mode when the 'flag' byte indicates 0004 for 1:2 non-bmp or 0006 for 1:3 non-bmp, for example. I don't think we need to worry much about the performance for those 'special' cases, if the standard does add such mappings. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27628#discussion_r2582390889 From naoto at openjdk.org Tue Dec 2 18:49:42 2025 From: naoto at openjdk.org (Naoto Sato) Date: Tue, 2 Dec 2025 18:49:42 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Tue, 25 Nov 2025 20:21:26 GMT, Xueming Shen wrote: >> ### Summary >> >> Case folding is a key operation for case-insensitive matching (e.g., string equality, regex matching), where the goal is to eliminate case distinctions without applying locale or language specific conversions. >> >> Currently, the JDK does not expose a direct API for Unicode-compliant case folding. Developers now rely on methods such as: >> >> **String.equalsIgnoreCase(String)** >> >> - Unicode-aware, locale-independent. >> - Implementation uses Character.toLowerCase(Character.toUpperCase(int)) per code point. >> - Limited: does not support 1:M mapping defined in Unicode case folding. >> >> **Character.toLowerCase(int) / Character.toUpperCase(int)** >> >> - Locale-independent, single code point only. >> - No support for 1:M mappings. >> >> **String.toLowerCase(Locale.ROOT) / String.toUpperCase(Locale.ROOT)** >> >> - Based on Unicode SpecialCasing.txt, supports 1:M mappings. >> - Intended primarily for presentation/display, not structural case-insensitive matching. >> - Requires full string conversion before comparison, which is less efficient and not intended for structural matching. >> >> **1:M mapping example, U+00DF (?)** >> >> - String.toUpperCase(Locale.ROOT, "?") ? "SS" >> - Case folding produces "ss", matching Unicode caseless comparison rules. >> >> >> jshell> "\u00df".equalsIgnoreCase("ss") >> $22 ==> false >> >> jshell> "\u00df".toUpperCase(Locale.ROOT).toLowerCase(Locale.ROOT).equals("ss") >> $24 ==> true >> >> >> ### Motivation & Direction >> >> Add Unicode standard-compliant case-less comparison methods to the String class, enabling & improving reliable and efficient Unicode-aware/compliant case-insensitive matching. >> >> - Unicode-compliant **full** case folding. >> - Simpler, stable and more efficient case-less matching without workarounds. >> - Brings Java's string comparison handling in line with other programming languages/libraries. >> >> This PR proposes to introduce the following comparison methods in `String` class >> >> - boolean equalsFoldCase(String anotherString) >> - int compareToFoldCase(String anotherString) >> - Comparator UNICODE_CASEFOLD_ORDER >> >> These methods are intended to be the preferred choice when Unicode-compliant case-less matching is required. >> >> *Note: An early draft also proposed a String.toCaseFold() method returning a new case-folded string. >> However, during review this was considered error-prone, as the resulting string could easily be mistaken for a general transformation like toLowerCase() and then pass... > > Xueming Shen has updated the pull request incrementally with one additional commit since the last revision: > > minor doc formatting update LGTM ------------- Marked as reviewed by naoto (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/27628#pullrequestreview-3531664719 From naoto at openjdk.org Tue Dec 2 18:49:44 2025 From: naoto at openjdk.org (Naoto Sato) Date: Tue, 2 Dec 2025 18:49:44 GMT Subject: RFR: 8365675: Add String Unicode Case-Folding Support [v11] In-Reply-To: References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Tue, 2 Dec 2025 18:35:40 GMT, Xueming Shen wrote: >> src/java.base/share/classes/jdk/internal/lang/CaseFolding.java.template line 69: >> >>> 67: * | 1:2 mapping | 0002 | 0000 | xxxx | xxxx | FB02 => 0066 006C >>> 68: * +---+---------+--------+---------+--------+--------+ >>> 69: * | 1:3 mapping | 0003 | xxxx | xxxx | xxxx | FB03 => 0066 0066 0069 >> >> What if 1:2/3 mappings included non-BMP case folded forms? > > 1:2 should be fine, we still have enough bits available. 1:3 will be more challenging, but in theory 21-bit x 3 = 63. we still have the msb to indicate it's 3 non-bmp. That said, I assume we might simply fallback to the char/int[] mode when the 'flag' byte indicates 0004 for 1:2 non-bmp or 0006 for 1:3 non-bmp, for example. I don't think we need to worry much about the performance for those 'special' cases, if the standard does add such mappings. Yeah, it is non-existent as of now, so the performance would not be an issue even if those cases were introduced in the future. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27628#discussion_r2582428584 From sherman at openjdk.org Tue Dec 2 19:50:49 2025 From: sherman at openjdk.org (Xueming Shen) Date: Tue, 2 Dec 2025 19:50:49 GMT Subject: Integrated: 8365675: Add String Unicode Case-Folding Support In-Reply-To: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> References: <3tMaotmLtDYKP4cADaC8DEISDKEJEaWHXr2dYDtZXY8=.22820982-951a-4e91-96a0-d21397c8494d@github.com> Message-ID: On Fri, 3 Oct 2025 19:56:22 GMT, Xueming Shen wrote: > ### Summary > > Case folding is a key operation for case-insensitive matching (e.g., string equality, regex matching), where the goal is to eliminate case distinctions without applying locale or language specific conversions. > > Currently, the JDK does not expose a direct API for Unicode-compliant case folding. Developers now rely on methods such as: > > **String.equalsIgnoreCase(String)** > > - Unicode-aware, locale-independent. > - Implementation uses Character.toLowerCase(Character.toUpperCase(int)) per code point. > - Limited: does not support 1:M mapping defined in Unicode case folding. > > **Character.toLowerCase(int) / Character.toUpperCase(int)** > > - Locale-independent, single code point only. > - No support for 1:M mappings. > > **String.toLowerCase(Locale.ROOT) / String.toUpperCase(Locale.ROOT)** > > - Based on Unicode SpecialCasing.txt, supports 1:M mappings. > - Intended primarily for presentation/display, not structural case-insensitive matching. > - Requires full string conversion before comparison, which is less efficient and not intended for structural matching. > > **1:M mapping example, U+00DF (?)** > > - String.toUpperCase(Locale.ROOT, "?") ? "SS" > - Case folding produces "ss", matching Unicode caseless comparison rules. > > > jshell> "\u00df".equalsIgnoreCase("ss") > $22 ==> false > > jshell> "\u00df".toUpperCase(Locale.ROOT).toLowerCase(Locale.ROOT).equals("ss") > $24 ==> true > > > ### Motivation & Direction > > Add Unicode standard-compliant case-less comparison methods to the String class, enabling & improving reliable and efficient Unicode-aware/compliant case-insensitive matching. > > - Unicode-compliant **full** case folding. > - Simpler, stable and more efficient case-less matching without workarounds. > - Brings Java's string comparison handling in line with other programming languages/libraries. > > This PR proposes to introduce the following comparison methods in `String` class > > - boolean equalsFoldCase(String anotherString) > - int compareToFoldCase(String anotherString) > - Comparator UNICODE_CASEFOLD_ORDER > > These methods are intended to be the preferred choice when Unicode-compliant case-less matching is required. > > *Note: An early draft also proposed a String.toCaseFold() method returning a new case-folded string. > However, during review this was considered error-prone, as the resulting string could easily be mistaken for a general transformation like toLowerCase() and then passed into APIs where case-folding semantics are not appropriate. > > ### The New API > > See CSR https://bugs.openjd... This pull request has now been integrated. Changeset: b97ed667 Author: Xueming Shen URL: https://git.openjdk.org/jdk/commit/b97ed667db0bd527461b2b385af3001f53d71c19 Stats: 1452 lines in 13 files changed: 1240 ins; 207 del; 5 mod 8365675: Add String Unicode Case-Folding Support Reviewed-by: rriggs, naoto, ihse ------------- PR: https://git.openjdk.org/jdk/pull/27628 From darcy at openjdk.org Tue Dec 2 20:03:18 2025 From: darcy at openjdk.org (Joe Darcy) Date: Tue, 2 Dec 2025 20:03:18 GMT Subject: RFR: 8372940: Update symbol data script references In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:05:51 GMT, Nizar Benalla wrote: > Update path to the generate symbols script, and expand the start of release doc. Looks fine. ------------- Marked as reviewed by darcy (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28606#pullrequestreview-3531898375 From serb at openjdk.org Tue Dec 2 20:09:57 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 2 Dec 2025 20:09:57 GMT Subject: RFR: 8371893: [macOS] use dead_strip linker option to reduce binary size [v5] In-Reply-To: References: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> Message-ID: <_m-3bjxRDcMxOBa8umyAmvqWzz7VZYMZ8RKVwtaoWPU=.91da4b9b-84b0-47ff-9bf3-93c07dcfd79d@github.com> On Tue, 25 Nov 2025 13:12:06 GMT, Matthias Baesken wrote: >> The dead_strip linker option on macOS removes functions and data that are unreachable by the entry point or exported symbols. >> Setting it can reduce the size of some binaries we generate quite a lot, for example (product build, Xcode 15 is used) : >> (before -> after setting the option) >> >> 1.4M -> 1.1M images/jdk/lib/libfontmanager.dylib >> 264K -> 248K images/jdk/lib/libjavajpeg.dylib >> 152K -> 132K images/jdk/lib/libjli.dylib >> 388K -> 296K images/jdk/lib/liblcms.dylib >> 164K -> 128K images/jdk/lib/libzip.dylib >> >> >> and libjvm : >> >> 20M -> 18M images/jdk/lib/server/libjvm.dylib >> 146M -> 137M images/jdk/lib/server/libjvm.dylib.dSYM > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Use dead_strip on macOS arrch64 AND x86_64 Marked as reviewed by serb (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28319#pullrequestreview-3531919314 From mbaesken at openjdk.org Tue Dec 2 20:09:59 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Tue, 2 Dec 2025 20:09:59 GMT Subject: RFR: 8371893: [macOS] use dead_strip linker option to reduce binary size [v5] In-Reply-To: References: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> <5xGU22WgiZiCJGUU3G3e1-SAty0aXnjzEbj3nx30y5c=.337ef8d2-e79e-477f-916c-a344079370a9@github.com> Message-ID: On Wed, 26 Nov 2025 11:17:59 GMT, Matthias Baesken wrote: > I'll run UI the tests for this. Are there some (hopefully good) results from your runs ? Would prefer to get some feedback from you before integrating. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28319#issuecomment-3596355336 From serb at openjdk.org Tue Dec 2 20:10:00 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 2 Dec 2025 20:10:00 GMT Subject: RFR: 8371893: [macOS] use dead_strip linker option to reduce binary size [v5] In-Reply-To: References: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> <5xGU22WgiZiCJGUU3G3e1-SAty0aXnjzEbj3nx30y5c=.337ef8d2-e79e-477f-916c-a344079370a9@github.com> Message-ID: On Mon, 1 Dec 2025 12:39:58 GMT, Matthias Baesken wrote: > Are there some (hopefully good) results from your runs ? Would prefer to get some feedback from you before integrating. I did not find any issues in the jtreg desktop tests (headful/headless). ------------- PR Comment: https://git.openjdk.org/jdk/pull/28319#issuecomment-3603763411 From vlivanov at openjdk.org Tue Dec 2 20:21:29 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 20:21:29 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> Message-ID: <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0rbfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> On Tue, 2 Dec 2025 02:51:57 GMT, Chen Liang wrote: >> So, it seems like what you are trying to achieve is a 1-1 mapping from `AccessDescriptor` to `vh` through `adaptedMh`. So, once `cache != null` you can trust that it corresponds to the `vh` instance passed as a constant. But cache pollution can easily break the invariant, so you try to eliminate the pollution by avoiding cache updates when vh is not constant. Do I get it right? > > No. The avoidance of cache update simply trims down the generated code by throwing away the meaningless cache update. > > The access to cache is already safeguarded by `constant == MethodHandleImpl.CONSTANT_YES`. I should have moved `var cache = adaptedMh;` into the if block of `constant == CONSTANT_YES`. I still find it confusing, especially tri-state logic part. For background, `isCompileConstant` was introduced as part of LF sharing effort to get rid of Java-level profiling in optimized code. The pattern is was designed for was: if (isCompileConstant(...)) { return ...; } else { ... // do some extra work (either in interpreter, C1, or not-fully-optimized version in C2) } In this patch, you don't follow that pattern and aadd new state (`CONSTANT_PENDING`) to distinguish interpreter/C1 from C2. What's the motivation? Why do you want to avoid cache updates coming from C2-generated code? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2582647097 From vlivanov at openjdk.org Tue Dec 2 20:21:33 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 20:21:33 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Tweak VH usage in some classes src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2042: > 2040: // This is still a hot path if vh is not constant - in this case, > 2041: // asType is the bottleneck for constant folding, unfortunately > 2042: var result = vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker); `mode` and `symbolicMethodTypeInvoker` are part of `AccessDescriptor` while `vh` comes as an argument. What guarantees that a cached adapter is compatible with `vh` observed during subsequent calls? It means that `vh` shape stays exactly the same shape. Is it correct? Would be good to have it validated with asserts. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2582661917 From nbenalla at openjdk.org Tue Dec 2 20:55:30 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 20:55:30 GMT Subject: Integrated: 8372940: Update symbol data script references In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:05:51 GMT, Nizar Benalla wrote: > Update path to the generate symbols script, and expand the start of release doc. This pull request has now been integrated. Changeset: 0fe1ffdc Author: Nizar Benalla URL: https://git.openjdk.org/jdk/commit/0fe1ffdc485e742eb3937f9fb26d14d6a11a76c4 Stats: 3 lines in 3 files changed: 0 ins; 0 del; 3 mod 8372940: Update symbol data script references Reviewed-by: liach, darcy ------------- PR: https://git.openjdk.org/jdk/pull/28606 From liach at openjdk.org Tue Dec 2 22:06:49 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 22:06:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 20:18:19 GMT, Vladimir Ivanov wrote: >> Chen Liang has updated the pull request incrementally with one additional commit since the last revision: >> >> Tweak VH usage in some classes > > src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2042: > >> 2040: // This is still a hot path if vh is not constant - in this case, >> 2041: // asType is the bottleneck for constant folding, unfortunately >> 2042: var result = vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker); > > `mode` and `symbolicMethodTypeInvoker` are part of `AccessDescriptor` while `vh` comes as an argument. What guarantees that a cached adapter is compatible with `vh` observed during subsequent calls? It means that `vh` shape stays exactly the same shape. Is it correct? Would be good to have it validated with asserts. I am assuming that the previous `vh` observed is compatible with future ones if compiler can fold the `vh` into a constant. If it is not, we can drop the updates to the cache field in the C2 compiled slow code. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2582922472 From liach at openjdk.org Tue Dec 2 22:10:31 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 22:10:31 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0rbfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> Message-ID: On Tue, 2 Dec 2025 20:12:12 GMT, Vladimir Ivanov wrote: >> No. The avoidance of cache update simply trims down the generated code by throwing away the meaningless cache update. >> >> The access to cache is already safeguarded by `constant == MethodHandleImpl.CONSTANT_YES`. I should have moved `var cache = adaptedMh;` into the if block of `constant == CONSTANT_YES`. > > I still find it confusing, especially tri-state logic part. > > For background, `isCompileConstant` was introduced as part of LF sharing effort to get rid of Java-level profiling in optimized code. The pattern is was designed for was: > > if (isCompileConstant(...)) { > return ...; > } else { > ... // do some extra work (either in interpreter, C1, or not-fully-optimized version in C2) > } > > > In this patch, you don't follow that pattern and aadd new state (`CONSTANT_PENDING`) to distinguish interpreter/C1 from C2. What's the motivation? Why do you want to avoid cache updates coming from C2-generated code? I am assuming that if C2 determines this `vh` is not a constant, we can drop it. Is that a right way to move along, or could C2 transition from "not a constant" to "is a constant" during the phases? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2582931449 From henryjen at openjdk.org Tue Dec 2 22:15:48 2025 From: henryjen at openjdk.org (Henry Jen) Date: Tue, 2 Dec 2025 22:15:48 GMT Subject: Integrated: 8347831: Re-examine version check when cross linking In-Reply-To: References: Message-ID: <7D0ypC5sLcCaqWu0xrxBdbvDPF6pUOzKUmEZZaQh9eQ=.6b71d1dc-2147-41ed-81c2-e33a98620140@github.com> On Wed, 5 Nov 2025 17:41:44 GMT, Henry Jen wrote: > This PR include build changes from @magicus and jlink change to verify the build signature. > > Tested with local builds for MacOS and Linux as below shows that cross linking with same build is working while linking with different build failed with error message. > > ? export JAVA_HOME=./build/macosx-x86_64-server-fastdebug/images/jdk-bundle/jdk-26.jdk/Contents/Home > > ? java --version > openjdk 26-internal 2026-03-17 > OpenJDK Runtime Environment (fastdebug build 26-internal-adhoc.hjen.JDK-8347831) > OpenJDK 64-Bit Server VM (fastdebug build 26-internal-adhoc.hjen.JDK-8347831, mixed mode, sharing) > > ? jlink --version > 26-internal > > ? jlink --module-path ./build/linux-x86_64-server-release/images/jdk/jmods --add-modules java.base --output linux > > ? jlink --add-modules java.base --output macos > > ? jlink --module-path ~/linux/jdk-25.0.1/jmods --add-modules java.base --output linux25 > Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A > > ? jlink --module-path /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/jmods --add-modules java.base --output macos25 > Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A This pull request has now been integrated. Changeset: 8f0cb57e Author: Henry Jen URL: https://git.openjdk.org/jdk/commit/8f0cb57e439df87dee4c0ba7bbff0b981ebc3541 Stats: 85 lines in 5 files changed: 60 ins; 8 del; 17 mod 8347831: Re-examine version check when cross linking Co-authored-by: Magnus Ihse Bursie Reviewed-by: erikj, alanb ------------- PR: https://git.openjdk.org/jdk/pull/28155 From erikj at openjdk.org Tue Dec 2 22:19:22 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 22:19:22 GMT Subject: RFR: 8372943: Restore --with-tools-dir Message-ID: In [JDK-8344030](https://bugs.openjdk.org/browse/JDK-8344030) the configure option --with-tools-dir was deprecated. There are however still references to it in the configure script. Specifically toolchain_microsoft is still using the variable it was setting up, and there are error messages telling the user to try using it. Digging further into this, the way we use `--with-tools-dir` to find Visual Studio is quite convoluted. It used to be that you would point to something like ".../Community/VC/bin" or ".../Community/VC/bin/amd64", which would make sense as those were directories with the compiler executables. Configure would then walk up two or three levels to find the root of the Visual Studio installation. Modern Visual Studio installations have a much deeper and more complex directory structure, so this doesn't work as it used to. However, because the configure logic just checks two and three levels above the directory given to `--with-tools-dir`, you can actually supply any existing directory inside the installation at the appropriate depth, e.g. ".../Community/VC/Auxiliary/Build". This really isn't a great situation and the proper fix would be some kind of overhaul, probably a new explicit configure parameter pointing to the Visual Studio root to use. However, I don't have the time to invest in such a big rewrite at this time, so I will limit this bug to just restoring --with-tools-dir for it's current functionality on Windows, with a help text that describes what it currently does. This will at least let users currently relying on this option to continue building with Visual Studio in a nonstandard location. ------------- Commit messages: - JDK-8372943 Changes: https://git.openjdk.org/jdk/pull/28618/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28618&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372943 Stats: 6 lines in 1 file changed: 5 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28618.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28618/head:pull/28618 PR: https://git.openjdk.org/jdk/pull/28618 From erikj at openjdk.org Tue Dec 2 22:28:48 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 22:28:48 GMT Subject: RFR: 8372705: The riscv-64 cross-compilation build is failing in the CI Message-ID: In [JDK-8371626](https://bugs.openjdk.org/browse/JDK-8371626) a new linker flag was introduced that only works with the Gold linker. The way the flag is added is not compatible with cross compilation configurations where the "build JDK" is built on the fly. In such a configuration, we are setting up two distinct toolchains, the TARGET (basically the regular one, with no variable prefixes) and the BUILD (an extra toolchain used to compile for the build platform, variables have the prefix "BUILD_"). This patch adjusts the adding of this linker flag so that it's conditionally added to each of the BUILD and TARGET linker flags depending on if the corresponding toolchain is using the Gold linker. I have verified with local builds, both native and cross, both that the builds succeed and that the expected flag is added when it should be. I've also run the full set of automated builds in our internal build and test system. ------------- Commit messages: - JDK-8372705 Changes: https://git.openjdk.org/jdk/pull/28619/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28619&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372705 Stats: 15 lines in 2 files changed: 7 ins; 5 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28619.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28619/head:pull/28619 PR: https://git.openjdk.org/jdk/pull/28619 From liach at openjdk.org Tue Dec 2 23:20:12 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 23:20:12 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v4] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision: - Rollback getAndAdd for now - Redundant change - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Stage - Review tweaks - Tweak VH usage in some classes - Logical fallacy - 8160821 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/7bcdcbf3..d49ad129 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=02-03 Stats: 4382 lines in 98 files changed: 2923 ins; 688 del; 771 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Tue Dec 2 23:30:13 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 23:30:13 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v4] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 23:20:12 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision: > > - Rollback getAndAdd for now > - Redundant change > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Stage > - Review tweaks > - Tweak VH usage in some classes > - Logical fallacy > - 8160821 After consulting with @iwanowww, I realized the non-constant status cannot be determined, that the C2 compiled method can even transition from 0 to 1, so I am simplifying this code to only handle the constant case. It seems the getAndAdd IR test no longer fails with this change, and I removed a lot of other redundant changes. I updated the VarHandleExact benchmark added by @JornVernee, and added a case of dropping return values by changing access mode to `getAndAdd` consistently. Now they have the following performance numbers: Benchmark Mode Cnt Score Error Units VarHandleExact.exact_exactInvocation avgt 30 3.843 ? 0.062 ns/op VarHandleExact.generic_exactInvocation avgt 30 3.797 ? 0.049 ns/op VarHandleExact.generic_genericInvocation avgt 30 3.757 ? 0.034 ns/op VarHandleExact.generic_returnDroppingInvocation avgt 30 3.754 ? 0.026 ns/op ------------- PR Comment: https://git.openjdk.org/jdk/pull/28585#issuecomment-3604377750 From dholmes at openjdk.org Wed Dec 3 00:38:24 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 3 Dec 2025 00:38:24 GMT Subject: RFR: 8372705: The riscv-64 cross-compilation build is failing in the CI In-Reply-To: References: Message-ID: <-zUauqrmhJcQHpX_HzFOPG2faiLzrThTgDAQ396jW3I=.dafb63fa-03f4-4c35-b250-618313ab4869@github.com> On Tue, 2 Dec 2025 22:18:06 GMT, Erik Joelsson wrote: > In [JDK-8371626](https://bugs.openjdk.org/browse/JDK-8371626) a new linker flag was introduced that only works with the Gold linker. The way the flag is added is not compatible with cross compilation configurations where the "build JDK" is built on the fly. In such a configuration, we are setting up two distinct toolchains, the TARGET (basically the regular one, with no variable prefixes) and the BUILD (an extra toolchain used to compile for the build platform, variables have the prefix "BUILD_"). > > This patch adjusts the adding of this linker flag so that it's conditionally added to each of the BUILD and TARGET linker flags depending on if the corresponding toolchain is using the Gold linker. > > I have verified with local builds, both native and cross, both that the builds succeed and that the expected flag is added when it should be. I've also run the full set of automated builds in our internal build and test system. Looks good to me. Thanks for the fix @erikj79 ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28619#pullrequestreview-3532668475 From mikael at openjdk.org Wed Dec 3 00:48:44 2025 From: mikael at openjdk.org (Mikael Vidstedt) Date: Wed, 3 Dec 2025 00:48:44 GMT Subject: RFR: 8372943: Restore --with-tools-dir In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 22:07:05 GMT, Erik Joelsson wrote: > In [JDK-8344030](https://bugs.openjdk.org/browse/JDK-8344030) the configure option --with-tools-dir was deprecated. There are however still references to it in the configure script. Specifically toolchain_microsoft is still using the variable it was setting up, and there are error messages telling the user to try using it. > > Digging further into this, the way we use `--with-tools-dir` to find Visual Studio is quite convoluted. It used to be that you would point to something like ".../Community/VC/bin" or ".../Community/VC/bin/amd64", which would make sense as those were directories with the compiler executables. Configure would then walk up two or three levels to find the root of the Visual Studio installation. Modern Visual Studio installations have a much deeper and more complex directory structure, so this doesn't work as it used to. However, because the configure logic just checks two and three levels above the directory given to `--with-tools-dir`, you can actually supply any existing directory inside the installation at the appropriate depth, e.g. ".../Community/VC/Auxiliary/Build". > > This really isn't a great situation and the proper fix would be some kind of overhaul, probably a new explicit configure parameter pointing to the Visual Studio root to use. However, I don't have the time to invest in such a big rewrite at this time, so I will limit this bug to just restoring --with-tools-dir for it's current functionality on Windows, with a help text that describes what it currently does. This will at least let users currently relying on this option to continue building with Visual Studio in a nonstandard location. Marked as reviewed by mikael (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28618#pullrequestreview-3532691382 From darcy at openjdk.org Wed Dec 3 01:34:19 2025 From: darcy at openjdk.org (Joe Darcy) Date: Wed, 3 Dec 2025 01:34:19 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions src/java.compiler/share/classes/javax/lang/model/SourceVersion.java line 483: > 481: */ > 482: RELEASE_26, > 483: At the top of the file where the per-release changes are all listed, please add a "27: tbd" entry after syncing in the changes from mainline which add an entry for JDK 26. (Also, as part of the sync please fix the "in in" stutter typo in the 26 entry. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2583333814 From vlivanov at openjdk.org Wed Dec 3 01:42:45 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Wed, 3 Dec 2025 01:42:45 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> Message-ID: <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> On Tue, 2 Dec 2025 22:08:20 GMT, Chen Liang wrote: >> I still find it confusing, especially tri-state logic part. >> >> For background, `isCompileConstant` was introduced as part of LF sharing effort to get rid of Java-level profiling in optimized code. The pattern is was designed for was: >> >> if (isCompileConstant(...)) { >> return ...; >> } else { >> ... // do some extra work (either in interpreter, C1, or not-fully-optimized version in C2) >> } >> >> >> In this patch, you don't follow that pattern and aadd new state (`CONSTANT_PENDING`) to distinguish interpreter/C1 from C2. What's the motivation? Why do you want to avoid cache updates coming from C2-generated code? > > I am assuming that if C2 determines this `vh` is not a constant, we can drop it. Is that a right way to move along, or could C2 transition from "not a constant" to "is a constant" during the phases? Sorry, I still don't understand how it is intended to work. Why does `MethodHandleImpl.isCompileConstant(vh) == true` imply that the cached value is compatible with the constant `vh`? // Keep capturing - vh may suddenly get promoted to a constant by C2 Capturing happens outside compiler thread. It is not affected by C2 (except when it completely prunes the whole block). So, either any captured adaptation is valid/compatible or there's a concurrency issue when C2 kicks in and there's a concurrent cache update happening with incompatible version. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2583346750 From vlivanov at openjdk.org Wed Dec 3 01:56:27 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Wed, 3 Dec 2025 01:56:27 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v4] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 23:20:12 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision: > > - Rollback getAndAdd for now > - Redundant change > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Stage > - Review tweaks > - Tweak VH usage in some classes > - Logical fallacy > - 8160821 test/micro/org/openjdk/bench/java/lang/invoke/VarHandleExact.java line 81: > 79: > 80: @Benchmark > 81: public void generic_returnDroppingInvocation() { What about "all-generic" case (` { generic.getAndAdd(data, 42); }`)? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2583363907 From tbell at openjdk.org Wed Dec 3 02:04:43 2025 From: tbell at openjdk.org (Tim Bell) Date: Wed, 3 Dec 2025 02:04:43 GMT Subject: RFR: 8372943: Restore --with-tools-dir In-Reply-To: References: Message-ID: <7TnbsdsBLJQ3fvzVqn7fNJbE6nKc1Uvr8yxsXNSCRtY=.fe817da1-dc39-4d9b-b6e3-e09f5a323465@github.com> On Tue, 2 Dec 2025 22:07:05 GMT, Erik Joelsson wrote: > In [JDK-8344030](https://bugs.openjdk.org/browse/JDK-8344030) the configure option --with-tools-dir was deprecated. There are however still references to it in the configure script. Specifically toolchain_microsoft is still using the variable it was setting up, and there are error messages telling the user to try using it. > > Digging further into this, the way we use `--with-tools-dir` to find Visual Studio is quite convoluted. It used to be that you would point to something like ".../Community/VC/bin" or ".../Community/VC/bin/amd64", which would make sense as those were directories with the compiler executables. Configure would then walk up two or three levels to find the root of the Visual Studio installation. Modern Visual Studio installations have a much deeper and more complex directory structure, so this doesn't work as it used to. However, because the configure logic just checks two and three levels above the directory given to `--with-tools-dir`, you can actually supply any existing directory inside the installation at the appropriate depth, e.g. ".../Community/VC/Auxiliary/Build". > > This really isn't a great situation and the proper fix would be some kind of overhaul, probably a new explicit configure parameter pointing to the Visual Studio root to use. However, I don't have the time to invest in such a big rewrite at this time, so I will limit this bug to just restoring --with-tools-dir for it's current functionality on Windows, with a help text that describes what it currently does. This will at least let users currently relying on this option to continue building with Visual Studio in a nonstandard location. Looks good ------------- Marked as reviewed by tbell (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28618#pullrequestreview-3532851385 From iris at openjdk.org Wed Dec 3 02:12:00 2025 From: iris at openjdk.org (Iris Clark) Date: Wed, 3 Dec 2025 02:12:00 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3532863059 From dholmes at openjdk.org Wed Dec 3 04:12:59 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 3 Dec 2025 04:12:59 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Hotspot changes trivially fine. ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3533103238 From liach at openjdk.org Wed Dec 3 04:13:55 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 04:13:55 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> Message-ID: On Wed, 3 Dec 2025 01:40:29 GMT, Vladimir Ivanov wrote: > any captured adaptation is valid/compatible Yes, if `vh` is a constant, any captured adaptation from `vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker)` is valid/compatible. For thread safety, MethodHandle supports safe publication, so I think we are fine publishing this way. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2583556067 From liach at openjdk.org Wed Dec 3 04:13:59 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 04:13:59 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v4] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 01:53:13 GMT, Vladimir Ivanov wrote: >> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision: >> >> - Rollback getAndAdd for now >> - Redundant change >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Stage >> - Review tweaks >> - Tweak VH usage in some classes >> - Logical fallacy >> - 8160821 > > test/micro/org/openjdk/bench/java/lang/invoke/VarHandleExact.java line 81: > >> 79: >> 80: @Benchmark >> 81: public void generic_returnDroppingInvocation() { > > What about "all-generic" case (` { generic.getAndAdd(data, 42); }`)? I can change the `generic_genericInvocation` to an all-generic case. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2583556794 From jpai at openjdk.org Wed Dec 3 05:32:56 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Wed, 3 Dec 2025 05:32:56 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 12:41:57 GMT, Jaikiran Pai wrote: > I'll run this PR in our CI and see how it goes. I'll update here once I have the results. I haven't yet run this in our CI given that the changes are currently being discussed. I'll run it once the changes settle down. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28559#issuecomment-3605152087 From jdv at openjdk.org Wed Dec 3 05:47:58 2025 From: jdv at openjdk.org (Jayathirth D V) Date: Wed, 3 Dec 2025 05:47:58 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng In-Reply-To: References: Message-ID: On Fri, 14 Nov 2025 14:48:14 GMT, Kurt Miller wrote: > When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: > > `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` > > This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. Code change looks good to me. There is only one minor input about updating a comment. I have given full client test run with this change. make/modules/java.desktop/lib/ClientLibraries.gmk line 167: > 165: ifeq ($(USE_EXTERNAL_LIBPNG), false) > 166: LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng > 167: LIBSPLASHSCREEN_CFLAGS += -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 I think we can move these flags which are not specific to any OS/Architecture to src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h itself. But it should be handled in follow-up task not under this bug. Filed https://bugs.openjdk.org/browse/JDK-8372979 for the same. make/modules/java.desktop/lib/ClientLibraries.gmk line 174: > 172: endif > 173: > 174: # The external libpng submitted in the jdk is a reduced version I think this comment should start with "The libpng bundled with jdk". Mentioning "external" at this level doesn't seem right. Since we are touching this part we can update the comment. ------------- PR Review: https://git.openjdk.org/jdk/pull/28324#pullrequestreview-3533249426 PR Review Comment: https://git.openjdk.org/jdk/pull/28324#discussion_r2583689158 PR Review Comment: https://git.openjdk.org/jdk/pull/28324#discussion_r2583697212 From mbaesken at openjdk.org Wed Dec 3 08:09:12 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 3 Dec 2025 08:09:12 GMT Subject: RFR: 8371893: [macOS] use dead_strip linker option to reduce binary size [v5] In-Reply-To: References: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> Message-ID: On Tue, 25 Nov 2025 13:12:06 GMT, Matthias Baesken wrote: >> The dead_strip linker option on macOS removes functions and data that are unreachable by the entry point or exported symbols. >> Setting it can reduce the size of some binaries we generate quite a lot, for example (product build, Xcode 15 is used) : >> (before -> after setting the option) >> >> 1.4M -> 1.1M images/jdk/lib/libfontmanager.dylib >> 264K -> 248K images/jdk/lib/libjavajpeg.dylib >> 152K -> 132K images/jdk/lib/libjli.dylib >> 388K -> 296K images/jdk/lib/liblcms.dylib >> 164K -> 128K images/jdk/lib/libzip.dylib >> >> >> and libjvm : >> >> 20M -> 18M images/jdk/lib/server/libjvm.dylib >> 146M -> 137M images/jdk/lib/server/libjvm.dylib.dSYM > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Use dead_strip on macOS arrch64 AND x86_64 Thanks for testing ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28319#issuecomment-3605564159 From mbaesken at openjdk.org Wed Dec 3 08:09:13 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 3 Dec 2025 08:09:13 GMT Subject: Integrated: 8371893: [macOS] use dead_strip linker option to reduce binary size In-Reply-To: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> References: <5GKe55IFkJgBmku-Y-X4mcoy0V43x-ZXBzwb7EbwqTU=.23fe4819-b951-4364-a7b5-315e2b6d5824@github.com> Message-ID: <68YkLbtPCCMXMUfLNYA7pIL4eP7ZqOWno0eOeMo7W6s=.bf818f36-049f-4cb4-8ac0-d0b83776dec7@github.com> On Fri, 14 Nov 2025 11:25:05 GMT, Matthias Baesken wrote: > The dead_strip linker option on macOS removes functions and data that are unreachable by the entry point or exported symbols. > Setting it can reduce the size of some binaries we generate quite a lot, for example (product build, Xcode 15 is used) : > (before -> after setting the option) > > 1.4M -> 1.1M images/jdk/lib/libfontmanager.dylib > 264K -> 248K images/jdk/lib/libjavajpeg.dylib > 152K -> 132K images/jdk/lib/libjli.dylib > 388K -> 296K images/jdk/lib/liblcms.dylib > 164K -> 128K images/jdk/lib/libzip.dylib > > > and libjvm : > > 20M -> 18M images/jdk/lib/server/libjvm.dylib > 146M -> 137M images/jdk/lib/server/libjvm.dylib.dSYM This pull request has now been integrated. Changeset: 8f3d0ade Author: Matthias Baesken URL: https://git.openjdk.org/jdk/commit/8f3d0ade11ddb45bb1719b6818e1b51df237a59b Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod 8371893: [macOS] use dead_strip linker option to reduce binary size Reviewed-by: erikj, lucy, serb ------------- PR: https://git.openjdk.org/jdk/pull/28319 From clanger at openjdk.org Wed Dec 3 08:57:57 2025 From: clanger at openjdk.org (Christoph Langer) Date: Wed, 3 Dec 2025 08:57:57 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v6] In-Reply-To: References: <7xjbY7Wkdo7ImiFeTdjUWgYkB-7155QLLxtZ13M3-Io=.d86b647e-6335-43ea-bf1c-ccd2113e74dd@github.com> Message-ID: On Mon, 1 Dec 2025 15:17:13 GMT, Erik Joelsson wrote: >> Christoph Langer has updated the pull request incrementally with two additional commits since the last revision: >> >> - Cleanup comment >> - Fix pdb filtering for JMODs build > > make/CreateJmods.gmk line 72: > >> 70: DEST := $(LIBS_DIR_FILTERED), \ >> 71: FILES := $(FILES_LIBS), \ >> 72: NAME_MACRO := rename_stripped \ > > These trailing commas were deliberate and are part of the [Code Conventions for the Build System](https://openjdk.org/groups/build/doc/code-conventions.html) (17, though it's not very clearly stated). ok, fixed. > make/Images.gmk line 313: > >> 311: $(call SetupCopyStrippedDebuginfo,JDK) >> 312: $(call SetupCopyStrippedDebuginfo,JRE) >> 313: endif > > I might be missing something, but why is this needed? Shouldn't the public pdbs already be part of the jmods in this case and so would get linked into the image by jlink? You are right. And this seems to work with linkable runtime as well. So I removed that part. > make/Images.gmk line 322: > >> 320: $(eval DBGFILES := $(if $(filter true+public,$(call isTargetOs,windows)+$(SHIP_DEBUG_SYMBOLS)), \ >> 321: $(filter-out %.stripped.pdb,$(DBGFILES)),$(DBGFILES)) \ >> 322: ) \ > > I think I would use lower case for `DBGFILES` to signify a local variable and reduce risk of clashing with any other variable in the current context. Done. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2584191011 PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2584193678 PR Review Comment: https://git.openjdk.org/jdk/pull/24012#discussion_r2584195087 From shade at openjdk.org Wed Dec 3 09:02:45 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 3 Dec 2025 09:02:45 GMT Subject: RFR: 8372943: Restore --with-tools-dir In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 22:07:05 GMT, Erik Joelsson wrote: > In [JDK-8344030](https://bugs.openjdk.org/browse/JDK-8344030) the configure option --with-tools-dir was deprecated. There are however still references to it in the configure script. Specifically toolchain_microsoft is still using the variable it was setting up, and there are error messages telling the user to try using it. > > Digging further into this, the way we use `--with-tools-dir` to find Visual Studio is quite convoluted. It used to be that you would point to something like ".../Community/VC/bin" or ".../Community/VC/bin/amd64", which would make sense as those were directories with the compiler executables. Configure would then walk up two or three levels to find the root of the Visual Studio installation. Modern Visual Studio installations have a much deeper and more complex directory structure, so this doesn't work as it used to. However, because the configure logic just checks two and three levels above the directory given to `--with-tools-dir`, you can actually supply any existing directory inside the installation at the appropriate depth, e.g. ".../Community/VC/Auxiliary/Build". > > This really isn't a great situation and the proper fix would be some kind of overhaul, probably a new explicit configure parameter pointing to the Visual Studio root to use. However, I don't have the time to invest in such a big rewrite at this time, so I will limit this bug to just restoring --with-tools-dir for it's current functionality on Windows, with a help text that describes what it currently does. This will at least let users currently relying on this option to continue building with Visual Studio in a nonstandard location. Marked as reviewed by shade (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28618#pullrequestreview-3533907970 From shade at openjdk.org Wed Dec 3 09:25:52 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 3 Dec 2025 09:25:52 GMT Subject: RFR: 8372705: The riscv-64 cross-compilation build is failing in the CI In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 22:18:06 GMT, Erik Joelsson wrote: > In [JDK-8371626](https://bugs.openjdk.org/browse/JDK-8371626) a new linker flag was introduced that only works with the Gold linker. The way the flag is added is not compatible with cross compilation configurations where the "build JDK" is built on the fly. In such a configuration, we are setting up two distinct toolchains, the TARGET (basically the regular one, with no variable prefixes) and the BUILD (an extra toolchain used to compile for the build platform, variables have the prefix "BUILD_"). > > This patch adjusts the adding of this linker flag so that it's conditionally added to each of the BUILD and TARGET linker flags depending on if the corresponding toolchain is using the Gold linker. > > I have verified with local builds, both native and cross, both that the builds succeed and that the expected flag is added when it should be. I've also run the full set of automated builds in our internal build and test system. Looks reasonable, thanks! ------------- Marked as reviewed by shade (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28619#pullrequestreview-3534021700 From shade at openjdk.org Wed Dec 3 09:28:03 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 3 Dec 2025 09:28:03 GMT Subject: RFR: 8372733: GHA: Bump to Ubuntu 24.04 [v3] In-Reply-To: References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: On Tue, 2 Dec 2025 12:05:32 GMT, Aleksey Shipilev wrote: >> GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. >> >> We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. >> >> Additional testing: >> - [x] GHA > > Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: > > Dang it, suffix already has ":". Also sort. Thanks for reviews. Let's go! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28555#issuecomment-3605865792 From shade at openjdk.org Wed Dec 3 09:28:05 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 3 Dec 2025 09:28:05 GMT Subject: Integrated: 8372733: GHA: Bump to Ubuntu 24.04 In-Reply-To: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> References: <8isKzxb721iS99ceR9biNurkXHWvlNHspzIH0GLVN1g=.4033f9ef-0358-4ee6-baa1-5d869d2c029d@github.com> Message-ID: On Fri, 28 Nov 2025 11:56:26 GMT, Aleksey Shipilev wrote: > GHA have changed `ubuntu-latest` to `ubuntu-24.04` some time this year. Ubuntu also mentions `22.04` would come off standard support in April 2027, following the usual 5-year cycle. So it is a good time to switch to `24.04` for our current runners. > > We did the switch to `22.04` 2.5 years back, so we are following the similar 2-year-ish cadence here. > > Additional testing: > - [x] GHA This pull request has now been integrated. Changeset: 177f3404 Author: Aleksey Shipilev URL: https://git.openjdk.org/jdk/commit/177f3404dfb146be724d952f8c88b4d070e36b52 Stats: 21 lines in 4 files changed: 12 ins; 0 del; 9 mod 8372733: GHA: Bump to Ubuntu 24.04 Reviewed-by: erikj, ayang ------------- PR: https://git.openjdk.org/jdk/pull/28555 From clanger at openjdk.org Wed Dec 3 09:54:38 2025 From: clanger at openjdk.org (Christoph Langer) Date: Wed, 3 Dec 2025 09:54:38 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v7] In-Reply-To: References: Message-ID: > This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. > > The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. > > During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. > > With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. Christoph Langer has updated the pull request incrementally with one additional commit since the last revision: Review feedback ------------- Changes: - all: https://git.openjdk.org/jdk/pull/24012/files - new: https://git.openjdk.org/jdk/pull/24012/files/ca92b6a1..c3e29e5c Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24012&range=05-06 Stats: 42 lines in 3 files changed: 0 ins; 30 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/24012.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/24012/head:pull/24012 PR: https://git.openjdk.org/jdk/pull/24012 From clanger at openjdk.org Wed Dec 3 09:54:39 2025 From: clanger at openjdk.org (Christoph Langer) Date: Wed, 3 Dec 2025 09:54:39 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v6] In-Reply-To: References: <7xjbY7Wkdo7ImiFeTdjUWgYkB-7155QLLxtZ13M3-Io=.d86b647e-6335-43ea-bf1c-ccd2113e74dd@github.com> Message-ID: On Mon, 1 Dec 2025 19:33:06 GMT, Erik Joelsson wrote: > From what I can tell, this is also removing the full debug symbols from the actual JDK/JRE images in all cases and all platforms, so they actually match the bundles. I think that's ok, but it needs to be clearly stated somewhere, at least in the bug, for future reference of when that happened. Yes, you are right. I added a sentence to the JBS bug. I also implemented your feedback, please look again. ------------- PR Comment: https://git.openjdk.org/jdk/pull/24012#issuecomment-3605978192 From nbenalla at openjdk.org Wed Dec 3 10:18:16 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:18:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v10] In-Reply-To: References: Message-ID: <1NKVGfCOckDGbbnQKtz0LfvPFhh5SjyUauWyvbsw2yM=.ad2c7571-4ab3-4b1f-b8d7-5ab0814635c7@github.com> > Get JDK 27 underway. Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 21 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - revert changes to avoid conflict - add 27 to the acceptable boot versions - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - ... and 11 more: https://git.openjdk.org/jdk/compare/443e5643...8bbe15f2 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/1237304b..8bbe15f2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=08-09 Stats: 3514 lines in 111 files changed: 2399 ins; 621 del; 494 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Wed Dec 3 10:31:18 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:18 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v11] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: - fix jls 27 link - fix typo and add entry for 27 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/8bbe15f2..4bf97a8a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=09-10 Stats: 3 lines in 1 file changed: 1 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Wed Dec 3 10:31:24 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:24 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 19:46:37 GMT, Joe Darcy wrote: >> Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/eae9329d...e5214614 > > src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 394: > >> 392: * >> 393: * @see > 394: * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jvms/index.html"> > > Presumably the analagous URL update should be done here as in ClassFileFormatVersion for the JLS instead of the JVMS. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/4bf97a8ab5a134ab592f7a84b7e1dc130d04a845; Good catch! > src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1368: > >> 1366: } >> 1367: >> 1368: private static String formatAbbreviatedList(Collection values) { > > I think changing the policy here is okay, but it should be better documented in comments here. > > Additionally, it assume there will be a dense collection of supported values between the 4 th and (n-3) rd. That is currently the de facto policy, but is not ironclad. This assumption should also be documented. Extracted and fixed in a separate issue https://github.com/openjdk/jdk/commit/8a28a76451b2bbde49c1c051cb66c784f9e3cdd2 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584514802 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584513205 From nbenalla at openjdk.org Wed Dec 3 10:31:27 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:27 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Wed, 3 Dec 2025 01:32:00 GMT, Joe Darcy wrote: >> Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: >> >> - revert changes to avoid conflict >> - add 27 to the acceptable boot versions > > src/java.compiler/share/classes/javax/lang/model/SourceVersion.java line 483: > >> 481: */ >> 482: RELEASE_26, >> 483: > > At the top of the file where the per-release changes are all listed, please add a > > "27: tbd" > > entry after syncing in the changes from mainline which add an entry for JDK 26. (Also, as part of the sync please fix the "in in" stutter typo in the 26 entry. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/4b14a7593c9cbc6f67d400e823d47d23e304d564 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584507508 From pminborg at openjdk.org Wed Dec 3 10:34:41 2025 From: pminborg at openjdk.org (Per Minborg) Date: Wed, 3 Dec 2025 10:34:41 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: Message-ID: <4gKSL8hFAE2qSuTmhJa6JMfoB6JfUnK9fzwHAnH2Zzg=.9fc69461-bbe7-4242-b3b1-b4b004f35ce0@github.com> On Tue, 2 Dec 2025 17:24:41 GMT, Chen Liang wrote: >> src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: >> >>> 2034: var constant = MethodHandleImpl.isCompileConstant(vh); >>> 2035: var cache = adaptedMh; >>> 2036: if (constant == MethodHandleImpl.CONSTANT_YES && cache != null) { >> >> Rookie question: Is there multi-thread considerations here? How about visibility across threads? > > MethodHandle is immutable and can be safely published. So this is ok. I meant that even though objects are immutable, plain semantics might not always do. Reference: https://shipilev.net/blog/2014/safe-public-construction/ ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2584535309 From duke at openjdk.org Wed Dec 3 11:03:24 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 11:03:24 GMT Subject: RFR: 8372393: Document requirement for separate metallib installation with Xcode 26.1.1 [v2] In-Reply-To: References: Message-ID: On Thu, 27 Nov 2025 11:04:29 GMT, Galder Zamarre?o wrote: >> Document the metal toolchain requirements starting with Xcode 26. > > Galder Zamarre?o has updated the pull request incrementally with one additional commit since the last revision: > > Fix line breaks @galderz Your change (at version 427758b28e2e80e542b015305cdaa48d7aedec85) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28489#issuecomment-3606292637 From galder at openjdk.org Wed Dec 3 11:14:49 2025 From: galder at openjdk.org (Galder =?UTF-8?B?WmFtYXJyZcOxbw==?=) Date: Wed, 3 Dec 2025 11:14:49 GMT Subject: Integrated: 8372393: Document requirement for separate metallib installation with Xcode 26.1.1 In-Reply-To: References: Message-ID: On Tue, 25 Nov 2025 11:25:59 GMT, Galder Zamarre?o wrote: > Document the metal toolchain requirements starting with Xcode 26. This pull request has now been integrated. Changeset: 125d1820 Author: Galder Zamarre?o Committer: Severin Gehwolf URL: https://git.openjdk.org/jdk/commit/125d1820f1f64e465a6b83360c48715a79e3d165 Stats: 10 lines in 2 files changed: 10 ins; 0 del; 0 mod 8372393: Document requirement for separate metallib installation with Xcode 26.1.1 Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/28489 From nbenalla at openjdk.org Wed Dec 3 12:10:24 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 12:10:24 GMT Subject: RFR: 8373010: Update starting-next-release.html after JDK-8372940 Message-ID: Small doc-only change, the HTML file should have been updated as part of 8372940 ------------- Commit messages: - update starting-next-release.html Changes: https://git.openjdk.org/jdk/pull/28631/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28631&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373010 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28631.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28631/head:pull/28631 PR: https://git.openjdk.org/jdk/pull/28631 From jpai at openjdk.org Wed Dec 3 12:10:25 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Wed, 3 Dec 2025 12:10:25 GMT Subject: RFR: 8373010: Update starting-next-release.html after JDK-8372940 In-Reply-To: References: Message-ID: <9kgCy5W2S3HEP0vCVcR7M2huL8ry8zLmVwVsB3CWFaI=.25bfa0ed-7553-46b7-93c1-fdd350aea4fc@github.com> On Wed, 3 Dec 2025 11:58:46 GMT, Nizar Benalla wrote: > Small doc-only change, the HTML file should have been updated as part of 8372940 The update to this HTML file looks OK to me. The updated text matches its corresponding source `.md` file which was changed in JDK-8372940 - https://github.com/openjdk/jdk/pull/28606/files#diff-44d5db5cf4a8b24b9d9a5ba580e91bc7cd91894ead852a6a5ea6490bd7aea44a ------------- Marked as reviewed by jpai (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28631#pullrequestreview-3534735932 From mbaesken at openjdk.org Wed Dec 3 13:02:00 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 3 Dec 2025 13:02:00 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 05:30:26 GMT, Jaikiran Pai wrote: > > I'll run this PR in our CI and see how it goes. I'll update here once I have the results. > > I haven't yet run this in our CI given that the changes are currently being discussed. I'll run it once the changes settle down. Makes sense ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28559#issuecomment-3606738217 From jvernee at openjdk.org Wed Dec 3 13:26:28 2025 From: jvernee at openjdk.org (Jorn Vernee) Date: Wed, 3 Dec 2025 13:26:28 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> Message-ID: <5QPAetQEkrBgFKtMt0i9Ku_4s2GCirMl2uqLH3j8x7g=.e5fc8964-0080-45f7-9005-31922ec06ba1@github.com> On Wed, 3 Dec 2025 04:10:05 GMT, Chen Liang wrote: >> Sorry, I still don't understand how it is intended to work. Why does `MethodHandleImpl.isCompileConstant(vh) == true` imply that the cached value is compatible with the constant `vh`? >> >> >> // Keep capturing - vh may suddenly get promoted to a constant by C2 >> >> >> Capturing happens outside compiler thread. It is not affected by C2 (except when it completely prunes the whole block). >> >> So, either any captured adaptation is valid/compatible or there's a concurrency issue when C2 kicks in and there's a concurrent cache update happening with incompatible version. > >> any captured adaptation is valid/compatible > > Yes, if `vh` is a constant, any captured adaptation from `vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker)` is valid/compatible. > > For thread safety, MethodHandle supports safe publication, so I think we are fine publishing this way. Looking at this, I'm not sure we can assume that we only see one mode and type when the VH is constant. There seems to be a lot of non-local reasoning involved. For example, you could have a var handle invoker created with `MethodHandless::varHandleInvoker`, which is cached, so the `AccessDescriptor` can be shared among many different use sites. For an individual use-site, the receiver VH may well be a constant, but that doesn't mean that the cache isn't polluted by the var handle from another use site, as far as I can tell. The thread safety issue comes from a C2 thread racing to read the `lastAdaption` cache vs another Java thread writing to the cache. AFAICS, this race is still possible even when `vh` is a compile time constant. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2585100537 From jvernee at openjdk.org Wed Dec 3 13:37:54 2025 From: jvernee at openjdk.org (Jorn Vernee) Date: Wed, 3 Dec 2025 13:37:54 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <5QPAetQEkrBgFKtMt0i9Ku_4s2GCirMl2uqLH3j8x7g=.e5fc8964-0080-45f7-9005-31922ec06ba1@github.com> References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> <5QPAetQEkrBgFKtMt0i9Ku_4s2GCirMl2uqLH3j8x7g=.e5fc8964-0080-45f7-9005-31922ec06ba1@github.com> Message-ID: On Wed, 3 Dec 2025 13:23:18 GMT, Jorn Vernee wrote: >>> any captured adaptation is valid/compatible >> >> Yes, if `vh` is a constant, any captured adaptation from `vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker)` is valid/compatible. >> >> For thread safety, MethodHandle supports safe publication, so I think we are fine publishing this way. > > Looking at this, I'm not sure we can assume that we only see one mode and type when the VH is constant. There seems to be a lot of non-local reasoning involved. > > For example, you could have a var handle invoker created with `MethodHandless::varHandleInvoker`, which is cached, so the `AccessDescriptor` can be shared among many different use sites. For an individual use-site, the receiver VH may well be a constant, but that doesn't mean that the cache isn't polluted by the var handle from another use site, as far as I can tell. > > The thread safety issue comes from a C2 thread racing to read the `lastAdaption` cache vs another Java thread writing to the cache. AFAICS, this race is still possible even when `vh` is a compile time constant. I think even without using an invoker, you could end up in a similar situation if you have something like: static Object m(VarHandle vh) { return vh.get(); } Which is called by several different threads. At some point this method may be inlined into one of its callees, where `vh` then becomes a constant. But at the same time, other threads are still writing to the cache. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2585142665 From liach at openjdk.org Wed Dec 3 14:11:22 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 14:11:22 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: <4gKSL8hFAE2qSuTmhJa6JMfoB6JfUnK9fzwHAnH2Zzg=.9fc69461-bbe7-4242-b3b1-b4b004f35ce0@github.com> References: <4gKSL8hFAE2qSuTmhJa6JMfoB6JfUnK9fzwHAnH2Zzg=.9fc69461-bbe7-4242-b3b1-b4b004f35ce0@github.com> Message-ID: On Wed, 3 Dec 2025 10:31:07 GMT, Per Minborg wrote: >> MethodHandle is immutable and can be safely published. So this is ok. > > I meant that even though objects are immutable, plain semantics might not always do. > > Reference: https://shipilev.net/blog/2014/safe-public-construction/ MethodHandle is safe. All fields in Method Handle hierarchies are either lazy/stable or final. You can refer to the `invokers` field in `MethodType`, and the `MethodHandle` array in `Invokers` for precedents. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2585263336 From liach at openjdk.org Wed Dec 3 14:11:23 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 14:11:23 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <4gKSL8hFAE2qSuTmhJa6JMfoB6JfUnK9fzwHAnH2Zzg=.9fc69461-bbe7-4242-b3b1-b4b004f35ce0@github.com> Message-ID: <4F_HqL-oY7z2ENI9yIAS7VS3NDjEljsqx4E2zK5HxJ0=.8f5ab39a-66e1-4ea3-ace2-226d6bd39d77@github.com> On Wed, 3 Dec 2025 14:06:00 GMT, Chen Liang wrote: >> I meant that even though objects are immutable, plain semantics might not always do. >> >> Reference: https://shipilev.net/blog/2014/safe-public-construction/ > > MethodHandle is safe. All fields in Method Handle hierarchies are either lazy/stable or final. You can refer to the `invokers` field in `MethodType`, and the `MethodHandle` array in `Invokers` for precedents. In extreme cases where a barrier is needed, java.lang.invoke already issue necessary barriers, most notably the storeStoreFence, such as https://github.com/openjdk/jdk/blob/135661b4389663b8c2e348d9e61e72cc628636bb/src/java.base/share/classes/java/lang/invoke/CallSite.java#L138 or https://github.com/openjdk/jdk/blob/135661b4389663b8c2e348d9e61e72cc628636bb/src/java.base/share/classes/java/lang/ClassValue.java#L411-L417 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2585270552 From erikj at openjdk.org Wed Dec 3 14:42:03 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 14:42:03 GMT Subject: Integrated: 8372943: Restore --with-tools-dir In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 22:07:05 GMT, Erik Joelsson wrote: > In [JDK-8344030](https://bugs.openjdk.org/browse/JDK-8344030) the configure option --with-tools-dir was deprecated. There are however still references to it in the configure script. Specifically toolchain_microsoft is still using the variable it was setting up, and there are error messages telling the user to try using it. > > Digging further into this, the way we use `--with-tools-dir` to find Visual Studio is quite convoluted. It used to be that you would point to something like ".../Community/VC/bin" or ".../Community/VC/bin/amd64", which would make sense as those were directories with the compiler executables. Configure would then walk up two or three levels to find the root of the Visual Studio installation. Modern Visual Studio installations have a much deeper and more complex directory structure, so this doesn't work as it used to. However, because the configure logic just checks two and three levels above the directory given to `--with-tools-dir`, you can actually supply any existing directory inside the installation at the appropriate depth, e.g. ".../Community/VC/Auxiliary/Build". > > This really isn't a great situation and the proper fix would be some kind of overhaul, probably a new explicit configure parameter pointing to the Visual Studio root to use. However, I don't have the time to invest in such a big rewrite at this time, so I will limit this bug to just restoring --with-tools-dir for it's current functionality on Windows, with a help text that describes what it currently does. This will at least let users currently relying on this option to continue building with Visual Studio in a nonstandard location. This pull request has now been integrated. Changeset: 87c4b01e Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/87c4b01ea3d94c25d260f0687addf7ecd154279a Stats: 6 lines in 1 file changed: 5 ins; 0 del; 1 mod 8372943: Restore --with-tools-dir Reviewed-by: mikael, tbell, shade ------------- PR: https://git.openjdk.org/jdk/pull/28618 From erikj at openjdk.org Wed Dec 3 14:42:04 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 14:42:04 GMT Subject: Integrated: 8372705: The riscv-64 cross-compilation build is failing in the CI In-Reply-To: References: Message-ID: <28UOpZIsOrowS7nagn1ZgQa1xuEvxqH71ctHGE7-Rwk=.dafc96e6-78a1-4dd7-8e51-417c6386d61b@github.com> On Tue, 2 Dec 2025 22:18:06 GMT, Erik Joelsson wrote: > In [JDK-8371626](https://bugs.openjdk.org/browse/JDK-8371626) a new linker flag was introduced that only works with the Gold linker. The way the flag is added is not compatible with cross compilation configurations where the "build JDK" is built on the fly. In such a configuration, we are setting up two distinct toolchains, the TARGET (basically the regular one, with no variable prefixes) and the BUILD (an extra toolchain used to compile for the build platform, variables have the prefix "BUILD_"). > > This patch adjusts the adding of this linker flag so that it's conditionally added to each of the BUILD and TARGET linker flags depending on if the corresponding toolchain is using the Gold linker. > > I have verified with local builds, both native and cross, both that the builds succeed and that the expected flag is added when it should be. I've also run the full set of automated builds in our internal build and test system. This pull request has now been integrated. Changeset: 44e2d499 Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/44e2d499f84458003aa73a149d1ae44735b71d91 Stats: 15 lines in 2 files changed: 7 ins; 5 del; 3 mod 8372705: The riscv-64 cross-compilation build is failing in the CI Reviewed-by: dholmes, shade ------------- PR: https://git.openjdk.org/jdk/pull/28619 From erikj at openjdk.org Wed Dec 3 14:48:35 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 14:48:35 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v7] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 09:54:38 GMT, Christoph Langer wrote: >> This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. >> >> The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. >> >> During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. >> >> With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. > > Christoph Langer has updated the pull request incrementally with one additional commit since the last revision: > > Review feedback Build changes look good. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/24012#pullrequestreview-3535417592 From erikj at openjdk.org Wed Dec 3 14:53:22 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 14:53:22 GMT Subject: RFR: 8373010: Update starting-next-release.html after JDK-8372940 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 11:58:46 GMT, Nizar Benalla wrote: > Small doc-only change, the HTML file should have been updated as part of 8372940 Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28631#pullrequestreview-3535438996 From nbenalla at openjdk.org Wed Dec 3 15:14:22 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 15:14:22 GMT Subject: RFR: 8373010: Update starting-next-release.html after JDK-8372940 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 11:58:46 GMT, Nizar Benalla wrote: > Small doc-only change, the HTML file should have been updated as part of 8372940 Thanks for the reviews ------------- PR Comment: https://git.openjdk.org/jdk/pull/28631#issuecomment-3607335506 From nbenalla at openjdk.org Wed Dec 3 15:18:53 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 15:18:53 GMT Subject: Integrated: 8373010: Update starting-next-release.html after JDK-8372940 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 11:58:46 GMT, Nizar Benalla wrote: > Small doc-only change, the HTML file should have been updated as part of 8372940 This pull request has now been integrated. Changeset: 1d753f11 Author: Nizar Benalla URL: https://git.openjdk.org/jdk/commit/1d753f116135cffa3ec9e8b4af3922aa647317dc Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod 8373010: Update starting-next-release.html after JDK-8372940 Reviewed-by: jpai, erikj ------------- PR: https://git.openjdk.org/jdk/pull/28631 From mbaesken at openjdk.org Wed Dec 3 15:25:58 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 3 Dec 2025 15:25:58 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory [v2] In-Reply-To: References: Message-ID: > When building the recent mainline JDK (26), I see the following warning messages: > > warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory > warning: no debug symbols in executable (-arch arm64) > > > The build completes normally even with these warnings. > I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. > Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue > > https://clang.llvm.org/docs/CommandGuide/clang.html > Note > > ` > On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: Move -Wl,-object_path_lto setting, and specify a file at OBJECT_DIR ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28559/files - new: https://git.openjdk.org/jdk/pull/28559/files/66013e87..508122b3 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28559&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28559&range=00-01 Stats: 10 lines in 2 files changed: 5 ins; 4 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28559.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28559/head:pull/28559 PR: https://git.openjdk.org/jdk/pull/28559 From mbaesken at openjdk.org Wed Dec 3 15:28:55 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 3 Dec 2025 15:28:55 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: On Fri, 28 Nov 2025 15:47:04 GMT, Matthias Baesken wrote: > When building the recent mainline JDK (26), I see the following warning messages: > > warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory > warning: no debug symbols in executable (-arch arm64) > > > The build completes normally even with these warnings. > I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. > Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue > > https://clang.llvm.org/docs/CommandGuide/clang.html > Note > > ` > On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` I moved the special setting to Flags.gmk as suggested , The lto helper file goes now to the build dir; for example in my test setup `/priv/openjdk/build_mac/support/native/java.desktop/libsplashscreen/splashscreen_lto_helper.o` ------------- PR Comment: https://git.openjdk.org/jdk/pull/28559#issuecomment-3607397899 From nbenalla at openjdk.org Wed Dec 3 15:48:23 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 15:48:23 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 24 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - fix jls 27 link - fix typo and add entry for 27 - Merge branch 'master' into start-of-release-27 - revert changes to avoid conflict - add 27 to the acceptable boot versions - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - ... and 14 more: https://git.openjdk.org/jdk/compare/0351ed87...444cc1c8 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/4bf97a8a..444cc1c8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=11 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=10-11 Stats: 819 lines in 34 files changed: 424 ins; 271 del; 124 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From kurt at openjdk.org Wed Dec 3 15:50:00 2025 From: kurt at openjdk.org (Kurt Miller) Date: Wed, 3 Dec 2025 15:50:00 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: > When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: > > `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` > > This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: Clarify comment per code review ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28324/files - new: https://git.openjdk.org/jdk/pull/28324/files/a7c9813f..50061a1d Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28324&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28324&range=00-01 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28324.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28324/head:pull/28324 PR: https://git.openjdk.org/jdk/pull/28324 From kurt at openjdk.org Wed Dec 3 15:50:02 2025 From: kurt at openjdk.org (Kurt Miller) Date: Wed, 3 Dec 2025 15:50:02 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 05:41:27 GMT, Jayathirth D V wrote: >> Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: >> >> Clarify comment per code review > > make/modules/java.desktop/lib/ClientLibraries.gmk line 174: > >> 172: endif >> 173: >> 174: # The external libpng submitted in the jdk is a reduced version > > I think this comment should start with "The libpng bundled with jdk". Mentioning "external" at this level doesn't seem right. Since we are touching this part we can update the comment. That is more clear for sure. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28324#discussion_r2585649096 From liach at openjdk.org Wed Dec 3 15:54:30 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 15:54:30 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v5] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Fix problem identified by Jorn ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/d49ad129..89e21b4b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=03-04 Stats: 40 lines in 3 files changed: 25 ins; 2 del; 13 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From kurt at openjdk.org Wed Dec 3 16:01:39 2025 From: kurt at openjdk.org (Kurt Miller) Date: Wed, 3 Dec 2025 16:01:39 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 05:36:16 GMT, Jayathirth D V wrote: >> Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: >> >> Clarify comment per code review > > make/modules/java.desktop/lib/ClientLibraries.gmk line 167: > >> 165: ifeq ($(USE_EXTERNAL_LIBPNG), false) >> 166: LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng >> 167: LIBSPLASHSCREEN_CFLAGS += -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 > > I think we can move these flags which are not specific to any OS/Architecture to src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h itself. But it should be handled in follow-up task not under this bug. Filed https://bugs.openjdk.org/browse/JDK-8372979 for the same. @jayathirthrao Thank you for the review. The internal PNG defines are treated inconsistently. MMX is x86, PNG_ARM is arm/aarch64 but they are not behind CpuArch conditionals while the others are behind OS + CpuArch conditionals. All of these defines appear to be well scoped and likely don't conflict with each other for internal png. I suspect they all can be defined without OS + CpuArch conditionals for the internal png case. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28324#discussion_r2585698160 From jdv at openjdk.org Wed Dec 3 16:31:43 2025 From: jdv at openjdk.org (Jayathirth D V) Date: Wed, 3 Dec 2025 16:31:43 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:50:00 GMT, Kurt Miller wrote: >> When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: >> >> `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` >> >> This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. > > Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: > > Clarify comment per code review Client testing is also green. ------------- Marked as reviewed by jdv (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28324#pullrequestreview-3535924619 From jdv at openjdk.org Wed Dec 3 16:31:46 2025 From: jdv at openjdk.org (Jayathirth D V) Date: Wed, 3 Dec 2025 16:31:46 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:58:28 GMT, Kurt Miller wrote: >> make/modules/java.desktop/lib/ClientLibraries.gmk line 167: >> >>> 165: ifeq ($(USE_EXTERNAL_LIBPNG), false) >>> 166: LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng >>> 167: LIBSPLASHSCREEN_CFLAGS += -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 >> >> I think we can move these flags which are not specific to any OS/Architecture to src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h itself. But it should be handled in follow-up task not under this bug. Filed https://bugs.openjdk.org/browse/JDK-8372979 for the same. > > @jayathirthrao Thank you for the review. > > The internal PNG defines are treated inconsistently. MMX is x86, PNG_ARM is arm/aarch64 but they are not behind CpuArch conditionals while the others are behind OS + CpuArch conditionals. All of these defines appear to be well scoped and likely don't conflict with each other for internal png. I suspect they all can be defined without OS + CpuArch conditionals for the internal png case. Thanks for the info. We need to make sure changing things in src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h doesn't break things and it also needs good amount of testing. So this will be taken up in follow-up task. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28324#discussion_r2585814360 From darcy at openjdk.org Wed Dec 3 16:36:16 2025 From: darcy at openjdk.org (Joe Darcy) Date: Wed, 3 Dec 2025 16:36:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: <14VgrwjksW2UO1LtpHGyX6sTjHbaplRnV7ZgmcyiRIQ=.b06ebf9a-2f95-4e95-89b9-981562ceef06@github.com> On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/659ebef2...444cc1c8 Marked as reviewed by darcy (Reviewer). Marked as reviewed by darcy (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535940924 PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535946905 From liach at openjdk.org Wed Dec 3 16:43:24 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 16:43:24 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v6] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with two additional commits since the last revision: - Test from Jorn - Copyright years ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/89e21b4b..ff7b3629 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=04-05 Stats: 107 lines in 3 files changed: 105 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Wed Dec 3 16:44:15 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 16:44:15 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/c61f404d...444cc1c8 Marked as reviewed by liach (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535980615 From iris at openjdk.org Wed Dec 3 16:56:43 2025 From: iris at openjdk.org (Iris Clark) Date: Wed, 3 Dec 2025 16:56:43 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/afcc5cbc...444cc1c8 Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3536041848 From erikj at openjdk.org Wed Dec 3 18:31:28 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 18:31:28 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:50:00 GMT, Kurt Miller wrote: >> When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: >> >> `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` >> >> This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. > > Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: > > Clarify comment per code review Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28324#pullrequestreview-3536379873 From vlivanov at openjdk.org Wed Dec 3 19:39:56 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Wed, 3 Dec 2025 19:39:56 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v6] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 16:43:24 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with two additional commits since the last revision: > > - Test from Jorn > - Copyright years src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: > 2034: // from two writes (they must not be tearable) > 2035: private record Adaption(VarHandle vh, MethodHandle mh) {} > 2036: private @Stable Adaption adaption; Is a soft reference needed here? The situation looks similar to `MH.asTypeSoftCache`. It can keep some classes referred by `vh` alive for unnecessarily long. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2586374014 From duke at openjdk.org Wed Dec 3 19:49:27 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 19:49:27 GMT Subject: RFR: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng [v2] In-Reply-To: References: Message-ID: <8caBWJ6ftNIvDBwzAP8MbszLQ1t98qJ6Tmz8EktWrZQ=.9d08c9ea-e487-4d4a-b8dc-b76d660d3406@github.com> On Wed, 3 Dec 2025 15:50:00 GMT, Kurt Miller wrote: >> When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: >> >> `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` >> >> This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. > > Kurt Miller has updated the pull request incrementally with one additional commit since the last revision: > > Clarify comment per code review @bsdkurt Your change (at version 50061a1d1a45ec56b9356eb78d93b6962cc43521) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28324#issuecomment-3608563317 From erikj at openjdk.org Wed Dec 3 21:33:59 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 3 Dec 2025 21:33:59 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:25:58 GMT, Matthias Baesken wrote: >> When building the recent mainline JDK (26), I see the following warning messages: >> >> warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory >> warning: no debug symbols in executable (-arch arm64) >> >> >> The build completes normally even with these warnings. >> I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. >> Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue >> >> https://clang.llvm.org/docs/CommandGuide/clang.html >> Note >> >> ` >> On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Move -Wl,-object_path_lto setting, and specify a file at OBJECT_DIR I think this looks ok. I verified the patch on my machine, the warning is gone and the new lto_helper file was found in the expected location. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28559#pullrequestreview-3537005023 From liach at openjdk.org Wed Dec 3 23:44:01 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 23:44:01 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v6] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:37:25 GMT, Vladimir Ivanov wrote: >> Chen Liang has updated the pull request incrementally with two additional commits since the last revision: >> >> - Test from Jorn >> - Copyright years > > src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: > >> 2034: // from two writes (they must not be tearable) >> 2035: private record Adaption(VarHandle vh, MethodHandle mh) {} >> 2036: private @Stable Adaption adaption; > > Is a soft reference needed here? The situation looks similar to `MH.asTypeSoftCache`. It can keep some classes referred by `vh` alive for unnecessarily long. I don't think we can use a SoftReference here if we need to achieve constant folding. Looking at inline_reference_get0, I think we might introduce another field property to trust a reference (potentially in an array) if both that reference and the referent within the reference is non-null. I think that belongs to a separate RFE. What do you think? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2586946357 From liach at openjdk.org Thu Dec 4 01:48:31 2025 From: liach at openjdk.org (Chen Liang) Date: Thu, 4 Dec 2025 01:48:31 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v7] In-Reply-To: References: Message-ID: <7ayMTZ4nXMyB1SXNRcYGjdxidNHDcAUNv_8fQZDUaPI=.a558d3a2-1d3e-4b45-8ba7-393c55a52785@github.com> > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/ff7b3629..8200fb28 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=05-06 Stats: 23 lines in 1 file changed: 20 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From vlivanov at openjdk.org Thu Dec 4 01:58:56 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Thu, 4 Dec 2025 01:58:56 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v6] In-Reply-To: References: Message-ID: <8tu3HIArCw2cdoYR2SjI0b-TWYQxQLKkjQgucJEj8D4=.10946ec2-4958-48df-add4-b29d11c09448@github.com> On Wed, 3 Dec 2025 23:41:01 GMT, Chen Liang wrote: >> src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2036: >> >>> 2034: // from two writes (they must not be tearable) >>> 2035: private record Adaption(VarHandle vh, MethodHandle mh) {} >>> 2036: private @Stable Adaption adaption; >> >> Is a soft reference needed here? The situation looks similar to `MH.asTypeSoftCache`. It can keep some classes referred by `vh` alive for unnecessarily long. > > I don't think we can use a SoftReference here if we need to achieve constant folding. > > Looking at inline_reference_get0, I think we might introduce another field property to trust a reference (potentially in an array) if both that reference and the referent within the reference is non-null. I think that belongs to a separate RFE. What do you think? Then it makes sense to limit the caching to safe cases only for now. Otherwise, it would functionally regress due to a possible memory leak. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2587156042 From kbarrett at openjdk.org Thu Dec 4 08:31:57 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 4 Dec 2025 08:31:57 GMT Subject: RFR: 8372938: Fix reference to DeferredStatic in HotSpot Style Guide In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:21:01 GMT, Stefan Karlsson wrote: >> Please review this trivial editorial fix to the HotSpot Style Guide. >> JDK-8360458 changed the name of the utility class `Deferred` to >> `DeferredStatic`, but forgot to update the reference to that class in the >> Style Guide. > > Marked as reviewed by stefank (Reviewer). Thanks for reviews @stefank and @jdksjolen ------------- PR Comment: https://git.openjdk.org/jdk/pull/28602#issuecomment-3610857772 From kbarrett at openjdk.org Thu Dec 4 08:35:07 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 4 Dec 2025 08:35:07 GMT Subject: Integrated: 8372938: Fix reference to DeferredStatic in HotSpot Style Guide In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 14:05:01 GMT, Kim Barrett wrote: > Please review this trivial editorial fix to the HotSpot Style Guide. > JDK-8360458 changed the name of the utility class `Deferred` to > `DeferredStatic`, but forgot to update the reference to that class in the > Style Guide. This pull request has now been integrated. Changeset: bb867ed2 Author: Kim Barrett URL: https://git.openjdk.org/jdk/commit/bb867ed23e2d6394d7e7dab55cf2122889fdf3ac Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod 8372938: Fix reference to DeferredStatic in HotSpot Style Guide Reviewed-by: stefank, jsjolen ------------- PR: https://git.openjdk.org/jdk/pull/28602 From mbaesken at openjdk.org Thu Dec 4 08:39:08 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 4 Dec 2025 08:39:08 GMT Subject: RFR: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory [v2] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:25:58 GMT, Matthias Baesken wrote: >> When building the recent mainline JDK (26), I see the following warning messages: >> >> warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory >> warning: no debug symbols in executable (-arch arm64) >> >> >> The build completes normally even with these warnings. >> I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. >> Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue >> >> https://clang.llvm.org/docs/CommandGuide/clang.html >> Note >> >> ` >> On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Move -Wl,-object_path_lto setting, and specify a file at OBJECT_DIR Thanks for the review ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28559#issuecomment-3610882507 From mbaesken at openjdk.org Thu Dec 4 08:39:09 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 4 Dec 2025 08:39:09 GMT Subject: Integrated: 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory In-Reply-To: References: Message-ID: <3oQYr1gb1rdHpzJXULYLrOSjQ3cNr_AX70GuEzoGFVo=.156103d1-231e-4edf-907e-1c3668c2c53e@github.com> On Fri, 28 Nov 2025 15:47:04 GMT, Matthias Baesken wrote: > When building the recent mainline JDK (26), I see the following warning messages: > > warning: (arm64) /tmp/lto.o unable to open object file: No such file or directory > warning: no debug symbols in executable (-arch arm64) > > > The build completes normally even with these warnings. > I am on macos aarch64, but I see the same warning on macos x64 and aarch64 in our CI. > Seems we miss a linker flag for libs built with lto (libsplashscreen), because the Apple linker has the following issue > > https://clang.llvm.org/docs/CommandGuide/clang.html > Note > > ` > On Darwin, when using [-flto](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-flto) along with [-g](https://clang.llvm.org/docs/CommandGuide/clang.html#cmdoption-g) and compiling and linking in separate steps, you also need to pass -Wl,-object_path_lto,.o at the linking step to instruct the ld64 linker not to delete the temporary object file generated during Link Time Optimization (this flag is automatically passed to the linker by Clang if compilation and linking are done in a single step). This allows debugging the executable as well as generating the .dSYM bundle using dsymutil(1).` This pull request has now been integrated. Changeset: 317daa3c Author: Matthias Baesken URL: https://git.openjdk.org/jdk/commit/317daa3c004fbb1738e0af6acfbaf50c403c8230 Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod 8372643: Warning message on macos when building the JDK - (arm64) /tmp/lto.o unable to open object file: No such file or directory Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/28559 From duke at openjdk.org Thu Dec 4 11:31:46 2025 From: duke at openjdk.org (Nick Hall) Date: Thu, 4 Dec 2025 11:31:46 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: > _Purpose_ > > This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. > > _Rationale_ > > Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. > > The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). > > Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. > > _Implementation Detail_ > > Note that there were multiple possible ways of doing this: > > 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. > > 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. > > 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. > > I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensate for this. > > Interested to hear if anyone else... Nick Hall has updated the pull request incrementally with one additional commit since the last revision: Update the devkit build scripts to allow the devkit to include the required packages for KRB5 (libkrb and libcom_err). This was run on RHEL8, building for OL6, which required adding isl to allow the latest gcc to build (this has been required for some time I think). It also fixes one missing `--prefix` option which was causing things to not be correctly installed in the sysroot. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28075/files - new: https://git.openjdk.org/jdk/pull/28075/files/ed56092b..e3d9c23b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28075&range=13 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28075&range=12-13 Stats: 34 lines in 1 file changed: 31 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28075.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28075/head:pull/28075 PR: https://git.openjdk.org/jdk/pull/28075 From duke at openjdk.org Thu Dec 4 11:31:47 2025 From: duke at openjdk.org (Nick Hall) Date: Thu, 4 Dec 2025 11:31:47 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v13] In-Reply-To: References: <4_rkUaOwuH6_uQRt0HnZKey0t4Z83CQvcrHEqS-VYys=.c825780e-778b-431e-9800-b3a548f1355d@github.com> Message-ID: On Mon, 1 Dec 2025 14:54:40 GMT, Erik Joelsson wrote: >>> If you want to drive adoption, or even think about making this mandatory at build time, then at the very least you need to make sure the devkits produced by the makefiles under `make/devkit/...` contain the necessary build time dependencies and generally work with this feature. At least at Oracle we rely on these for our builds and my impression is that at least some other vendors do too. >> >> Thanks. I had a go at this today, but am struggling to build a devkit (even without any changes). Can you recommend a suitable host OS for building one, and which OS targets I should use to build the devkits to test? >> >> (I've tried building a devkit for Fedora 41 using both RHEL8 and Fedora 41 as host OSes, but am getting a variety of issues in the build) > >> Thanks. I had a go at this today, but am struggling to build a devkit (even without any changes). Can you recommend a suitable host OS for building one, and which OS targets I should use to build the devkits to test? >> >> (I've tried building a devkit for Fedora 41 using both RHEL8 and Fedora 41 as host OSes, but am getting a variety of issues in the build) > > I haven't used this myself in a while, but I believe our internal kits use Oracle Linux 7 as host (in a container) and Oracle Linux 6 as target. RHEL should be equivalent to Oracle Linux, at least in this context. These are quite old, but the motivation for us to use devkits is to guarantee compatibility with old Linux versions. The host OS dictates the oldest where the kit itself can be used and the target dictates the oldest where the subsequently built JDK can be used. > > That said, getting a devkit to compile can be finicky for all sorts of reasons. The important part in this case is the sysroot, which is what you are going to change here, by adding extra packages. At least in theory, you could generate just a sysroot and supply that to the JDK build to verify this. I don't think there is a readily available make target for that though. @erikj79 after a little playing around, I've managed to get this to work. I can now build an Oracle Linux 6 devkit (from RHEL8) and can build a JDK wih my changes from this devkit. It required a few changes beyond just the packages for libkrb5 - there was a missing library (ISL) required for the newer gcc, and a bug causing some of the files to attempt to install in /usr/local (missing `--prefix`). I'm not sure if this was exactly what you're looking for, but it's all on the latest commit on this branch for your review. I'm not sure how to test beyond the tests I've done locally. [`e3d9c23` (#28075)](https://github.com/openjdk/jdk/pull/28075/commits/e3d9c23b9f724abbac02cef225e6749ffb97e76d) ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3611689545 From mbaesken at openjdk.org Thu Dec 4 12:26:15 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 4 Dec 2025 12:26:15 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v7] In-Reply-To: References: Message-ID: <9UaIabNuOXVVLwf9B932e9r5nWuWYbv42F3VOIFmZ4U=.66ffe47e-f3da-4a51-a270-924ae627ab5f@github.com> On Wed, 3 Dec 2025 09:54:38 GMT, Christoph Langer wrote: >> This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. >> >> The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. >> >> During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. >> >> With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. > > Christoph Langer has updated the pull request incrementally with one additional commit since the last revision: > > Review feedback Marked as reviewed by mbaesken (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/24012#pullrequestreview-3539755805 From clanger at openjdk.org Thu Dec 4 14:27:35 2025 From: clanger at openjdk.org (Christoph Langer) Date: Thu, 4 Dec 2025 14:27:35 GMT Subject: RFR: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public [v7] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 09:54:38 GMT, Christoph Langer wrote: >> This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. >> >> The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. >> >> During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. >> >> With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. > > Christoph Langer has updated the pull request incrementally with one additional commit since the last revision: > > Review feedback Thanks for the reviews. ------------- PR Comment: https://git.openjdk.org/jdk/pull/24012#issuecomment-3612510925 From jlahoda at openjdk.org Thu Dec 4 14:44:08 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Thu, 4 Dec 2025 14:44:08 GMT Subject: RFR: 8367530: The exhaustiveness errors could be improved [v8] In-Reply-To: References: <8dZbRs3s5I3mI8Iwlq1NW30PJEw8huzJE9zzlCoQrS4=.5e78a559-b585-4eee-b02f-087e586b0f5c@github.com> Message-ID: On Wed, 19 Nov 2025 16:15:17 GMT, Jan Lahoda wrote: >> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ExhaustivenessComputer.java line 832: >> >>> 830: Set.of(defaultPattern)); >>> 831: } catch (TimeoutException ex) { >>> 832: return ex.missingPatterns != null ? ex.missingPatterns : Set.of(); >> >> Instead of a timeout, I wonder if you could instead cut the recursion at a specific threshold. It seems to me that recursing more will provide more precision _at the nested level_, so it's a trade off between when do we want to stop. >> >> Overload resolution provides some kind of precedent: >> >> >> error: incompatible types: String cannot be converted to int >> m("Hello"); >> ^ >> Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output >> 1 error >> >> >> (We "compress" the diagnostic whenever we can somehow figure out if an overload is "better" than the others). Then if you provide the option, you get the full thing: >> >> >> error: no suitable method found for m(String) >> m("Hello"); >> ^ >> method Test.m() is not applicable >> (actual and formal argument lists differ in length) >> method Test.m(int) is not applicable >> (argument mismatch; String cannot be converted to int) >> method Test.m(int,int) is not applicable >> (actual and formal argument lists differ in length) >> method Test.m(int,int,int) is not applicable >> (actual and formal argument lists differ in length) >> method Test.m(int,int,int,int) is not applicable >> (actual and formal argument lists differ in length) >> method Test.m(int,int,int,int,int) is not applicable >> (actual and formal argument lists differ in length) >> method Test.m(int,int,int,int,int,int) is not applicable >> (actual and formal argument lists differ in length) >> >> >> But, also, maybe putting an upper bound on the recursion, no matter what, might be a good idea? > > While I agree that having a timeout in weird/non-standard in javac, I believe it is the first time when we have a process that a) can run for a very long time; b) is not required for correctness. In all other cases I can recall, if some process is slow (including e.g. verifying exhaustiveness), then it is required for correctness. And so we cannot skip it based on criteria like time. > > The timeout here provides a way to say how much real-world time is the user willing to invest to get the outcome - if more time is invested, more detailed missing patterns may possibly be computed. It is a somewhat weird approach for javac, but it is a limit that (I think) the user and javac can agree on. > > We could introduce a limit on e.g. the depth to which we expand, but adding one level of nesting may affect performance significantly or almost not at all, depending on e.g. the record type form/shape. > > E.g. having a record with many components, where each component is a sealed type with many permitted subtypes, one level of nesting may lead to a high number of newly generated patterns possibly taking a lot of time to go through them. But having a record that has a single component that is not a sealed type should only generate one pattern, and so have minimal impact. As an example, if I have: package exhaustiveness.test; public class Deep { public record Box0(Box1 v) {} public record Box1(Box2 v) {} public record Box2(Box3 v) {} public record Box3(Box4 v) {} public record Box4(Box5 v) {} public record Box5(Box6 v) {} public record Box6(Box7 v) {} public record Box7(Box8 v) {} public record Box8(Box9 v) {} public record Box9(I v) {} public sealed interface I {} public final class C1 implements I {} public final class C2 implements I {} public int test(Box0 box0) { return switch (box0) { case Box0(Box1(Box2(Box3(Box4(Box5(Box6(Box7(Box8(Box9(C1 _)))))))))) -> 0; }; } } this runs very quickly on my laptop <1s in total, despite recursing quite deep (and it finds the one missing pattern). If I have something like: package exhaustiveness.test; public class Shallow { public sealed interface Base {} public sealed interface I0 extends Base {} public non-sealed interface L0 extends Base {} public non-sealed interface L1 extends I0 {} public non-sealed interface L2 extends I0 {} public non-sealed interface L3 extends I0 {} // public non-sealed interface L4 extends I0 {} // public non-sealed interface L5 extends I0 {} // public non-sealed interface L6 extends I0 {} // public non-sealed interface L7 extends I0 {} // public non-sealed interface L8 extends I0 {} // public non-sealed interface L9 extends I0 {} public record Data(Base b1, Base b2, Base b3, Base b4) {} public int test(Data d) { return switch (d) { case Data(I0 _, I0 _, I0 _, I0 _) -> 0; case Data(L0 _, L0 _, L0 _, L0 _) -> 0; case Data(I0 _, _, _, _) -> 0; }; } } the current run time on my laptop is ~25s; if I un-comment L4, the time is ~2m15s. Also, in this case it is relatively difficult to reduce details, as if the record pattern is not expanded, the less-detailed version is simply `Data _`. So, while there may be a way to estimate complexity, it depends on many factors - the depth, the number of sealed types, but also the user-written patterns (as those may make exhaustiveness computation faster or slower). And, to me, it feels like a heuristic to the real factor, which is what duration can be reasonably spent by this computation. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27256#discussion_r2589353598 From clanger at openjdk.org Thu Dec 4 15:09:00 2025 From: clanger at openjdk.org (Christoph Langer) Date: Thu, 4 Dec 2025 15:09:00 GMT Subject: Integrated: 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public In-Reply-To: References: Message-ID: On Wed, 12 Mar 2025 15:57:40 GMT, Christoph Langer wrote: > This PR addresses an issue that can be observed when building on Windows with configure options `--enable-linkable-runtime` and `--with-external-symbols-in-bundles=public`. > > The problem is that with this special build configuration, we build two sets of .pdb files for the binaries. The first set is the standard debug symbols files named .pdb. The second set consists of stripped debug symbols file called .stripped.pdb which have less information but enough to present line numbers in hs-err files. > > During build we use the *.stripped.pdb files for compiling the jmods and also the bundle files. However, in the images folder, both sets of .pdb files exist. The tests for runtime linking will now, in the absence of jmod files, pick up the .pdb files (without *stripped*) from images, but in the runtime the hashes of the *stripped* files are stored. > > With this change, the standard .pdb files in the `--with-external-symbols-in-bundles=public` configuration are now the stripped files and we create a set of full pdb files named *.full.pdb. Jmods and Bundles still contain the stripped pdb files and we also fix the issue that the debug symbols bundle also contained stripped pdb files so far. With this fix, it will contain the full pdb files and extracting these over a JDK runtime will replace stripped pdbs with full pdbs. This pull request has now been integrated. Changeset: 33dda887 Author: Christoph Langer URL: https://git.openjdk.org/jdk/commit/33dda887d99d39b2d003fd6521db97d45da474f0 Stats: 102 lines in 7 files changed: 35 ins; 46 del; 21 mod 8351842: Windows specific issues in combination of JEP 493 and --with-external-symbols-in-bundles=public Reviewed-by: erikj, mbaesken ------------- PR: https://git.openjdk.org/jdk/pull/24012 From kurt at openjdk.org Thu Dec 4 17:02:47 2025 From: kurt at openjdk.org (Kurt Miller) Date: Thu, 4 Dec 2025 17:02:47 GMT Subject: Integrated: 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng In-Reply-To: References: Message-ID: On Fri, 14 Nov 2025 14:48:14 GMT, Kurt Miller wrote: > When building with external libpng the PNG defines added to CFLAGS may conflict with the installed libpng header pnglibconf.h resulting in compilation errors. For example on OpenBSD/aarch64: > > `/usr/local/include/pnglibconf.h:207:9: error: 'PNG_ARM_NEON_OPT' macro redefined [-Werror,-Wmacro-redefined]` > > This moves all `-DPNG_*` into the case where internal libpng is used. This has only been tested with the tier1 github actions so needs to be checked on Linux/ppc and AIX. This pull request has now been integrated. Changeset: 45dcc0e7 Author: Kurt Miller Committer: Jayathirth D V URL: https://git.openjdk.org/jdk/commit/45dcc0e7e26b8130236c5ba80edb54fa530dab57 Stats: 37 lines in 1 file changed: 18 ins; 18 del; 1 mod 8371914: PNG defines in CFLAGS can cause compilation errors with external libpng Reviewed-by: erikj, jdv ------------- PR: https://git.openjdk.org/jdk/pull/28324 From nbenalla at openjdk.org Thu Dec 4 17:06:54 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Thu, 4 Dec 2025 17:06:54 GMT Subject: Integrated: 8370890: Start of release updates for JDK 27 In-Reply-To: References: Message-ID: On Tue, 4 Nov 2025 11:45:04 GMT, Nizar Benalla wrote: > Get JDK 27 underway. This pull request has now been integrated. Changeset: c55287d1 Author: Nizar Benalla Committer: Jesper Wilhelmsson URL: https://git.openjdk.org/jdk/commit/c55287d197ef024033f8dfbb5a365cb091bc67fb Stats: 1233 lines in 50 files changed: 1157 ins; 0 del; 76 mod 8370890: Start of release updates for JDK 27 8370893: Add SourceVersion.RELEASE_27 8370894: Add source 27 and target 27 to javac Reviewed-by: darcy, iris, liach, erikj, dholmes ------------- PR: https://git.openjdk.org/jdk/pull/28130 From mikael at openjdk.org Thu Dec 4 17:46:40 2025 From: mikael at openjdk.org (Mikael Vidstedt) Date: Thu, 4 Dec 2025 17:46:40 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 11:31:46 GMT, Nick Hall wrote: >> _Purpose_ >> >> This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. >> >> _Rationale_ >> >> Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. >> >> The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). >> >> Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. >> >> _Implementation Detail_ >> >> Note that there were multiple possible ways of doing this: >> >> 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. >> >> 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. >> >> 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. >> >> I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensat... > > Nick Hall has updated the pull request incrementally with one additional commit since the last revision: > > Update the devkit build scripts to allow the devkit to include the > required packages for KRB5 (libkrb and libcom_err). > > This was run on RHEL8, building for OL6, which required adding isl to > allow the latest gcc to build (this has been required for some time I > think). > > It also fixes one missing `--prefix` option which was causing things to > not be correctly installed in the sysroot. If I understand this correctly, the ISL addition to devkit/Tools.gmk is orthogonal to the kerberos related changes. If so, can I suggest splitting that out into a separate change please? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3613507509 From weijun at openjdk.org Thu Dec 4 18:18:51 2025 From: weijun at openjdk.org (Weijun Wang) Date: Thu, 4 Dec 2025 18:18:51 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 11:31:46 GMT, Nick Hall wrote: >> _Purpose_ >> >> This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. >> >> _Rationale_ >> >> Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. >> >> The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). >> >> Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. >> >> _Implementation Detail_ >> >> Note that there were multiple possible ways of doing this: >> >> 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. >> >> 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. >> >> 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. >> >> I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensat... > > Nick Hall has updated the pull request incrementally with one additional commit since the last revision: > > Update the devkit build scripts to allow the devkit to include the > required packages for KRB5 (libkrb and libcom_err). > > This was run on RHEL8, building for OL6, which required adding isl to > allow the latest gcc to build (this has been required for some time I > think). > > It also fixes one missing `--prefix` option which was causing things to > not be correctly installed in the sysroot. Hi Nick, Thank you for the extra work on updating the devkit. After thinking it through, it?s probably not ideal to continue with the current JNI-based approach. Newer releases encourage using FFM for native interaction, and the JNI path adds extra build-time dependencies. If you?re open to it, this is a good opportunity to rewrite the feature with FFM. I?ve tried parts of it and it looks feasible. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3613683504 From erikj at openjdk.org Thu Dec 4 18:40:45 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 4 Dec 2025 18:40:45 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v13] In-Reply-To: References: <4_rkUaOwuH6_uQRt0HnZKey0t4Z83CQvcrHEqS-VYys=.c825780e-778b-431e-9800-b3a548f1355d@github.com> Message-ID: On Mon, 1 Dec 2025 14:54:40 GMT, Erik Joelsson wrote: >>> If you want to drive adoption, or even think about making this mandatory at build time, then at the very least you need to make sure the devkits produced by the makefiles under `make/devkit/...` contain the necessary build time dependencies and generally work with this feature. At least at Oracle we rely on these for our builds and my impression is that at least some other vendors do too. >> >> Thanks. I had a go at this today, but am struggling to build a devkit (even without any changes). Can you recommend a suitable host OS for building one, and which OS targets I should use to build the devkits to test? >> >> (I've tried building a devkit for Fedora 41 using both RHEL8 and Fedora 41 as host OSes, but am getting a variety of issues in the build) > >> Thanks. I had a go at this today, but am struggling to build a devkit (even without any changes). Can you recommend a suitable host OS for building one, and which OS targets I should use to build the devkits to test? >> >> (I've tried building a devkit for Fedora 41 using both RHEL8 and Fedora 41 as host OSes, but am getting a variety of issues in the build) > > I haven't used this myself in a while, but I believe our internal kits use Oracle Linux 7 as host (in a container) and Oracle Linux 6 as target. RHEL should be equivalent to Oracle Linux, at least in this context. These are quite old, but the motivation for us to use devkits is to guarantee compatibility with old Linux versions. The host OS dictates the oldest where the kit itself can be used and the target dictates the oldest where the subsequently built JDK can be used. > > That said, getting a devkit to compile can be finicky for all sorts of reasons. The important part in this case is the sysroot, which is what you are going to change here, by adding extra packages. At least in theory, you could generate just a sysroot and supply that to the JDK build to verify this. I don't think there is a readily available make target for that though. > @erikj79 after a little playing around, I've managed to get this to work. > > I can now build an Oracle Linux 6 devkit (from RHEL8) and can build a JDK wih my changes from this devkit. It required a few changes beyond just the packages for libkrb5 - there was a missing library (ISL) required for the newer gcc, and a bug causing some of the files to attempt to install in /usr/local (missing `--prefix`). I'm not sure if this was exactly what you're looking for, but it's all on the latest commit on this branch for your review. I'm not sure how to test beyond the tests I've done locally. That's impressive getting it to work. As Mikael says, I think it would be better to break out any additional changes you made to the devkit makefile into a separate change, if we still want to go that route. I haven't looked into the ISL dependency much, but it looks like something we should add to the devkit for newer GCCs. For this change I was mostly interested in the extra libraries that would be needed in the sysroot. However, as @wangweij pointed out, if this could be handled with FFM instead of JNI, that would be even better and avoid all this hassle. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3613800173 From erikj at openjdk.org Thu Dec 4 21:41:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 4 Dec 2025 21:41:12 GMT Subject: RFR: 8373113: Fix whitespace in RunTests.gmk Message-ID: While reading RunTests.gmk recently I found several instances of bad whitespace usage, tabs vs spaces. Correct usage of tabs is important in makefiles and even if none of these are particularly severe on their own, they can compound with other mistakes to create very hard to debug problems. ------------- Commit messages: - JDK-8373113 Changes: https://git.openjdk.org/jdk/pull/28668/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28668&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373113 Stats: 9 lines in 1 file changed: 0 ins; 0 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/28668.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28668/head:pull/28668 PR: https://git.openjdk.org/jdk/pull/28668 From duke at openjdk.org Thu Dec 4 22:24:44 2025 From: duke at openjdk.org (David Alayachew) Date: Thu, 4 Dec 2025 22:24:44 GMT Subject: RFR: 8367530: The exhaustiveness errors could be improved [v8] In-Reply-To: References: <8dZbRs3s5I3mI8Iwlq1NW30PJEw8huzJE9zzlCoQrS4=.5e78a559-b585-4eee-b02f-087e586b0f5c@github.com> Message-ID: On Thu, 4 Dec 2025 14:40:48 GMT, Jan Lahoda wrote: >> While I agree that having a timeout in weird/non-standard in javac, I believe it is the first time when we have a process that a) can run for a very long time; b) is not required for correctness. In all other cases I can recall, if some process is slow (including e.g. verifying exhaustiveness), then it is required for correctness. And so we cannot skip it based on criteria like time. >> >> The timeout here provides a way to say how much real-world time is the user willing to invest to get the outcome - if more time is invested, more detailed missing patterns may possibly be computed. It is a somewhat weird approach for javac, but it is a limit that (I think) the user and javac can agree on. >> >> We could introduce a limit on e.g. the depth to which we expand, but adding one level of nesting may affect performance significantly or almost not at all, depending on e.g. the record type form/shape. >> >> E.g. having a record with many components, where each component is a sealed type with many permitted subtypes, one level of nesting may lead to a high number of newly generated patterns possibly taking a lot of time to go through them. But having a record that has a single component that is not a sealed type should only generate one pattern, and so have minimal impact. > > As an example, if I have: > > package exhaustiveness.test; > > public class Deep { > > public record Box0(Box1 v) {} > public record Box1(Box2 v) {} > public record Box2(Box3 v) {} > public record Box3(Box4 v) {} > public record Box4(Box5 v) {} > public record Box5(Box6 v) {} > public record Box6(Box7 v) {} > public record Box7(Box8 v) {} > public record Box8(Box9 v) {} > public record Box9(I v) {} > public sealed interface I {} > public final class C1 implements I {} > public final class C2 implements I {} > > public int test(Box0 box0) { > return switch (box0) { > case Box0(Box1(Box2(Box3(Box4(Box5(Box6(Box7(Box8(Box9(C1 _)))))))))) -> 0; > }; > } > } > > > this runs very quickly on my laptop <1s in total, despite recursing quite deep (and it finds the one missing pattern). If I have something like: > > package exhaustiveness.test; > > public class Shallow { > > public sealed interface Base {} > > public sealed interface I0 extends Base {} > public non-sealed interface L0 extends Base {} > > public non-sealed interface L1 extends I0 {} > public non-sealed interface L2 extends I0 {} > public non-sealed interface L3 extends I0 {} > // public non-sealed interface L4 extends I0 {} > // public non-sealed interface L5 extends I0 {} > // public non-sealed interface L6 extends I0 {} > // public non-sealed interface L7 extends I0 {} > // public non-sealed interface L8 extends I0 {} > // public non-sealed interface L9 extends I0 {} > public record Data(Base b1, Base b2, Base b3, Base b4) {} > public int test(Data d) { > return switch (d) { > case Data(I0 _, I0 _, I0 _, I0 _) -> 0; > case Data(L0 _, L0 _, L0 _, L0 _) -> 0; > case Data(I0 _, _, _, _) -> 0; > }; > } > } > > > the current run time on my laptop is ~25s; if I un-comment L4, the time is ~2m15s. Also, in this case it is relatively difficult to reduce details, as if the record pattern is not expanded, the less-detailed version is simply `Data _`. > > So, while there may be a way to estimate complexity, it depends on many factors - the depth, the number of sealed types, but also the user-written patterns (as those may make exhaustiveness computation faster or slower). And, to me, it feels like a heuristic to the real factor, which is what duration can be reasonably spent by this computation. Hello. I have multiple very deep and wide real-world hierarchies that I could run this against as a simple test. They mix sealed interfaces, enums, and records. In case we want to see which commandline option is a better fit. For example, one project in particular that very much needed this example generator went up to about L6, but only 3 Data slots, and not quite as wide. I have multiple that are ready to test right now. The data might be useful. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27256#discussion_r2590781125 From serb at openjdk.org Thu Dec 4 23:35:08 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Thu, 4 Dec 2025 23:35:08 GMT Subject: RFR: 8349378: Build splashscreen lib with SIZE optimization In-Reply-To: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> References: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> Message-ID: On Thu, 6 Feb 2025 14:03:16 GMT, Erik Joelsson wrote: >> The splashscreen lib is currently built with LOW optimization. >> This might be fine because it is not very performance critical (and LOW is not really low when looking at the opt-flags used). >> But building it with SIZE optimization makes it 10-20 % smaller on some platforms which helps to reduce image size. >> >> current settings (LOW optimization) : >> --------------------------------------------------- >> 2.5M /aix_ppc64/jdk-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) >> >> 468K /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib >> 1.6M /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> 388K /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib >> 1.5M /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> >> 368K /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 376K /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.8M /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 500K /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 364K /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> >> >> new settings (SIZE optimization) : >> -------------------------------------------------- >> 2.1M /aix_ppc64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) >> >> 404K /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib >> 1.5M /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> 316K /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib >> 1.4M /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> >> 372K /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.5M /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 304K /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.5M /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 376K /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.4M /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 304K /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.4M /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> >> On Linux aarch64 only the debuginfo shrinks but the lib stays abo... > > I think this looks good, but someone from client should probably also weigh in. @erikj79 @MBaesken I wonder, is it possible to switch this parameter via configuration or something? Or is the only way to tweak the OPT level for the library by modifying the makefile? I tried using with-extra-cflags, but it seems to be appended before OPT, so it?s ignored. ------------- PR Comment: https://git.openjdk.org/jdk/pull/23493#issuecomment-3614732683 From erikj at openjdk.org Thu Dec 4 23:43:18 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 4 Dec 2025 23:43:18 GMT Subject: RFR: 8349378: Build splashscreen lib with SIZE optimization In-Reply-To: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> References: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> Message-ID: On Thu, 6 Feb 2025 14:03:16 GMT, Erik Joelsson wrote: >> The splashscreen lib is currently built with LOW optimization. >> This might be fine because it is not very performance critical (and LOW is not really low when looking at the opt-flags used). >> But building it with SIZE optimization makes it 10-20 % smaller on some platforms which helps to reduce image size. >> >> current settings (LOW optimization) : >> --------------------------------------------------- >> 2.5M /aix_ppc64/jdk-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) >> >> 468K /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib >> 1.6M /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> 388K /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib >> 1.5M /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> >> 368K /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 376K /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.8M /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 500K /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> 364K /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so >> 1.7M /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo >> >> >> new settings (SIZE optimization) : >> -------------------------------------------------- >> 2.1M /aix_ppc64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) >> >> 404K /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib >> 1.5M /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> 316K /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib >> 1.4M /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM >> >> 372K /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.5M /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 304K /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.5M /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 376K /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.4M /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> 304K /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so >> 1.4M /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo >> >> On Linux aarch64 only the debuginfo shrinks but the lib stays abo... > > I think this looks good, but someone from client should probably also weigh in. > @erikj79 @MBaesken I wonder, is it possible to switch this parameter via configuration or something? Or is the only way to tweak the OPT level for the library by modifying the makefile? I tried using with-extra-cflags, but it seems to be appended before OPT, so it?s ignored. We do not support changing optimization levels through configure or make arguments. You need to edit makefiles for each individual library. ------------- PR Comment: https://git.openjdk.org/jdk/pull/23493#issuecomment-3614748589 From serb at openjdk.org Fri Dec 5 00:03:03 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Fri, 5 Dec 2025 00:03:03 GMT Subject: RFR: 8345265: Minor improvements for LTO across all compilers [v2] In-Reply-To: References: Message-ID: <9M7wUIoPHmHhIuq_ogQVrmE731WXZBi1qWKo4aq4haI=.a7cb7dac-5475-49e6-9647-50c69c58736a@github.com> On Thu, 27 Nov 2025 04:24:23 GMT, Julian Waters wrote: >Hmm, I didn't create this with the idea of backporting it in mind. Should I do that? Not necessarily the one where you do refactoring, only the part for the missing ?no omit frame pointer? option. It can be done separately to simplify the backport. ------------- PR Comment: https://git.openjdk.org/jdk/pull/22464#issuecomment-3614783229 From serb at openjdk.org Fri Dec 5 00:07:09 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Fri, 5 Dec 2025 00:07:09 GMT Subject: RFR: 8349378: Build splashscreen lib with SIZE optimization In-Reply-To: References: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> Message-ID: On Thu, 4 Dec 2025 23:40:42 GMT, Erik Joelsson wrote: >We do not support changing optimization levels through configure or make arguments. You need to edit makefiles for each individual library. Are there any blockers to setting a global default that would override the optimization level for all libraries(if set)? For example, making everything build with ?size optimized? flags by default. This could be useful when producing different bundles optimized for different use cases, while still using the same source code. ------------- PR Comment: https://git.openjdk.org/jdk/pull/23493#issuecomment-3614791053 From tbell at openjdk.org Fri Dec 5 00:44:55 2025 From: tbell at openjdk.org (Tim Bell) Date: Fri, 5 Dec 2025 00:44:55 GMT Subject: RFR: 8373113: Fix whitespace in RunTests.gmk In-Reply-To: References: Message-ID: <61yFkEmWEFTS6j14ijDQvOO0pMIX8j8eQJ_9nmAmwCs=.6f9cf4a6-813f-4e67-903f-1f40a46cb7da@github.com> On Thu, 4 Dec 2025 21:32:38 GMT, Erik Joelsson wrote: > While reading RunTests.gmk recently I found several instances of bad whitespace usage, tabs vs spaces. Correct usage of tabs is important in makefiles and even if none of these are particularly severe on their own, they can compound with other mistakes to create very hard to debug problems. Looks good ------------- Marked as reviewed by tbell (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28668#pullrequestreview-3542678293 From mbaesken at openjdk.org Fri Dec 5 07:50:30 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Fri, 5 Dec 2025 07:50:30 GMT Subject: RFR: 8349378: Build splashscreen lib with SIZE optimization In-Reply-To: References: <2_lf6_ks-tFekeOeBQ9OTd9CB_ejCX5qRCEpCZhhCd8=.5ff2b541-e1bd-47d3-b838-95d608d0a39e@github.com> Message-ID: <67_aZThHK6eI8SAfrEhnddTUmF4TgHiBPdCgTi_M-bU=.bc79dc3c-f675-437b-81b7-8dcbceef9ca1@github.com> On Fri, 5 Dec 2025 00:04:18 GMT, Sergey Bylokhov wrote: > > We do not support changing optimization levels through configure or make arguments. You need to edit makefiles for each individual library. > > Are there any blockers to setting a global default that would override the optimization level for all libraries(if set)? For example, making everything build with ?size optimized? flags by default. This could be useful when producing different bundles optimized for different use cases, while still using the same source code. For libjvm we have the 'jvm feature' `opt-size` (probably you know about it?) ; I think we should have something similar for the other native libs too. But afaik it is not (yet) supported with an easy configure flag. ------------- PR Comment: https://git.openjdk.org/jdk/pull/23493#issuecomment-3615674228 From mbaesken at openjdk.org Fri Dec 5 08:15:12 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Fri, 5 Dec 2025 08:15:12 GMT Subject: RFR: 8349378: Build splashscreen lib with SIZE optimization In-Reply-To: References: Message-ID: On Thu, 6 Feb 2025 13:52:49 GMT, Matthias Baesken wrote: > The splashscreen lib is currently built with LOW optimization. > This might be fine because it is not very performance critical (and LOW is not really low when looking at the opt-flags used). > But building it with SIZE optimization makes it 10-20 % smaller on some platforms which helps to reduce image size. > > current settings (LOW optimization) : > --------------------------------------------------- > 2.5M /aix_ppc64/jdk-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) > > 468K /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib > 1.6M /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM > 388K /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib > 1.5M /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM > > 368K /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.so > 1.7M /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo > 376K /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so > 1.8M /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo > 500K /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.so > 1.7M /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo > 364K /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so > 1.7M /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo > > > new settings (SIZE optimization) : > -------------------------------------------------- > 2.1M /aix_ppc64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so (not split debuginfo file on AIX currently) > > 404K /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib > 1.5M /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM > 316K /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib > 1.4M /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM > > 372K /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so > 1.5M /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo > 304K /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so > 1.5M /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo > 376K /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.so > 1.4M /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo > 304K /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so > 1.4M /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo > > On Linux aarch64 only the debuginfo shrinks but the lib stays about the same in size. Maybe -Os does not work as well on this platform. > Other UNIX pl... See also https://wiki.openjdk.org/display/Build/Native+library+optimization+level+research where I compared some time ago different OPT-levels and how they influenced the binary size . For some libs like LIBJDWP there is room for improvement by setting SIZE instead of LOW ; but not all people like this as a default , so having a configure setting for this might be a good idea - gives more flexibility . ------------- PR Comment: https://git.openjdk.org/jdk/pull/23493#issuecomment-3615743401 From duke at openjdk.org Fri Dec 5 11:10:20 2025 From: duke at openjdk.org (Nick Hall) Date: Fri, 5 Dec 2025 11:10:20 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v13] In-Reply-To: References: <4_rkUaOwuH6_uQRt0HnZKey0t4Z83CQvcrHEqS-VYys=.c825780e-778b-431e-9800-b3a548f1355d@github.com> Message-ID: On Thu, 4 Dec 2025 18:38:06 GMT, Erik Joelsson wrote: > > @erikj79 after a little playing around, I've managed to get this to work. > > I can now build an Oracle Linux 6 devkit (from RHEL8) and can build a JDK wih my changes from this devkit. It required a few changes beyond just the packages for libkrb5 - there was a missing library (ISL) required for the newer gcc, and a bug causing some of the files to attempt to install in /usr/local (missing `--prefix`). I'm not sure if this was exactly what you're looking for, but it's all on the latest commit on this branch for your review. I'm not sure how to test beyond the tests I've done locally. > > That's impressive getting it to work. As Mikael says, I think it would be better to break out any additional changes you made to the devkit makefile into a separate change, if we still want to go that route. I haven't looked into the ISL dependency much, but it looks like something we should add to the devkit for newer GCCs. For this change I was mostly interested in the extra libraries that would be needed in the sysroot. However, as @wangweij pointed out, if this could be handled with FFM instead of JNI, that would be even better and avoid all this hassle. Happy to - will somebody need to create me an issue in the tracker so I can raise a PR? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3616413154 From jvernee at openjdk.org Fri Dec 5 11:10:27 2025 From: jvernee at openjdk.org (Jorn Vernee) Date: Fri, 5 Dec 2025 11:10:27 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v7] In-Reply-To: <7ayMTZ4nXMyB1SXNRcYGjdxidNHDcAUNv_8fQZDUaPI=.a558d3a2-1d3e-4b45-8ba7-393c55a52785@github.com> References: <7ayMTZ4nXMyB1SXNRcYGjdxidNHDcAUNv_8fQZDUaPI=.a558d3a2-1d3e-4b45-8ba7-393c55a52785@github.com> Message-ID: On Thu, 4 Dec 2025 01:48:31 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure Latest version looks much better to me (as mentioned offline). What was the issue with the failing test around the removal of the _V guard template? Also, looks like the new IR test is failing in GHA test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 48: > 46: public static void main(String[] args) { > 47: TestFramework.runWithFlags( > 48: "-XX:+UnlockExperimentalVMOptions" Why is this flag needed? ------------- PR Review: https://git.openjdk.org/jdk/pull/28585#pullrequestreview-3544230655 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2592287594 From weijun at openjdk.org Fri Dec 5 12:35:00 2025 From: weijun at openjdk.org (Weijun Wang) Date: Fri, 5 Dec 2025 12:35:00 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: <92a9NBPWwWbektJmI-RKJF9boCN9OpwNs4A5eX4uQT0=.0545f526-3fcd-4d4d-a76e-7f394d13eede@github.com> On Thu, 4 Dec 2025 11:31:46 GMT, Nick Hall wrote: >> _Purpose_ >> >> This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. >> >> _Rationale_ >> >> Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. >> >> The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). >> >> Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. >> >> _Implementation Detail_ >> >> Note that there were multiple possible ways of doing this: >> >> 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. >> >> 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. >> >> 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. >> >> I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensat... > > Nick Hall has updated the pull request incrementally with one additional commit since the last revision: > > Update the devkit build scripts to allow the devkit to include the > required packages for KRB5 (libkrb and libcom_err). > > This was run on RHEL8, building for OL6, which required adding isl to > allow the latest gcc to build (this has been required for some time I > think). > > It also fixes one missing `--prefix` option which was causing things to > not be correctly installed in the sysroot. A new enhancement is filed at https://bugs.openjdk.org/browse/JDK-8373137. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3616738507 From erikj at openjdk.org Fri Dec 5 14:04:54 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 5 Dec 2025 14:04:54 GMT Subject: Integrated: 8373113: Fix whitespace in RunTests.gmk In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 21:32:38 GMT, Erik Joelsson wrote: > While reading RunTests.gmk recently I found several instances of bad whitespace usage, tabs vs spaces. Correct usage of tabs is important in makefiles and even if none of these are particularly severe on their own, they can compound with other mistakes to create very hard to debug problems. This pull request has now been integrated. Changeset: c09167df Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/c09167df60f44642492ec20f133713388f4802ad Stats: 9 lines in 1 file changed: 0 ins; 0 del; 9 mod 8373113: Fix whitespace in RunTests.gmk Reviewed-by: tbell ------------- PR: https://git.openjdk.org/jdk/pull/28668 From bkilambi at openjdk.org Fri Dec 5 14:45:10 2025 From: bkilambi at openjdk.org (Bhavana Kilambi) Date: Fri, 5 Dec 2025 14:45:10 GMT Subject: RFR: 8371711: AArch64: SVE intrinsics for Arrays.sort methods (int, float) Message-ID: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> This patch adds an SVE implementation of primitive array sorting (Arrays.sort()) on AArch64 systems that support SVE. On non-SVE machines, we fall back to the existing Java implementation. For smaller arrays (length <= 64), we use insertion sort; for larger arrays we use an SVE-vectorized quicksort partitioner followed by an odd-even transposition cleanup pass. The SVE path is enabled by default for int type. For float type, it is available through the experimental flag : `-XX:+UnlockExperimentalVMOptions -XX:+UseSVELibSimdSortForFP ` Without this flag being enabled, the default Java implementation would be executed for floats (the flag is disabled by default). Float is gated due to observed regressions on some small/medium sizes. On larger arrays, the SVE float path shows upto 1.47x speedup on Neoverse V2 and 2.12x on Neoverse V1. Following are the performance numbers for **ArraysSort JMH benchmark** - **Case A:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag disabled (which is the default). **Case B:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag enabled (the int numbers will be the same but this now enables SVE vectorized sorting for floats). **We would want the ratios to be >= 1 to be at par or better than the default Java implementation (master branch).** On Neoverse V1: Benchmark (size) Mode Cnt A B ArraysSort.floatParallelSort 10 avgt 3 0.98 0.98 ArraysSort.floatParallelSort 25 avgt 3 1.01 0.83 ArraysSort.floatParallelSort 50 avgt 3 0.99 0.55 ArraysSort.floatParallelSort 75 avgt 3 0.99 0.66 ArraysSort.floatParallelSort 100 avgt 3 0.98 0.66 ArraysSort.floatParallelSort 1000 avgt 3 1.00 0.84 ArraysSort.floatParallelSort 10000 avgt 3 1.03 1.52 ArraysSort.floatParallelSort 100000 avgt 3 1.03 1.46 ArraysSort.floatParallelSort 1000000 avgt 3 0.98 1.81 ArraysSort.floatSort 10 avgt 3 1.00 0.98 ArraysSort.floatSort 25 avgt 3 1.00 0.81 ArraysSort.floatSort 50 avgt 3 0.99 0.56 ArraysSort.floatSort 75 avgt 3 0.99 0.65 ArraysSort.floatSort 100 avgt 3 0.98 0.70 ArraysSort.floatSort 1000 avgt 3 0.99 0.84 ArraysSort.floatSort 10000 avgt 3 0.99 1.72 ArraysSort.floatSort 100000 avgt 3 1.00 1.94 ArraysSort.floatSort 1000000 avgt 3 1.00 2.13 ArraysSort.intParallelSort 10 avgt 3 1.08 1.08 ArraysSort.intParallelSort 25 avgt 3 1.04 1.05 ArraysSort.intParallelSort 50 avgt 3 1.29 1.30 ArraysSort.intParallelSort 75 avgt 3 1.16 1.16 ArraysSort.intParallelSort 100 avgt 3 1.07 1.07 ArraysSort.intParallelSort 1000 avgt 3 1.13 1.13 ArraysSort.intParallelSort 10000 avgt 3 1.49 1.38 ArraysSort.intParallelSort 100000 avgt 3 1.64 1.62 ArraysSort.intParallelSort 1000000 avgt 3 2.26 2.27 ArraysSort.intSort 10 avgt 3 1.08 1.08 ArraysSort.intSort 25 avgt 3 1.02 1.02 ArraysSort.intSort 50 avgt 3 1.25 1.25 ArraysSort.intSort 75 avgt 3 1.16 1.20 ArraysSort.intSort 100 avgt 3 1.07 1.07 ArraysSort.intSort 1000 avgt 3 1.12 1.13 ArraysSort.intSort 10000 avgt 3 1.94 1.95 ArraysSort.intSort 100000 avgt 3 1.86 1.86 ArraysSort.intSort 1000000 avgt 3 2.09 2.09 On Neoverse V2: Benchmark (size) Mode Cnt A B ArraysSort.floatParallelSort 10 avgt 3 1.02 1.02 ArraysSort.floatParallelSort 25 avgt 3 0.97 0.71 ArraysSort.floatParallelSort 50 avgt 3 0.94 0.65 ArraysSort.floatParallelSort 75 avgt 3 0.96 0.82 ArraysSort.floatParallelSort 100 avgt 3 0.95 0.84 ArraysSort.floatParallelSort 1000 avgt 3 1.01 0.94 ArraysSort.floatParallelSort 10000 avgt 3 1.01 1.25 ArraysSort.floatParallelSort 100000 avgt 3 1.01 1.09 ArraysSort.floatParallelSort 1000000 avgt 3 1.00 1.10 ArraysSort.floatSort 10 avgt 3 1.02 1.00 ArraysSort.floatSort 25 avgt 3 0.99 0.76 ArraysSort.floatSort 50 avgt 3 0.97 0.66 ArraysSort.floatSort 75 avgt 3 1.01 0.83 ArraysSort.floatSort 100 avgt 3 1.00 0.85 ArraysSort.floatSort 1000 avgt 3 0.99 0.93 ArraysSort.floatSort 10000 avgt 3 1.00 1.28 ArraysSort.floatSort 100000 avgt 3 1.00 1.37 ArraysSort.floatSort 1000000 avgt 3 1.00 1.48 ArraysSort.intParallelSort 10 avgt 3 1.05 1.05 ArraysSort.intParallelSort 25 avgt 3 0.99 0.84 ArraysSort.intParallelSort 50 avgt 3 1.03 1.14 ArraysSort.intParallelSort 75 avgt 3 0.91 0.99 ArraysSort.intParallelSort 100 avgt 3 0.98 0.96 ArraysSort.intParallelSort 1000 avgt 3 1.32 1.30 ArraysSort.intParallelSort 10000 avgt 3 1.40 1.40 ArraysSort.intParallelSort 100000 avgt 3 1.00 1.04 ArraysSort.intParallelSort 1000000 avgt 3 1.15 1.14 ArraysSort.intSort 10 avgt 3 1.05 1.05 ArraysSort.intSort 25 avgt 3 1.03 1.03 ArraysSort.intSort 50 avgt 3 1.08 1.14 ArraysSort.intSort 75 avgt 3 0.88 0.98 ArraysSort.intSort 100 avgt 3 1.01 0.99 ArraysSort.intSort 1000 avgt 3 1.3 1.32 ArraysSort.intSort 10000 avgt 3 1.43 1.43 ArraysSort.intSort 100000 avgt 3 1.30 1.30 ArraysSort.intSort 1000000 avgt 3 1.37 1.37 ------------- Commit messages: - AArch64 SVE implementation for Arrays.sort - Prepare base for SVE implementation in libsimdsort Changes: https://git.openjdk.org/jdk/pull/28675/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28675&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8371711 Stats: 1109 lines in 26 files changed: 1092 ins; 12 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/28675.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28675/head:pull/28675 PR: https://git.openjdk.org/jdk/pull/28675 From erikj at openjdk.org Fri Dec 5 19:00:55 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 5 Dec 2025 19:00:55 GMT Subject: RFR: 8371711: AArch64: SVE intrinsics for Arrays.sort methods (int, float) In-Reply-To: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> References: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> Message-ID: On Fri, 5 Dec 2025 09:44:16 GMT, Bhavana Kilambi wrote: > This patch adds an SVE implementation of primitive array sorting (Arrays.sort()) on AArch64 systems that support SVE. On non-SVE machines, we fall back to the existing Java implementation. > > For smaller arrays (length <= 64), we use insertion sort; for larger arrays we use an SVE-vectorized quicksort partitioner followed by an odd-even transposition cleanup pass. > > The SVE path is enabled by default for int type. For float type, it is available through the experimental flag : > > `-XX:+UnlockExperimentalVMOptions -XX:+UseSVELibSimdSortForFP > ` > Without this flag being enabled, the default Java implementation would be executed for floats (the flag is disabled by default). > > Float is gated due to observed regressions on some small/medium sizes. On larger arrays, the SVE float path shows upto 1.47x speedup on Neoverse V2 and 2.12x on Neoverse V1. > > Following are the performance numbers for **ArraysSort JMH benchmark** - > > **Case A:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag disabled (which is the default). > **Case B:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag enabled (the int numbers will be the same but this now enables SVE vectorized sorting for floats). > **We would want the ratios to be >= 1 to be at par or better than the default Java implementation (master branch).** > > On Neoverse V1: > > > Benchmark (size) Mode Cnt A B > ArraysSort.floatParallelSort 10 avgt 3 0.98 0.98 > ArraysSort.floatParallelSort 25 avgt 3 1.01 0.83 > ArraysSort.floatParallelSort 50 avgt 3 0.99 0.55 > ArraysSort.floatParallelSort 75 avgt 3 0.99 0.66 > ArraysSort.floatParallelSort 100 avgt 3 0.98 0.66 > ArraysSort.floatParallelSort 1000 avgt 3 1.00 0.84 > ArraysSort.floatParallelSort 10000 avgt 3 1.03 1.52 > ArraysSort.floatParallelSort 100000 avgt 3 1.03 1.46 > ArraysSort.floatParallelSort 1000000 avgt 3 0.98 1.81 > ArraysSort.floatSort 10 avgt 3 1.00 0.98 > ArraysSort.floatSort 25 avgt 3 1.00 0.81 > ArraysSort.floatSort 50 avgt 3 0.99 0.56 > ArraysSort.floatSort 75 avgt 3 0.99 0.65 > ArraysSort.floatSort 100 avgt 3 0.98 0.70 > ArraysSort.floatSort 1000 avgt 3 0.99 0.84 > ArraysSort.floatSort ... make/modules/java.base/Lib.gmk line 225: > 223: > 224: TARGETS += $(BUILD_LIBSIMD_SORT) > 225: endif This whole block should be combined with the existing block above, something like this: ifeq ($(call isTargetOs, linux)+$(call isTargetCpu, x86_64 aarch64)+$(INCLUDE_COMPILER2)+$(filter $(TOOLCHAIN_TYPE), gcc), true+true+true+gcc) ############################################################################## ## Build libsimdsort ############################################################################## $(eval $(call SetupJdkLibrary, BUILD_LIBSIMD_SORT, \ NAME := simdsort, \ LINK_TYPE := C++, \ OPTIMIZATION := HIGH, \ INCLUDES := $(OPENJDK_TARGET_CPU_ARCH), \ CXXFLAGS := -std=c++17, \ CXXFLAGS_linux_aarch64 := -march=armv8.2-a+sve, \ DISABLED_WARNINGS_gcc := unused-variable, \ LIBS_linux := $(LIBM), \ )) TARGETS += $(BUILD_LIBSIMD_SORT) endif Unfortunately we don't currently support CXXFLAGS__, just CFLAGS__, but this can be fixed and I think it should be since we now have a need for it. diff --git a/make/common/native/Flags.gmk b/make/common/native/Flags.gmk index efb4c08e74c..2f3680af7c7 100644 --- a/make/common/native/Flags.gmk +++ b/make/common/native/Flags.gmk @@ -106,10 +106,12 @@ define SetupCompilerFlags $1_EXTRA_CFLAGS += -DSTATIC_BUILD=1 endif - # Pickup extra OPENJDK_TARGET_OS_TYPE, OPENJDK_TARGET_OS and/or TOOLCHAIN_TYPE - # dependent variables for CXXFLAGS. + # Pickup extra OPENJDK_TARGET_OS_TYPE, OPENJDK_TARGET_OS, TOOLCHAIN_TYPE and + # OPENJDK_TARGET_OS plus OPENJDK_TARGET_CPU pair dependent variables for + # CXXFLAGS. $1_EXTRA_CXXFLAGS := $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)) \ - $$($1_CXXFLAGS_$(TOOLCHAIN_TYPE)) + $$($1_CXXFLAGS_$(TOOLCHAIN_TYPE)) \ + $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_$(OPENJDK_TARGET_CPU)) ifneq ($(DEBUG_LEVEL), release) # Pickup extra debug dependent variables for CXXFLAGS The above at least compiles for me. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28675#discussion_r2593665862 From liach at openjdk.org Mon Dec 8 02:08:37 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 02:08:37 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision: - Bugs and verify loader leak - Try to avoid loader leak - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure - Test from Jorn - Copyright years - Fix problem identified by Jorn - Rollback getAndAdd for now - Redundant change - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - ... and 5 more: https://git.openjdk.org/jdk/compare/295928d3...eebb8ff7 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/8200fb28..eebb8ff7 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=06-07 Stats: 10547 lines in 389 files changed: 7296 ins; 2024 del; 1227 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Mon Dec 8 02:08:37 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 02:08:37 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v3] In-Reply-To: References: <7vA3xcZlxI6Z7C50Uopc-L4zaPa1opq-c-fy4ln34rQ=.7e4f1fd7-530b-41c1-8a04-9d024db31978@github.com> <5k9_zS-hTubx9WMd8lq30Ajq8xRDAjIEhmKaqnyrsCw=.09a5b646-6115-45f1-be39-f5a54b9dbdd4@github.com> <3OE37qXGHhLAhnRQM188hhygrLYBtI3FLBMK0tGVH30=.5d1b4406-3bb3-4788-8059-e78260b79ec1@github.com> <7WF8DlorrU_B2__G2wr43w1PZwJh8mEhD5dY10YDIOo=.ec416c38-1aff-4dd6-8792-d6a0e01f91ce@github.com> <_Z6KpxCYH2n3sHuT6-kRP4cSTAN3-s5UA0r bfrJSIgA=.e9d4089c-8329-406b-9a0a-167a24311c13@github.com> <5CADH75ZjadKttOKwsykRFUPlQKLiwCW8E5WkM_75a4=.fd992c8f-e8bc-4775-9ea3-d5212664e3df@github.com> <5QPAetQEkrBgFKtMt0i9Ku_4s2GCirMl2uqLH3j8x7g=.e5fc8964-0080-45f7-9005-31922ec06ba1@github.com> Message-ID: On Wed, 3 Dec 2025 13:34:40 GMT, Jorn Vernee wrote: >> Looking at this, I'm not sure we can assume that we only see one mode and type when the VH is constant. There seems to be a lot of non-local reasoning involved. >> >> For example, you could have a var handle invoker created with `MethodHandless::varHandleInvoker`, which is cached, so the `AccessDescriptor` can be shared among many different use sites. For an individual use-site, the receiver VH may well be a constant, but that doesn't mean that the cache isn't polluted by the var handle from another use site, as far as I can tell. >> >> The thread safety issue comes from a C2 thread racing to read the `lastAdaption` cache vs another Java thread writing to the cache. AFAICS, this race is still possible even when `vh` is a compile time constant. > > I think even without using an invoker, you could end up in a similar situation if you have something like: > > > static Object m(VarHandle vh) { > return vh.get(); > } > > > Which is called by several different threads. At some point this method may be inlined into one of its callees, where `vh` then becomes a constant. But at the same time, other threads are still writing to the cache. This issue should have been fixed, and there's a unit test to verify. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2596829589 From liach at openjdk.org Mon Dec 8 02:08:37 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 02:08:37 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v6] In-Reply-To: <8tu3HIArCw2cdoYR2SjI0b-TWYQxQLKkjQgucJEj8D4=.10946ec2-4958-48df-add4-b29d11c09448@github.com> References: <8tu3HIArCw2cdoYR2SjI0b-TWYQxQLKkjQgucJEj8D4=.10946ec2-4958-48df-add4-b29d11c09448@github.com> Message-ID: On Thu, 4 Dec 2025 01:55:57 GMT, Vladimir Ivanov wrote: >> I don't think we can use a SoftReference here if we need to achieve constant folding. >> >> Looking at inline_reference_get0, I think we might introduce another field property to trust a reference (potentially in an array) if both that reference and the referent within the reference is non-null. I think that belongs to a separate RFE. What do you think? > > Then it makes sense to limit the caching to safe cases only for now. Otherwise, it would functionally regress due to a possible memory leak. I have added a primitive checking system to ensure safety for most cases and added a unit test to ensure there is no memory leak due to this cache. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2596829153 From liach at openjdk.org Mon Dec 8 02:08:38 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 02:08:38 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v7] In-Reply-To: References: <7ayMTZ4nXMyB1SXNRcYGjdxidNHDcAUNv_8fQZDUaPI=.a558d3a2-1d3e-4b45-8ba7-393c55a52785@github.com> Message-ID: On Fri, 5 Dec 2025 11:03:18 GMT, Jorn Vernee wrote: >> Chen Liang has updated the pull request incrementally with one additional commit since the last revision: >> >> Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > > test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 48: > >> 46: public static void main(String[] args) { >> 47: TestFramework.runWithFlags( >> 48: "-XX:+UnlockExperimentalVMOptions" > > Why is this flag needed? Indeed, simplified this to `TestFramework.run()` ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2596827495 From duke at openjdk.org Mon Dec 8 08:15:00 2025 From: duke at openjdk.org (ExE Boss) Date: Mon, 8 Dec 2025 08:15:00 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 02:08:37 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision: > > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - Redundant change > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - ... and 5 more: https://git.openjdk.org/jdk/compare/17ebc456...eebb8ff7 make/jdk/src/classes/build/tools/methodhandle/VarHandleGuardMethodGenerator.java line 145: > 143: MethodHandle.linkToStatic(); > 144: } else { > 145: ad.adaptedMethodHandle(handle).invokeBasic(); The?old?version didn?t?use?`` in?`GUARD_METHOD_TEMPLATE_V`: Suggestion: ad.adaptedMethodHandle(handle).invokeBasic(); ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2597461675 From duke at openjdk.org Mon Dec 8 10:39:26 2025 From: duke at openjdk.org (Nick Hall) Date: Mon, 8 Dec 2025 10:39:26 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 11:31:46 GMT, Nick Hall wrote: >> _Purpose_ >> >> This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. >> >> _Rationale_ >> >> Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. >> >> The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). >> >> Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. >> >> _Implementation Detail_ >> >> Note that there were multiple possible ways of doing this: >> >> 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. >> >> 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. >> >> 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. >> >> I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensat... > > Nick Hall has updated the pull request incrementally with one additional commit since the last revision: > > Update the devkit build scripts to allow the devkit to include the > required packages for KRB5 (libkrb and libcom_err). > > This was run on RHEL8, building for OL6, which required adding isl to > allow the latest gcc to build (this has been required for some time I > think). > > It also fixes one missing `--prefix` option which was causing things to > not be correctly installed in the sysroot. > A new enhancement is filed at [bugs.openjdk.org/browse/JDK-8373137](https://bugs.openjdk.org/browse/JDK-8373137). Thanks - would you mind also creating one for the devkit fixes? I'll separate them out from here. Would you like me to put the FFM changes on this PR or abandon and create two new PRs (one for FFM, one for devkit fixes that are orthogonal)? Or would you like to merge the Linux support on this PR (minus devkit changes, optional krb5 dependency) then branch the FFM changes off after that? I've had a go at the FFM changes, and by using jextract a lot of the work can just be generated which is good, the rest doesn't look too bad as you said. I've got something early working, although need to do some work on the tests to make it avoid JNI too. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3626221840 From weijun at openjdk.org Mon Dec 8 13:01:35 2025 From: weijun at openjdk.org (Weijun Wang) Date: Mon, 8 Dec 2025 13:01:35 GMT Subject: RFR: 8349546: Linux support for Kerberos "nativeccache" functionality [v14] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 11:31:46 GMT, Nick Hall wrote: >> _Purpose_ >> >> This PR allows Linux based applications using JAAS to acquire Kerberos TGTs natively using the local system's Kerberos libraries/configuration, building on existing support on Windows/MacOSX. >> >> _Rationale_ >> >> Currently the (pure java) JAAS codebase only supports file-based credential caches (ccaches). There are many other useful types of ccache accessible via the local system libraries; this change allows credentials to be acquired natively using those libraries, and thus adds support for all other ccache types supported by the local system (e.g. KCM, in-memory and kernel types), This support already exists on MacOSX and Windows. >> >> The code change here largely uses the MacOSX code, edited for Linux with associated build system changes. It also adds an appropriate jtreg test which uses some native test helper code to manufacture an in-memory cache, and then uses the new code to acquire these credentials natively. This has been tested on Linux/Mac and the jtreg test passes on each (I couldn't see any existing tests on MacOSX for this feature). >> >> Additionally this PR fixes a bug that's existed for a while (see L585-588 in `nativeccache.c`) - without this code, this is a 100% reproducible segfault on Linux (it's unclear why this hasn't affected the Mac JVMs up to now, probably just no calling code that provides an empty list of addresses). It also fixes a (non problem) typo in the variable name in a function prototype. >> >> _Implementation Detail_ >> >> Note that there were multiple possible ways of doing this: >> >> 1) Duplicate the MacOSX `nativeccache.c`, edit lightly for Linux and build a new library on Linux only (`liblinuxkrb5`), leaving MacOSX largely unchanged, but at the expense of this code duplication. >> >> 2) Create a new shared library used on both platforms with conditional compilation to manage the differences. This necessitates a library name change on MacOSX and potentially knock-on packaging changes on that platform, which seemed a potentially expensive side-effect. >> >> 3) Create a shared `nativeccache.c` (using `EXTRA_SRC` in the build) and build separate MacOSX/Linux libraries. This allows the MacOSX library name to remain unchanged, and only adds a new library in Linux. >> >> I tried all three options; 3 seemed to be the best compromise all around, although is one of the options that effectively introduces a "no-op" change on MacOSX as a result. Hopefully the additional jtreg test is sufficient to compensat... > > Nick Hall has updated the pull request incrementally with one additional commit since the last revision: > > Update the devkit build scripts to allow the devkit to include the > required packages for KRB5 (libkrb and libcom_err). > > This was run on RHEL8, building for OL6, which required adding isl to > allow the latest gcc to build (this has been required for some time I > think). > > It also fixes one missing `--prefix` option which was causing things to > not be correctly installed in the sysroot. The FFM change should go with [JDK-8373137](https://bugs.openjdk.org/browse/JDK-8373137). For this PR, my personal suggestion is that there is no need to integrate it, at least not to the main line repository. You might want to check with one of the update releases to see if they are interested in the feature. You can also ask them whether the devkit update should be included or in a different PR. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28075#issuecomment-3626839659 From stuefe at openjdk.org Mon Dec 8 13:17:31 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Mon, 8 Dec 2025 13:17:31 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux Message-ID: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> Simple fix to restore debuginfo files to their proper places in the images. ------------- Commit messages: - fix Changes: https://git.openjdk.org/jdk/pull/28699/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28699&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373246 Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28699.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28699/head:pull/28699 PR: https://git.openjdk.org/jdk/pull/28699 From erikj at openjdk.org Mon Dec 8 14:13:04 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 8 Dec 2025 14:13:04 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux In-Reply-To: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> References: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> Message-ID: <8c6SBlfhK-YS_nOSdFqMulie0iVEttsj7YaS7Nqshes=.384753c7-6b09-4e03-bf1f-a53e2a5fcfb5@github.com> On Mon, 8 Dec 2025 11:55:45 GMT, Thomas Stuefe wrote: > Simple fix to restore debuginfo files to their proper places in the images. This would break JDK-8351842. I think if JDK-8351842 was made under bad assumptions, it should be backed out and reworked. ------------- PR Review: https://git.openjdk.org/jdk/pull/28699#pullrequestreview-3552280116 From stuefe at openjdk.org Mon Dec 8 16:33:37 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Mon, 8 Dec 2025 16:33:37 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux In-Reply-To: <8c6SBlfhK-YS_nOSdFqMulie0iVEttsj7YaS7Nqshes=.384753c7-6b09-4e03-bf1f-a53e2a5fcfb5@github.com> References: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> <8c6SBlfhK-YS_nOSdFqMulie0iVEttsj7YaS7Nqshes=.384753c7-6b09-4e03-bf1f-a53e2a5fcfb5@github.com> Message-ID: On Mon, 8 Dec 2025 14:10:47 GMT, Erik Joelsson wrote: > This would break JDK-8351842. I think if JDK-8351842 was made under bad assumptions, it should be backed out and reworked. Okay, then I am also in favor of reverting JDK-8351842 and doing that patch under a new header. The title "Windows specific issues..." for JDK-8351842 is quite misleading if it changes behavior for all platforms. Imho, a debug build, done with default options, should be debuggable with a debugger invoked on the produced binary with default options. Okay, I'll close this PR. @RealCLanger can you please look into this, possibly revert and rework? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28699#issuecomment-3627878342 From stuefe at openjdk.org Mon Dec 8 16:33:39 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Mon, 8 Dec 2025 16:33:39 GMT Subject: Withdrawn: 8373246: JDK-8351842 broke native debugging on Linux In-Reply-To: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> References: <7KudDfsfKsVMs5qgBR8jlbdMF8CtELATkS4kwAVMN1A=.9d3f6758-a156-466e-aed6-c0b86b7dc013@github.com> Message-ID: On Mon, 8 Dec 2025 11:55:45 GMT, Thomas Stuefe wrote: > Simple fix to restore debuginfo files to their proper places in the images. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jdk/pull/28699 From jvernee at openjdk.org Mon Dec 8 17:54:02 2025 From: jvernee at openjdk.org (Jorn Vernee) Date: Mon, 8 Dec 2025 17:54:02 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 02:08:37 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision: > > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - Redundant change > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - ... and 5 more: https://git.openjdk.org/jdk/compare/513d3327...eebb8ff7 src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java line 114: > 112: // but checking the signature type of MH mostly works > 113: return MethodHandle.isReachableFrom(vform.getMethodType(0), cl) > 114: && target.isReachableFrom(cl); Right... one of the filters may also keep a class loader alive. But to check them, we'd have to eagerly instantiate all of them as well. FWIW, I don't think this is an issue we can just ignore. If a filter keeps a class loader alive, we'd still have a problem. Maybe it's possible to collect all the types involved from the filter when creating an IndirectVarHandle instead, and save those in a separate list for this check. src/java.base/share/classes/java/lang/invoke/MethodHandle.java line 983: > 981: } > 982: > 983: static boolean isBuiltinLoader(ClassLoader loader) { I think this can still be private? src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2018: > 2016: // Call MethodHandle.isReachableFrom for the used classes > 2017: return true; > 2018: } Can you make this `abstract`? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2599553053 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2599496891 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2599488329 From liach at openjdk.org Mon Dec 8 18:29:05 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 18:29:05 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 17:49:41 GMT, Jorn Vernee wrote: >> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision: >> >> - Bugs and verify loader leak >> - Try to avoid loader leak >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure >> - Test from Jorn >> - Copyright years >> - Fix problem identified by Jorn >> - Rollback getAndAdd for now >> - Redundant change >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - ... and 5 more: https://git.openjdk.org/jdk/compare/50bcb546...eebb8ff7 > > src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java line 114: > >> 112: // but checking the signature type of MH mostly works >> 113: return MethodHandle.isReachableFrom(vform.getMethodType(0), cl) >> 114: && target.isReachableFrom(cl); > > Right... one of the filters may also keep a class loader alive. But to check them, we'd have to eagerly instantiate all of them as well. > > FWIW, I don't think this is an issue we can just ignore. If a filter keeps a class loader alive, we'd still have a problem. > > Maybe it's possible to collect all the types involved from the filter when creating an IndirectVarHandle instead, and save those in a separate list for this check. I mean a filter method handle may keep other classes alive in addition to just its types. This is not possible from just checking the types. The vform method type is sufficient, because the types from the filter method type is always in one of the indirect layers. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2599683049 From liach at openjdk.org Mon Dec 8 19:10:48 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 8 Dec 2025 19:10:48 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: Message-ID: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: - Review - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Bugs and verify loader leak - Try to avoid loader leak - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure - Test from Jorn - Copyright years - Fix problem identified by Jorn - Rollback getAndAdd for now - ... and 7 more: https://git.openjdk.org/jdk/compare/1f095c6b...d734e8a6 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/eebb8ff7..d734e8a6 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=07-08 Stats: 11891 lines in 51 files changed: 8198 ins; 3438 del; 255 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From shurailine at openjdk.org Mon Dec 8 20:44:11 2025 From: shurailine at openjdk.org (Alexandre Iline) Date: Mon, 8 Dec 2025 20:44:11 GMT Subject: RFR: 8373285: Update JCov for class file version 71 Message-ID: 8373285: Update JCov for class file version 71 ------------- Commit messages: - 8373285: Update JCov for class file version 71 Changes: https://git.openjdk.org/jdk/pull/28707/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28707&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373285 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28707.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28707/head:pull/28707 PR: https://git.openjdk.org/jdk/pull/28707 From erikj at openjdk.org Mon Dec 8 20:57:55 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 8 Dec 2025 20:57:55 GMT Subject: RFR: 8373285: Update JCov for class file version 71 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 20:38:33 GMT, Alexandre Iline wrote: > 8373285: Update JCov for class file version 71 Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28707#pullrequestreview-3554028188 From erikj at openjdk.org Mon Dec 8 21:04:24 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 8 Dec 2025 21:04:24 GMT Subject: RFR: 8373117: Update build doc link in README.md Message-ID: The main README.md in the JDK repository has a link to https://openjdk.org/groups/build/doc/building.html. This page is being retired in favor of the markdown file in GitHub, so we should update the link to point directly to https://git.openjdk.org/jdk/blob/master/doc/building.md. ------------- Commit messages: - JDK-8373117 Changes: https://git.openjdk.org/jdk/pull/28701/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28701&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373117 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28701.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28701/head:pull/28701 PR: https://git.openjdk.org/jdk/pull/28701 From ayang at openjdk.org Mon Dec 8 21:26:57 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Mon, 8 Dec 2025 21:26:57 GMT Subject: RFR: 8373117: Update build doc link in README.md In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 15:25:01 GMT, Erik Joelsson wrote: > The main README.md in the JDK repository has a link to https://openjdk.org/groups/build/doc/building.html. This page is being retired in favor of the markdown file in GitHub, so we should update the link to point directly to https://git.openjdk.org/jdk/blob/master/doc/building.md. Marked as reviewed by ayang (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28701#pullrequestreview-3554123642 From tbell at openjdk.org Mon Dec 8 21:49:57 2025 From: tbell at openjdk.org (Tim Bell) Date: Mon, 8 Dec 2025 21:49:57 GMT Subject: RFR: 8373117: Update build doc link in README.md In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 15:25:01 GMT, Erik Joelsson wrote: > The main README.md in the JDK repository has a link to https://openjdk.org/groups/build/doc/building.html. This page is being retired in favor of the markdown file in GitHub, so we should update the link to point directly to https://git.openjdk.org/jdk/blob/master/doc/building.md. Marked as reviewed by tbell (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28701#pullrequestreview-3554202803 From shurailine at openjdk.org Mon Dec 8 22:19:04 2025 From: shurailine at openjdk.org (Alexandre Iline) Date: Mon, 8 Dec 2025 22:19:04 GMT Subject: Integrated: 8373285: Update JCov for class file version 71 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 20:38:33 GMT, Alexandre Iline wrote: > 8373285: Update JCov for class file version 71 This pull request has now been integrated. Changeset: b118caf6 Author: Alexandre Iline URL: https://git.openjdk.org/jdk/commit/b118caf6777cbf5bf75b41156fdfaaa15479f924 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod 8373285: Update JCov for class file version 71 Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/28707 From erikj at openjdk.org Mon Dec 8 22:49:06 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 8 Dec 2025 22:49:06 GMT Subject: Integrated: 8373117: Update build doc link in README.md In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 15:25:01 GMT, Erik Joelsson wrote: > The main README.md in the JDK repository has a link to https://openjdk.org/groups/build/doc/building.html. This page is being retired in favor of the markdown file in GitHub, so we should update the link to point directly to https://git.openjdk.org/jdk/blob/master/doc/building.md. This pull request has now been integrated. Changeset: 8df3f3d3 Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/8df3f3d3417bc8fdb5a75d986e084441bbf6ebd2 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8373117: Update build doc link in README.md Reviewed-by: ayang, tbell ------------- PR: https://git.openjdk.org/jdk/pull/28701 From erikj at openjdk.org Mon Dec 8 23:44:05 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 8 Dec 2025 23:44:05 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 Message-ID: When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. ------------- Commit messages: - Change conditional - JDK-8373255 Changes: https://git.openjdk.org/jdk/pull/28709/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28709&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373255 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28709.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28709/head:pull/28709 PR: https://git.openjdk.org/jdk/pull/28709 From vlivanov at openjdk.org Tue Dec 9 00:03:57 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 9 Dec 2025 00:03:57 GMT Subject: RFR: 8371711: AArch64: SVE intrinsics for Arrays.sort methods (int, float) In-Reply-To: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> References: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> Message-ID: On Fri, 5 Dec 2025 09:44:16 GMT, Bhavana Kilambi wrote: > This patch adds an SVE implementation of primitive array sorting (Arrays.sort()) on AArch64 systems that support SVE. On non-SVE machines, we fall back to the existing Java implementation. > > For smaller arrays (length <= 64), we use insertion sort; for larger arrays we use an SVE-vectorized quicksort partitioner followed by an odd-even transposition cleanup pass. > > The SVE path is enabled by default for int type. For float type, it is available through the experimental flag : > > `-XX:+UnlockExperimentalVMOptions -XX:+UseSVELibSimdSortForFP > ` > Without this flag being enabled, the default Java implementation would be executed for floats (the flag is disabled by default). > > Float is gated due to observed regressions on some small/medium sizes. On larger arrays, the SVE float path shows upto 1.47x speedup on Neoverse V2 and 2.12x on Neoverse V1. > > Following are the performance numbers for **ArraysSort JMH benchmark** - > > **Case A:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag disabled (which is the default). > **Case B:** Ratio between the scores of master branch and `UseSVELibSimdSortForFP` flag enabled (the int numbers will be the same but this now enables SVE vectorized sorting for floats). > **We would want the ratios to be >= 1 to be at par or better than the default Java implementation (master branch).** > > On Neoverse V1: > > > Benchmark (size) Mode Cnt A B > ArraysSort.floatParallelSort 10 avgt 3 0.98 0.98 > ArraysSort.floatParallelSort 25 avgt 3 1.01 0.83 > ArraysSort.floatParallelSort 50 avgt 3 0.99 0.55 > ArraysSort.floatParallelSort 75 avgt 3 0.99 0.66 > ArraysSort.floatParallelSort 100 avgt 3 0.98 0.66 > ArraysSort.floatParallelSort 1000 avgt 3 1.00 0.84 > ArraysSort.floatParallelSort 10000 avgt 3 1.03 1.52 > ArraysSort.floatParallelSort 100000 avgt 3 1.03 1.46 > ArraysSort.floatParallelSort 1000000 avgt 3 0.98 1.81 > ArraysSort.floatSort 10 avgt 3 1.00 0.98 > ArraysSort.floatSort 25 avgt 3 1.00 0.81 > ArraysSort.floatSort 50 avgt 3 0.99 0.56 > ArraysSort.floatSort 75 avgt 3 0.99 0.65 > ArraysSort.floatSort 100 avgt 3 0.98 0.70 > ArraysSort.floatSort 1000 avgt 3 0.99 0.84 > ArraysSort.floatSort ... Good work, Bhavana! I reminds me of an effort I started a year ago to migrate native libraries to FFM. `vectormath` got integrated, but `libsimdsort` is still a draft: https://github.com/iwanowww/jdk/tree/libsimdsort.1 Since you do profound refactorings in the libsimdsort library code, I suggest to introduce SVE variant on top of FFM from the beginning. Let me finalize the PR and post it for review. What do you think? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28675#issuecomment-3629564612 From prr at openjdk.org Tue Dec 9 00:39:12 2025 From: prr at openjdk.org (Phil Race) Date: Tue, 9 Dec 2025 00:39:12 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file Message-ID: This backs out a specific part of the change from https://bugs.openjdk.org/browse/JDK-8370438 which causes the windows-x64-cmp-baseline build to fail every time. ------------- Commit messages: - 8372554 Changes: https://git.openjdk.org/jdk/pull/28712/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28712&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372554 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28712.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28712/head:pull/28712 PR: https://git.openjdk.org/jdk/pull/28712 From serb at openjdk.org Tue Dec 9 00:45:53 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 00:45:53 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 00:32:15 GMT, Phil Race wrote: > This backs out a specific part of the change from https://bugs.openjdk.org/browse/JDK-8370438 > which causes the windows-x64-cmp-baseline build to fail every time. What is the purpose of the ?windows-x64-cmp-baseline? task, and how is it affected by the change in question? Why was the decision made to revert the change instead of fixing the task? Was there something wrong with that optimization? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28712#issuecomment-3629679772 From serb at openjdk.org Tue Dec 9 00:52:54 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 00:52:54 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 00:32:15 GMT, Phil Race wrote: > This backs out a specific part of the change from https://bugs.openjdk.org/browse/JDK-8370438 > which causes the windows-x64-cmp-baseline build to fail every time. This might be related? https://github.com/openjdk/jdk/pull/28676 ------------- PR Comment: https://git.openjdk.org/jdk/pull/28712#issuecomment-3629705659 From dholmes at openjdk.org Tue Dec 9 00:58:54 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 9 Dec 2025 00:58:54 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 00:32:15 GMT, Phil Race wrote: > This backs out a specific part of the change from https://bugs.openjdk.org/browse/JDK-8370438 > which causes the windows-x64-cmp-baseline build to fail every time. Seems trivially fine to me. Thanks. ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28712#pullrequestreview-3554780602 From prr at openjdk.org Tue Dec 9 01:04:06 2025 From: prr at openjdk.org (Phil Race) Date: Tue, 9 Dec 2025 01:04:06 GMT Subject: Integrated: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 00:32:15 GMT, Phil Race wrote: > This backs out a specific part of the change from https://bugs.openjdk.org/browse/JDK-8370438 > which causes the windows-x64-cmp-baseline build to fail every time. This pull request has now been integrated. Changeset: b1c95501 Author: Phil Race URL: https://git.openjdk.org/jdk/commit/b1c955018281a228a67695e5077666d751cd87d2 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file Reviewed-by: dholmes ------------- PR: https://git.openjdk.org/jdk/pull/28712 From prr at openjdk.org Tue Dec 9 01:08:07 2025 From: prr at openjdk.org (Phil Race) Date: Tue, 9 Dec 2025 01:08:07 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 00:43:04 GMT, Sergey Bylokhov wrote: > What is the purpose of the ?windows-x64-cmp-baseline? task, and how is it affected by the change in question? Why was the decision made to revert the change instead of fixing the task? Was there something wrong with that optimization? SFAIU it checks if builds are reproducible. You can go look for yourself. There's nothing wrong with the "build test/task", the problem is that LTO isn't creating builds that pass on windows x64 and it fails every time. Could be a windows compiler issue, but that isn't going to get fixed soon. This partial back out is the answer. Next, if it is important, (which it doesn't seem to be), It is up to whoever wants this LTO option to justify it and make sure everything passes before re-enabling it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28712#issuecomment-3629739005 From serb at openjdk.org Tue Dec 9 01:49:05 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 01:49:05 GMT Subject: RFR: 8372554: Test windows-x64-cmp-baseline failed due to differences with splashscreen object file In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 01:04:55 GMT, Phil Race wrote: > SFAIU it checks if builds are reproducible. You can go look for yourself. Does that task use "make COMPARE_BUILD" or call "compare.sh", or do something else? Was only the windows build affected? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28712#issuecomment-3629826864 From jvernee at openjdk.org Tue Dec 9 01:55:03 2025 From: jvernee at openjdk.org (Jorn Vernee) Date: Tue, 9 Dec 2025 01:55:03 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Mon, 8 Dec 2025 19:10:48 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - Review > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - ... and 7 more: https://git.openjdk.org/jdk/compare/b009bdb3...d734e8a6 Marked as reviewed by jvernee (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28585#pullrequestreview-3554899910 From serb at openjdk.org Tue Dec 9 01:58:55 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 01:58:55 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. Is it possible that this issue is similar to https://github.com/openjdk/jdk/pull/28712 ? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28709#issuecomment-3629848766 From serb at openjdk.org Tue Dec 9 03:48:55 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 03:48:55 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. I confirm that it fixes the issue. ------------- Marked as reviewed by serb (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28709#pullrequestreview-3555248839 From serb at openjdk.org Tue Dec 9 03:58:54 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Tue, 9 Dec 2025 03:58:54 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. > Is it possible that this issue is similar to #28712 ? Seems so. Could you please confirm this with the full test set in mach5? It is not necessary to revert "that revert" until https://github.com/openjdk/jdk/pull/28676 is fixed, but it would be good to know that the issue on windows is resolved. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28709#issuecomment-3630142156 From dholmes at openjdk.org Tue Dec 9 06:35:55 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 9 Dec 2025 06:35:55 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. Yes it does appear that this is what is breaking the cmp-baselines build on Windows. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28709#issuecomment-3630583345 From duke at openjdk.org Tue Dec 9 11:36:00 2025 From: duke at openjdk.org (ExE Boss) Date: Tue, 9 Dec 2025 11:36:00 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 18:26:19 GMT, Chen Liang wrote: >> src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java line 114: >> >>> 112: // but checking the signature type of MH mostly works >>> 113: return MethodHandle.isReachableFrom(vform.getMethodType(0), cl) >>> 114: && target.isReachableFrom(cl); >> >> Right... one of the filters may also keep a class loader alive. But to check them, we'd have to eagerly instantiate all of them as well. >> >> FWIW, I don't think this is an issue we can just ignore. If a filter keeps a class loader alive, we'd still have a problem. >> >> Maybe it's possible to collect all the types involved from the filter when creating an IndirectVarHandle instead, and save those in a separate list for this check. > > I mean a filter method handle may keep other classes alive in addition to just its types. This is not possible from just checking the types. The vform method type is sufficient, because the types from the filter method type is always in one of the indirect layers. Also, it?s?possible for?intermediate `MethodHandle`s used?as?part of?`MethodHandle` combinators to?refer to?types from?different class?loaders. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2602260725 From erikj at openjdk.org Tue Dec 9 14:08:34 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 9 Dec 2025 14:08:34 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. This should indeed fix the cmp-baseline build on Windows. I had missed that issue, sorry about that. I'm running a full builds tier1-5 on this branch (where the revert has not happened) to confirm. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28709#issuecomment-3632443089 From mbaesken at openjdk.org Tue Dec 9 14:26:54 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Tue, 9 Dec 2025 14:26:54 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 Message-ID: Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: $ make test TEST="test/jdk/build/AbsPathsInImage.java" STDERR: java.lang.Exception: Test failed at AbsPathsInImage.main(AbsPathsInImage.java:132) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:565) at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) at java.base/java.lang.Thread.run(Thread.java:1516) The lto - built libsplashscreen.so was report to cause this. To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. ------------- Commit messages: - Move prefix setting to m4 file - JDK-8372759 Changes: https://git.openjdk.org/jdk/pull/28676/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372759 Stats: 7 lines in 4 files changed: 5 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28676.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28676/head:pull/28676 PR: https://git.openjdk.org/jdk/pull/28676 From liach at openjdk.org Tue Dec 9 14:42:22 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 9 Dec 2025 14:42:22 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v8] In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 11:33:31 GMT, ExE Boss wrote: >> I mean a filter method handle may keep other classes alive in addition to just its types. This is not possible from just checking the types. The vform method type is sufficient, because the types from the filter method type is always in one of the indirect layers. > > Also, it?s?possible for?intermediate `MethodHandle`s used?as?part of?`MethodHandle` combinators to?refer to?types from?different class?loaders. It is, but after all, there can be similar resource leak risks from calling LambdaMetafactory or other APIs too. We expect AccessDescriptor construction to be mostly limited to specific sites. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2602958025 From erikj at openjdk.org Tue Dec 9 16:54:22 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 9 Dec 2025 16:54:22 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 In-Reply-To: References: Message-ID: <1HRZ7qqXlHoM4Xr6oVR7pcVOTSObqUYd2KpCmwDlGls=.27a84d9e-e11b-4cd5-a2dd-24d3ab640123@github.com> On Fri, 5 Dec 2025 11:48:14 GMT, Matthias Baesken wrote: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. make/common/native/Flags.gmk line 239: > 237: > 238: # for lto, we have to use the debug prefix mapping flags to get rid of unwanted paths > 239: # $1_EXTRA_LDFLAGS += $$(DEBUG_PREFIX_CFLAGS) This looks redundant. It should be enough to add the flags to LDFLAGS_LTO in configure. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2603487806 From erikj at openjdk.org Tue Dec 9 17:04:03 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 9 Dec 2025 17:04:03 GMT Subject: RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. Confirmed that this fixes the cmp-baseline issue as well, so you can re-enable LTO for splashscreen if you wish. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28709#issuecomment-3633295465 From erikj at openjdk.org Tue Dec 9 17:04:04 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 9 Dec 2025 17:04:04 GMT Subject: Integrated: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 23:37:03 GMT, Erik Joelsson wrote: > When using `-LTCG` with Visual Studio, then by default, the linker will output an extra `.iobj` file in the same directory as the target file. In the OpenJDK build that means this file, along with the accompanying `.ipdb` file, will end up in the JDK image. To fix this, we need to apply a similar fix to JDK-8372643 and add an extra parameter that defines the location of this file. This pull request has now been integrated. Changeset: 831fe94c Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/831fe94c75c407b2399be9b89630d8d117c2996c Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod 8373255: Unexpected iobj and ipdb files after JDK-8370438 Reviewed-by: serb ------------- PR: https://git.openjdk.org/jdk/pull/28709 From erikj at openjdk.org Tue Dec 9 18:07:20 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 9 Dec 2025 18:07:20 GMT Subject: [jdk26] RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 Message-ID: This pull request contains a backport of commit [831fe94c](https://github.com/openjdk/jdk/commit/831fe94c75c407b2399be9b89630d8d117c2996c) from the [openjdk/jdk](https://git.openjdk.org/jdk) repository. The commit being backported was authored by Erik Joelsson on 9 Dec 2025 and was reviewed by Sergey Bylokhov. In jdk26, the revert of LTO for libsplashscreen in JDK-8372554 hasn't happened so this change will fix that too without needing to revert. ------------- Commit messages: - Backport 831fe94c75c407b2399be9b89630d8d117c2996c Changes: https://git.openjdk.org/jdk/pull/28727/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28727&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373255 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28727.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28727/head:pull/28727 PR: https://git.openjdk.org/jdk/pull/28727 From serb at openjdk.org Wed Dec 10 01:43:42 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Wed, 10 Dec 2025 01:43:42 GMT Subject: [jdk26] RFR: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 17:21:13 GMT, Erik Joelsson wrote: > This pull request contains a backport of commit [831fe94c](https://github.com/openjdk/jdk/commit/831fe94c75c407b2399be9b89630d8d117c2996c) from the [openjdk/jdk](https://git.openjdk.org/jdk) repository. > > The commit being backported was authored by Erik Joelsson on 9 Dec 2025 and was reviewed by Sergey Bylokhov. > > In jdk26, the revert of LTO for libsplashscreen in JDK-8372554 hasn't happened so this change will fix that too without needing to revert. Marked as reviewed by serb (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28727#pullrequestreview-3560381306 From syan at openjdk.org Wed Dec 10 03:36:22 2025 From: syan at openjdk.org (SendaoYan) Date: Wed, 10 Dec 2025 03:36:22 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 In-Reply-To: References: Message-ID: On Fri, 5 Dec 2025 11:48:14 GMT, Matthias Baesken wrote: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. I can not apply the patch get from https://patch-diff.githubusercontent.com/raw/openjdk/jdk/pull/28676.diff locallly. Do you mind merge the master first. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28676#issuecomment-3635209940 From epeter at openjdk.org Wed Dec 10 07:38:33 2025 From: epeter at openjdk.org (Emanuel Peter) Date: Wed, 10 Dec 2025 07:38:33 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Mon, 8 Dec 2025 19:10:48 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - Review > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - ... and 7 more: https://git.openjdk.org/jdk/compare/edba0887...d734e8a6 Was asked on slack to review IR tests, so that's all I'm doing here - won't review the whole patch ;) test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 2: > 1: /* > 2: * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. We want to eventually migrate all tests from `c2/irTests` to more "topic based" directories, so it would be great if you already migrated them now, since you probably would know a better name/place now already ;) test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 41: > 39: * @summary Verify constant folding is possible for mismatched VarHandle access > 40: * @library /test/lib / > 41: * @requires vm.compiler2.enabled What would happen if you removed this? Is the test expected to fail anywhere? IR rules are executed only if C2 is available anyway, so probably you don't need this restriction. ------------- Changes requested by epeter (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28585#pullrequestreview-3561137086 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2605521507 PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2605526968 From chagedorn at openjdk.org Wed Dec 10 08:09:27 2025 From: chagedorn at openjdk.org (Christian Hagedorn) Date: Wed, 10 Dec 2025 08:09:27 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: <7__4QGMz-5idIedYYk-0HrQnnMfTa4d-Gl75gvajV0A=.ecba821d-731d-420f-a3f6-9feeb869b20b@github.com> On Mon, 8 Dec 2025 19:10:48 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - Review > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - ... and 7 more: https://git.openjdk.org/jdk/compare/45fb0e07...d734e8a6 test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 70: > 68: > 69: @Check(test = "testSum") > 70: public void runTestSum() { Drive-by comment: From the method name, it seems that you want to have a runner method. For that, you need to switch to `@Run`. But you can also do result verification with `@Check`. In the latter case, you do not need to call `testSum()` again but you can just add a `long result` as parameter. The IR framework will then call this `@Check` method with the result of `testSum()`. Example: https://github.com/openjdk/jdk/blob/1bbbce75c5e68429c2a32519eb3c36d964dcdf57/test/hotspot/jtreg/testlibrary_tests/ir_framework/examples/CheckedTestExample.java#L94-L102 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2605606400 From mbaesken at openjdk.org Wed Dec 10 08:26:11 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 08:26:11 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v2] In-Reply-To: References: Message-ID: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: remove uncommented and moved DEBUG_PREFIX_CFLAGS from Flags.gmk ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28676/files - new: https://git.openjdk.org/jdk/pull/28676/files/41091f5f..1fdf13f4 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=00-01 Stats: 3 lines in 1 file changed: 0 ins; 3 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28676.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28676/head:pull/28676 PR: https://git.openjdk.org/jdk/pull/28676 From mbaesken at openjdk.org Wed Dec 10 09:05:30 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 09:05:30 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 03:33:36 GMT, SendaoYan wrote: > I can not apply the patch get from https://patch-diff.githubusercontent.com/raw/openjdk/jdk/pull/28676.diff locallly. Do you mind merge the master first. I guess this clashed in Flags.gmk because of recent changes, correct ? I removed this file change in the current commit . ------------- PR Comment: https://git.openjdk.org/jdk/pull/28676#issuecomment-3636054244 From mbaesken at openjdk.org Wed Dec 10 13:41:38 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 13:41:38 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen Message-ID: [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. ------------- Commit messages: - JDK-8373388 Changes: https://git.openjdk.org/jdk/pull/28746/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28746&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373388 Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28746.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28746/head:pull/28746 PR: https://git.openjdk.org/jdk/pull/28746 From erikj at openjdk.org Wed Dec 10 14:03:41 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 10 Dec 2025 14:03:41 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v2] In-Reply-To: References: Message-ID: <31ARkKu7yUJJoSF7qCThtxwV6zqjteMeoZ16tjM8HZw=.1a5bd026-aef7-49b7-ab68-9a5b46d2a12e@github.com> On Wed, 10 Dec 2025 08:26:11 GMT, Matthias Baesken wrote: >> Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: >> >> >> $ make test TEST="test/jdk/build/AbsPathsInImage.java" >> >> STDERR: >> java.lang.Exception: Test failed >> at AbsPathsInImage.main(AbsPathsInImage.java:132) >> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) >> at java.base/java.lang.reflect.Method.invoke(Method.java:565) >> at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) >> at java.base/java.lang.Thread.run(Thread.java:1516) >> >> >> The lto - built libsplashscreen.so was report to cause this. >> To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > remove uncommented and moved DEBUG_PREFIX_CFLAGS from Flags.gmk make/autoconf/flags-cflags.m4 line 129: > 127: AC_SUBST(CFLAGS_DEBUG_SYMBOLS) > 128: AC_SUBST(ASFLAGS_DEBUG_SYMBOLS) > 129: AC_SUBST(DEBUG_PREFIX_CFLAGS) There is no reason to export this variable to make now. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2606779512 From erikj at openjdk.org Wed Dec 10 14:05:10 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 10 Dec 2025 14:05:10 GMT Subject: [jdk26] Integrated: 8373255: Unexpected iobj and ipdb files after JDK-8370438 In-Reply-To: References: Message-ID: On Tue, 9 Dec 2025 17:21:13 GMT, Erik Joelsson wrote: > This pull request contains a backport of commit [831fe94c](https://github.com/openjdk/jdk/commit/831fe94c75c407b2399be9b89630d8d117c2996c) from the [openjdk/jdk](https://git.openjdk.org/jdk) repository. > > The commit being backported was authored by Erik Joelsson on 9 Dec 2025 and was reviewed by Sergey Bylokhov. > > In jdk26, the revert of LTO for libsplashscreen in JDK-8372554 hasn't happened so this change will fix that too without needing to revert. This pull request has now been integrated. Changeset: 1de6f4f2 Author: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/1de6f4f2b6af6de7ab0f2b40bfd2c0f2bd9718b5 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod 8373255: Unexpected iobj and ipdb files after JDK-8370438 Reviewed-by: serb Backport-of: 831fe94c75c407b2399be9b89630d8d117c2996c ------------- PR: https://git.openjdk.org/jdk/pull/28727 From erikj at openjdk.org Wed Dec 10 14:06:46 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 10 Dec 2025 14:06:46 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v2] In-Reply-To: <31ARkKu7yUJJoSF7qCThtxwV6zqjteMeoZ16tjM8HZw=.1a5bd026-aef7-49b7-ab68-9a5b46d2a12e@github.com> References: <31ARkKu7yUJJoSF7qCThtxwV6zqjteMeoZ16tjM8HZw=.1a5bd026-aef7-49b7-ab68-9a5b46d2a12e@github.com> Message-ID: On Wed, 10 Dec 2025 14:00:58 GMT, Erik Joelsson wrote: >> Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: >> >> remove uncommented and moved DEBUG_PREFIX_CFLAGS from Flags.gmk > > make/autoconf/flags-cflags.m4 line 129: > >> 127: AC_SUBST(CFLAGS_DEBUG_SYMBOLS) >> 128: AC_SUBST(ASFLAGS_DEBUG_SYMBOLS) >> 129: AC_SUBST(DEBUG_PREFIX_CFLAGS) > > There is no reason to export this variable to make now. I can confirm running configure with this patch, the debug prefix arg is added to LDFLAGS_LTO. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2606791940 From erikj at openjdk.org Wed Dec 10 14:07:56 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 10 Dec 2025 14:07:56 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28746#pullrequestreview-3562713414 From liach at openjdk.org Wed Dec 10 15:41:05 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 10 Dec 2025 15:41:05 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Wed, 10 Dec 2025 07:32:59 GMT, Emanuel Peter wrote: >> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: >> >> - Review >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Bugs and verify loader leak >> - Try to avoid loader leak >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure >> - Test from Jorn >> - Copyright years >> - Fix problem identified by Jorn >> - Rollback getAndAdd for now >> - ... and 7 more: https://git.openjdk.org/jdk/compare/bdc0543f...d734e8a6 > > test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 2: > >> 1: /* >> 2: * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. > > We want to eventually migrate all tests from `c2/irTests` to more "topic based" directories, so it would be great if you already migrated them now, since you probably would know a better name/place now already ;) What would be a good directory? I used `c2/irTests/constantFold` as a topic. Maybe you can find a more straightforward directory for constant folding verification. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2607162521 From hgreule at openjdk.org Wed Dec 10 16:13:42 2025 From: hgreule at openjdk.org (Hannes Greule) Date: Wed, 10 Dec 2025 16:13:42 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Wed, 10 Dec 2025 15:38:12 GMT, Chen Liang wrote: >> test/hotspot/jtreg/compiler/c2/irTests/constantFold/VarHandleMismatchedTypeFold.java line 2: >> >>> 1: /* >>> 2: * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. >> >> We want to eventually migrate all tests from `c2/irTests` to more "topic based" directories, so it would be great if you already migrated them now, since you probably would know a better name/place now already ;) > > What would be a good directory? I used `c2/irTests/constantFold` as a topic. Maybe you can find a more straightforward directory for constant folding verification. Maybe something like `c2/methodhandles` would be a good fit? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2607297537 From mbaesken at openjdk.org Wed Dec 10 16:32:03 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 16:32:03 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v3] In-Reply-To: References: Message-ID: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: Remove AC_SUBST ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28676/files - new: https://git.openjdk.org/jdk/pull/28676/files/1fdf13f4..f5dda1b9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28676.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28676/head:pull/28676 PR: https://git.openjdk.org/jdk/pull/28676 From mbaesken at openjdk.org Wed Dec 10 16:32:05 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 16:32:05 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v2] In-Reply-To: References: <31ARkKu7yUJJoSF7qCThtxwV6zqjteMeoZ16tjM8HZw=.1a5bd026-aef7-49b7-ab68-9a5b46d2a12e@github.com> Message-ID: On Wed, 10 Dec 2025 14:04:24 GMT, Erik Joelsson wrote: >> make/autoconf/flags-cflags.m4 line 129: >> >>> 127: AC_SUBST(CFLAGS_DEBUG_SYMBOLS) >>> 128: AC_SUBST(ASFLAGS_DEBUG_SYMBOLS) >>> 129: AC_SUBST(DEBUG_PREFIX_CFLAGS) >> >> There is no reason to export this variable to make now. > > I can confirm running configure with this patch, the debug prefix arg is added to LDFLAGS_LTO. > There is no reason to export this variable to make now. Okay I removed it. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2607363505 From mbaesken at openjdk.org Wed Dec 10 16:32:05 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Wed, 10 Dec 2025 16:32:05 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v2] In-Reply-To: References: <31ARkKu7yUJJoSF7qCThtxwV6zqjteMeoZ16tjM8HZw=.1a5bd026-aef7-49b7-ab68-9a5b46d2a12e@github.com> Message-ID: On Wed, 10 Dec 2025 16:28:23 GMT, Matthias Baesken wrote: >> I can confirm running configure with this patch, the debug prefix arg is added to LDFLAGS_LTO. > >> There is no reason to export this variable to make now. > > Okay I removed it. > I can confirm running configure with this patch, the debug prefix arg is added to LDFLAGS_LTO. Thanks for checking ! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2607364197 From liach at openjdk.org Wed Dec 10 16:38:21 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 10 Dec 2025 16:38:21 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: <7XWutFIFgBWASCLSHH0XdEurVGgfX14HwelxQttnbr8=.9d92b47a-3313-46c1-822d-79a55cfb7d04@github.com> On Wed, 10 Dec 2025 16:11:07 GMT, Hannes Greule wrote: >> What would be a good directory? I used `c2/irTests/constantFold` as a topic. Maybe you can find a more straightforward directory for constant folding verification. > > Maybe something like `c2/methodhandles` would be a good fit? There is `compiler/jsr292` directory, that might work I think. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2607392582 From erikj at openjdk.org Wed Dec 10 17:30:35 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 10 Dec 2025 17:30:35 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v3] In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 16:32:03 GMT, Matthias Baesken wrote: >> Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: >> >> >> $ make test TEST="test/jdk/build/AbsPathsInImage.java" >> >> STDERR: >> java.lang.Exception: Test failed >> at AbsPathsInImage.main(AbsPathsInImage.java:132) >> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) >> at java.base/java.lang.reflect.Method.invoke(Method.java:565) >> at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) >> at java.base/java.lang.Thread.run(Thread.java:1516) >> >> >> The lto - built libsplashscreen.so was report to cause this. >> To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Remove AC_SUBST make/autoconf/spec.gmk.template line 639: > 637: CFLAGS_DEBUG_SYMBOLS := @CFLAGS_DEBUG_SYMBOLS@ > 638: ASFLAGS_DEBUG_SYMBOLS := @ASFLAGS_DEBUG_SYMBOLS@ > 639: DEBUG_PREFIX_CFLAGS := @DEBUG_PREFIX_CFLAGS@ Removing the AC_SUBST also means removing this line. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28676#discussion_r2607576831 From serb at openjdk.org Wed Dec 10 18:13:58 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Wed, 10 Dec 2025 18:13:58 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Don?t we need to wait until https://github.com/openjdk/jdk/pull/28676 is fixed? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3638249484 From prr at openjdk.org Wed Dec 10 18:14:01 2025 From: prr at openjdk.org (Phil Race) Date: Wed, 10 Dec 2025 18:14:01 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: <9pnHoz75EZSdvg9K9xYhdElxZabVk_34qB877xxAmdg=.69ebe4c6-3919-418c-b6f0-3f2581f22dc2@github.com> On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Why was it enabled in the first place ? Do not integrate this without my review/approval. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3638275604 PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3638279475 From vlivanov at openjdk.org Wed Dec 10 19:51:06 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Wed, 10 Dec 2025 19:51:06 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Mon, 8 Dec 2025 19:10:48 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: > > - Review > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - Copyright years > - Fix problem identified by Jorn > - Rollback getAndAdd for now > - ... and 7 more: https://git.openjdk.org/jdk/compare/8da6ec63...d734e8a6 make/jdk/src/classes/build/tools/methodhandle/VarHandleGuardMethodGenerator.java line 132: > 130: // TestZGCBarrierElision.testAtomicThenAtomicAnotherField fails > 131: // However, testArrayAtomicThenAtomic, testAtomicThenAtomic, and > 132: // testArrayAtomicThenAtomicAtUnknownIndices works It doesn't look right. Was is the root cause of the failure? Can it be a test bug? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2608010297 From dholmes at openjdk.org Wed Dec 10 21:18:53 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 10 Dec 2025 21:18:53 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Marked as reviewed by dholmes (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28746#pullrequestreview-3564511810 From liach at openjdk.org Wed Dec 10 22:11:49 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 10 Dec 2025 22:11:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Wed, 10 Dec 2025 19:48:49 GMT, Vladimir Ivanov wrote: >> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: >> >> - Review >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Bugs and verify loader leak >> - Try to avoid loader leak >> - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache >> - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure >> - Test from Jorn >> - Copyright years >> - Fix problem identified by Jorn >> - Rollback getAndAdd for now >> - ... and 7 more: https://git.openjdk.org/jdk/compare/f510a486...d734e8a6 > > make/jdk/src/classes/build/tools/methodhandle/VarHandleGuardMethodGenerator.java line 132: > >> 130: // TestZGCBarrierElision.testAtomicThenAtomicAnotherField fails >> 131: // However, testArrayAtomicThenAtomic, testAtomicThenAtomic, and >> 132: // testArrayAtomicThenAtomicAtUnknownIndices works > > It doesn't look right. What is the root cause of the failure? Can it be a test bug? I think that is when two different VarHandles are both invoked non-exactly in two call sites in one method, the 2nd one fails to be inlined, that the compare-and-exchange from the 2nd one is not present in the final IR. The deoptimization reason is either "unstable-if" or "too many null checks", I think I will try look into it in another effort. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2608390544 From vlivanov at openjdk.org Wed Dec 10 22:16:22 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Wed, 10 Dec 2025 22:16:22 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Wed, 10 Dec 2025 22:09:21 GMT, Chen Liang wrote: >> make/jdk/src/classes/build/tools/methodhandle/VarHandleGuardMethodGenerator.java line 132: >> >>> 130: // TestZGCBarrierElision.testAtomicThenAtomicAnotherField fails >>> 131: // However, testArrayAtomicThenAtomic, testAtomicThenAtomic, and >>> 132: // testArrayAtomicThenAtomicAtUnknownIndices works >> >> It doesn't look right. What is the root cause of the failure? Can it be a test bug? > > I think that is when two different VarHandles are both invoked non-exactly in two call sites in one method, the 2nd one fails to be inlined, that the compare-and-exchange from the 2nd one is not present in the final IR. The deoptimization reason is either "unstable-if" or "too many null checks", I think I will try look into it in another effort. If it's a test problem, then it's better to comment out the problematic test case instead. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2608398869 From jwaters at openjdk.org Thu Dec 11 04:23:22 2025 From: jwaters at openjdk.org (Julian Waters) Date: Thu, 11 Dec 2025 04:23:22 GMT Subject: RFR: 8345265: Minor improvements for LTO across all compilers [v4] In-Reply-To: References: Message-ID: > This is a general cleanup and improvement of LTO, as well as a quick fix to remove a workaround in the Makefiles that disabled LTO for g1ParScanThreadState.cpp due to the old poisoning mechanism causing trouble. The -Wno-attribute-warning change here can be removed once Kim's new poisoning solution is integrated. > > - -fno-omit-frame-pointer is added to gcc to stop the linker from emitting code without the frame pointer > - -flto is set to $(JOBS) instead of auto to better match what the user requested > - -Gy is passed to the Microsoft compiler. This does not fully fix LTO under Microsoft, but prevents warnings about -LTCG:INCREMENTAL at least Julian Waters has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 22 commits: - Merge branch 'master' into patch-16 - Revert recent changes to ClientLibraries.gmk - Revert recent changes to CompileJvm.gmk - Revert recent changes to Flags.gmk - Revert recent changes to NativeCompilation.gmk - Revert recent changes to spec.gmk.template - Revert recent changes to flags-ldflags.m4 - Revert recent changes to flags-cflags.m4 - Remove no longer needed warning disable in JvmFeatures.gmk - Merge branch 'master' into patch-16 - ... and 12 more: https://git.openjdk.org/jdk/compare/74dca863...550f951d ------------- Changes: https://git.openjdk.org/jdk/pull/22464/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22464&range=03 Stats: 60 lines in 8 files changed: 11 ins; 45 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/22464.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22464/head:pull/22464 PR: https://git.openjdk.org/jdk/pull/22464 From mbaesken at openjdk.org Thu Dec 11 08:29:58 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 11 Dec 2025 08:29:58 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v4] In-Reply-To: References: Message-ID: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: Change to spec.gmk.template can be reverted ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28676/files - new: https://git.openjdk.org/jdk/pull/28676/files/f5dda1b9..ed003a36 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28676&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28676.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28676/head:pull/28676 PR: https://git.openjdk.org/jdk/pull/28676 From mbaesken at openjdk.org Thu Dec 11 08:30:27 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 11 Dec 2025 08:30:27 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. > Don?t we need to wait until #28676 is fixed? We can wait for 8372759, no problem. ( But this issue showed up only in some special environments anyway. ) ------------- PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3640796254 From mbaesken at openjdk.org Thu Dec 11 08:43:26 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 11 Dec 2025 08:43:26 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: <9pnHoz75EZSdvg9K9xYhdElxZabVk_34qB877xxAmdg=.69ebe4c6-3919-418c-b6f0-3f2581f22dc2@github.com> References: <9pnHoz75EZSdvg9K9xYhdElxZabVk_34qB877xxAmdg=.69ebe4c6-3919-418c-b6f0-3f2581f22dc2@github.com> Message-ID: On Wed, 10 Dec 2025 17:48:07 GMT, Phil Race wrote: > Why was it enabled in the first place ? At least we could identify and fix 2 bugs with enabling this (and those 2 bugs were in for 5+ years) . If you prefer to have some 'opt-in' switch via configure for lto in the same way we have it for libjvm , we can of course discuss this and introduce it. If your question is about 'why for libsplashscreen' , because we see some good lib size - benefits for this lib (there were some measurements by @mserb for this https://github.com/openjdk/jdk/pull/27976#issuecomment-3568427441 ) . ------------- PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3640841237 From erikj at openjdk.org Thu Dec 11 14:07:18 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 11 Dec 2025 14:07:18 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v4] In-Reply-To: References: Message-ID: <-B-jjlmQcQFlmVIwf3clTmGBDqBx3YTLxoec8eKL-dY=.79d29a06-e9f2-48da-9d9a-9fec36221c71@github.com> On Thu, 11 Dec 2025 08:29:58 GMT, Matthias Baesken wrote: >> Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: >> >> >> $ make test TEST="test/jdk/build/AbsPathsInImage.java" >> >> STDERR: >> java.lang.Exception: Test failed >> at AbsPathsInImage.main(AbsPathsInImage.java:132) >> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) >> at java.base/java.lang.reflect.Method.invoke(Method.java:565) >> at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) >> at java.base/java.lang.Thread.run(Thread.java:1516) >> >> >> The lto - built libsplashscreen.so was report to cause this. >> To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Change to spec.gmk.template can be reverted Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28676#pullrequestreview-3567603016 From mbaesken at openjdk.org Thu Dec 11 14:16:11 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 11 Dec 2025 14:16:11 GMT Subject: RFR: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 [v4] In-Reply-To: References: Message-ID: On Thu, 11 Dec 2025 08:29:58 GMT, Matthias Baesken wrote: >> Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: >> >> >> $ make test TEST="test/jdk/build/AbsPathsInImage.java" >> >> STDERR: >> java.lang.Exception: Test failed >> at AbsPathsInImage.main(AbsPathsInImage.java:132) >> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) >> at java.base/java.lang.reflect.Method.invoke(Method.java:565) >> at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) >> at java.base/java.lang.Thread.run(Thread.java:1516) >> >> >> The lto - built libsplashscreen.so was report to cause this. >> To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. > > Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision: > > Change to spec.gmk.template can be reverted Thanks for the review ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28676#issuecomment-3642123125 From mbaesken at openjdk.org Thu Dec 11 14:16:12 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Thu, 11 Dec 2025 14:16:12 GMT Subject: Integrated: 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 In-Reply-To: References: Message-ID: On Fri, 5 Dec 2025 11:48:14 GMT, Matthias Baesken wrote: > Fei Yang reported this test error on a Debian GNU/Linux 13 (trixie) x86_64 machine: > > > $ make test TEST="test/jdk/build/AbsPathsInImage.java" > > STDERR: > java.lang.Exception: Test failed > at AbsPathsInImage.main(AbsPathsInImage.java:132) > at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > The lto - built libsplashscreen.so was report to cause this. > To get rid of the unwanted paths in the shared lib (or in debug info files) we should not only compile but also link with debug prefix settings. This pull request has now been integrated. Changeset: b0bd0c39 Author: Matthias Baesken URL: https://git.openjdk.org/jdk/commit/b0bd0c398ee0e0fd625eba1e7d9802a4e420a2c5 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod 8372759: Test build/AbsPathsInImage.java fails after JDK-8370438 Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/28676 From serb at openjdk.org Thu Dec 11 19:02:33 2025 From: serb at openjdk.org (Sergey Bylokhov) Date: Thu, 11 Dec 2025 19:02:33 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Marked as reviewed by serb (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28746#pullrequestreview-3568886592 From prr at openjdk.org Fri Dec 12 18:45:51 2025 From: prr at openjdk.org (Phil Race) Date: Fri, 12 Dec 2025 18:45:51 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Marked as reviewed by prr (Reviewer). > > Why was it enabled in the first place ? > If your question is about 'why for libsplashscreen' , because we see some good lib size - benefits for this lib (there were some measurements by @mserb for this [#27976 (comment)](https://github.com/openjdk/jdk/pull/27976#issuecomment-3568427441) ) . Yes, my question was why splash screen out of all the libraries in the JDK. I guess a size reduction is good, but I've no idea if it helps performance. Note that on Linux, IIRC, the system gif/png/jpeg libs may be used by the build, and in such a case I doubt there's much "size" left to reduce. I've re-tested the comparison build and it passed. So I'll approve, just for this one library. ------------- PR Review: https://git.openjdk.org/jdk/pull/28746#pullrequestreview-3573133409 PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3647698972 From mbaesken at openjdk.org Fri Dec 12 19:00:04 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Fri, 12 Dec 2025 19:00:04 GMT Subject: RFR: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. Thanks for the reviews ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28746#issuecomment-3647751532 From mbaesken at openjdk.org Fri Dec 12 19:00:05 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Fri, 12 Dec 2025 19:00:05 GMT Subject: Integrated: 8373388: Reenable LTO for libsplashscreen In-Reply-To: References: Message-ID: On Wed, 10 Dec 2025 13:27:31 GMT, Matthias Baesken wrote: > [JDK-8372554](https://bugs.openjdk.org/browse/JDK-8372554) disabled LTO for libsplashscreen to fix an issue with the comparison build. It turns out the failure was caused by extra files that LTO produced and which were included in the image. Now that [JDK-8373255](https://bugs.openjdk.org/browse/JDK-8373255) has fixed that we should be able to reenable LTO again. This pull request has now been integrated. Changeset: 4e9525ef Author: Matthias Baesken URL: https://git.openjdk.org/jdk/commit/4e9525ef3619b02e905f16b89261b82c70830f3a Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod 8373388: Reenable LTO for libsplashscreen Reviewed-by: erikj, dholmes, serb, prr ------------- PR: https://git.openjdk.org/jdk/pull/28746 From clanger at openjdk.org Mon Dec 15 16:23:12 2025 From: clanger at openjdk.org (Christoph Langer) Date: Mon, 15 Dec 2025 16:23:12 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux Message-ID: This change adds back debug symbols by default to non-product builds. Whether to add debug symbols to the images/bundles created in a build is controlled by the configure switch `--with-external-symbols-in-bundles`. Possible values are `full`, which will be the default setting for non-product builds, `none` which is the default for product builds and a special option `public` which is only supported on Windows and enables stripped debug files in JDK/JRE images and bundles that are smaller than full debug files but still allow function names to be displayed in, e.g. hs_err files. If `external-symbols-in-bundles` are turned on, they propagate into images and bundles through the jmod files. With that, some code of Bundles.gmk that took care of copying the right set of debug files is now obsolete and can be removed. ------------- Commit messages: - Include *.diz files if debug files shall be shipped - JDK-8373246 Ship full debug symbols by default in case of non release builds Changes: https://git.openjdk.org/jdk/pull/28829/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28829&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373246 Stats: 76 lines in 3 files changed: 17 ins; 47 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/28829.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28829/head:pull/28829 PR: https://git.openjdk.org/jdk/pull/28829 From liach at openjdk.org Mon Dec 15 17:10:24 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 15 Dec 2025 17:10:24 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v10] In-Reply-To: References: Message-ID: > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 20 additional commits since the last revision: - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Stage - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Review - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Bugs and verify loader leak - Try to avoid loader leak - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure - Test from Jorn - ... and 10 more: https://git.openjdk.org/jdk/compare/f5945cc1...f9d808c1 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/d734e8a6..f9d808c1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=08-09 Stats: 19890 lines in 378 files changed: 12699 ins; 4700 del; 2491 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Mon Dec 15 17:44:49 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 15 Dec 2025 17:44:49 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v11] In-Reply-To: References: Message-ID: <4UBpAWbg2PlNeJ9-Wr4AvehrdVb8C8BYdoXfptvPI1o=.b92c5a06-6da9-4fe0-ab02-47c5a2126020@github.com> > Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Missed IR test review, rearrange benches ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28585/files - new: https://git.openjdk.org/jdk/pull/28585/files/f9d808c1..1d5461db Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28585&range=09-10 Stats: 109 lines in 4 files changed: 89 ins; 11 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/28585.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28585/head:pull/28585 PR: https://git.openjdk.org/jdk/pull/28585 From liach at openjdk.org Mon Dec 15 17:44:52 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 15 Dec 2025 17:44:52 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v10] In-Reply-To: References: Message-ID: On Mon, 15 Dec 2025 17:10:24 GMT, Chen Liang wrote: >> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH. Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`) > > Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 20 additional commits since the last revision: > > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Stage > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Review > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Bugs and verify loader leak > - Try to avoid loader leak > - Merge branch 'master' of https://github.com/openjdk/jdk into fix/vh-adapt-cache > - Revert void special case removal due to C2 shortage causing TestZGCBarrierElision::testAtomicThenAtomicAnotherField failure > - Test from Jorn > - ... and 10 more: https://git.openjdk.org/jdk/compare/faea2335...f9d808c1 Since I just noticed the actual cause of the failure of caching is that AD is created per name+type combination, I have created a benchmark case for that instead of reusing the existing exact ones: Benchmark Mode Cnt Score Error Units VarHandleTypeMismatch.exactInvocation avgt 30 0.396 ? 0.009 ns/op VarHandleTypeMismatch.genericInvocation avgt 30 0.375 ? 0.009 ns/op VarHandleTypeMismatch.pollutedInvocation avgt 30 8.281 ? 0.222 ns/op ------------- PR Comment: https://git.openjdk.org/jdk/pull/28585#issuecomment-3656852491 From liach at openjdk.org Mon Dec 15 17:44:54 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 15 Dec 2025 17:44:54 GMT Subject: RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v9] In-Reply-To: References: <4YumBpbA2k8DC13H1s808_5OJx-1FMxD9CbIUfRTb8Q=.742f90c9-0d93-43b7-abe7-76422a0c8359@github.com> Message-ID: On Wed, 10 Dec 2025 22:13:23 GMT, Vladimir Ivanov wrote: >> I think that is when two different VarHandles are both invoked non-exactly in two call sites in one method, the 2nd one fails to be inlined, that the compare-and-exchange from the 2nd one is not present in the final IR. The deoptimization reason is either "unstable-if" or "too many null checks", I think I will try look into it in another effort. > > If it's a test problem, then it's better to comment out the problematic test case instead. I have diagnosed the reason, updated the comments, and added a benchmark to showcase this. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2620294345 From erikj at openjdk.org Mon Dec 15 23:12:43 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 15 Dec 2025 23:12:43 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux In-Reply-To: References: Message-ID: On Mon, 15 Dec 2025 16:15:49 GMT, Christoph Langer wrote: > This change adds back debug symbols by default to non-product builds. > > Whether to add debug symbols to the images/bundles created in a build is controlled by the configure switch `--with-external-symbols-in-bundles`. > Possible values are `full`, which will be the default setting for non-product builds, `none` which is the default for product builds and a > special option `public` which is only supported on Windows and enables stripped debug files in JDK/JRE images and bundles that are smaller than > full debug files but still allow function names to be displayed in, e.g. hs_err files. > > If `external-symbols-in-bundles` are turned on, they propagate into images and bundles through the jmod files. > With that, some code of Bundles.gmk that took care of copying the right set of debug files is now obsolete and can be removed. Looks good! Thanks for fixing this. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28829#pullrequestreview-3580525444 From jwaters at openjdk.org Tue Dec 16 04:37:48 2025 From: jwaters at openjdk.org (Julian Waters) Date: Tue, 16 Dec 2025 04:37:48 GMT Subject: RFR: 8345265: Minor improvements for LTO across all compilers [v5] In-Reply-To: References: Message-ID: > This is a general cleanup and improvement of LTO, as well as a quick fix to remove a workaround in the Makefiles that disabled LTO for g1ParScanThreadState.cpp due to the old poisoning mechanism causing trouble. The -Wno-attribute-warning change here can be removed once Kim's new poisoning solution is integrated. > > - -fno-omit-frame-pointer is added to gcc to stop the linker from emitting code without the frame pointer > - -flto is set to $(JOBS) instead of auto to better match what the user requested > - -Gy is passed to the Microsoft compiler. This does not fully fix LTO under Microsoft, but prevents warnings about -LTCG:INCREMENTAL at least Julian Waters has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 23 commits: - Merge branch 'master' into patch-16 - Merge branch 'master' into patch-16 - Revert recent changes to ClientLibraries.gmk - Revert recent changes to CompileJvm.gmk - Revert recent changes to Flags.gmk - Revert recent changes to NativeCompilation.gmk - Revert recent changes to spec.gmk.template - Revert recent changes to flags-ldflags.m4 - Revert recent changes to flags-cflags.m4 - Remove no longer needed warning disable in JvmFeatures.gmk - ... and 13 more: https://git.openjdk.org/jdk/compare/3f33eaa4...fbe79af6 ------------- Changes: https://git.openjdk.org/jdk/pull/22464/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22464&range=04 Stats: 60 lines in 8 files changed: 11 ins; 45 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/22464.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22464/head:pull/22464 PR: https://git.openjdk.org/jdk/pull/22464 From stuefe at openjdk.org Tue Dec 16 07:46:51 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Tue, 16 Dec 2025 07:46:51 GMT Subject: RFR: 8373246: JDK-8351842 broke native debugging on Linux In-Reply-To: References: Message-ID: On Mon, 15 Dec 2025 16:15:49 GMT, Christoph Langer wrote: > This change adds back debug symbols by default to non-product builds. > > Whether to add debug symbols to the images/bundles created in a build is controlled by the configure switch `--with-external-symbols-in-bundles`. Possible values are `full`, which will be the default setting for non-product builds, `none` which is the default for product builds and a special option `public` which is only supported on Windows and enables stripped debug files in JDK/JRE images and bundles that are smaller than full debug files but still allow function names to be displayed in, e.g. hs_err files. > > If `external-symbols-in-bundles` are turned on, they propagate into images and bundles through the jmod files. > With that, some code of Bundles.gmk that took care of copying the right set of debug files is now obsolete and can be removed. Works (confirmed both with debugging, and o.c. the debuginfo files are all there) Patch looks fine, thank you! ------------- Marked as reviewed by stuefe (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28829#pullrequestreview-3581756855 From bkilambi at openjdk.org Tue Dec 16 10:23:32 2025 From: bkilambi at openjdk.org (Bhavana Kilambi) Date: Tue, 16 Dec 2025 10:23:32 GMT Subject: RFR: 8371711: AArch64: SVE intrinsics for Arrays.sort methods (int, float) In-Reply-To: References: <8i4snpt_829luK8hB9U6qgJ833kiNK1hPe7IckfaoJ8=.5cd666c6-b4c9-4ff5-bb39-d1243afd61f0@github.com> Message-ID: On Tue, 9 Dec 2025 00:01:26 GMT, Vladimir Ivanov wrote: > Since you do profound refactorings in the libsimdsort library code, I suggest to introduce SVE variant on top of FFM from the beginning. Let me finalize the PR and post it for review. What do you think? @iwanowww This sounds good. I can wait until you post your PR and then I can start working on updating this patch based on that. Thanks a lot! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28675#issuecomment-3659808712