From kvn at openjdk.org Mon Feb 2 19:08:08 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Mon, 2 Feb 2026 19:08:08 GMT Subject: RFR: 8366681: [leyden] Precompile more C1 code [v4] In-Reply-To: References: Message-ID: <5C56Ten_ewPQAuezjMv4_t4mJYZ0--ajVTOARZw6oRs=.3d3c08c3-848a-4ecf-b4d5-141820c38c36@github.com> On Wed, 17 Sep 2025 10:37:37 GMT, Aleksey Shipilev wrote: >> Looking at how code goes through AOT+JIT pipeline, I believe we have several issues in the way we include the methods for precompilation. >> >> 1. AP4 code gets replaced by more efficient A4 code, which can then deopt. Once it does, we go back to the fully normal JIT pipeline, with C1 compiling, C2 compiling, etc. Training run currently does A2 versions only when there is a tier2/3 training data present. We can pessimistically assume that A4/AP4 method should have A2 method generated for the sake of quicker deopt. >> >> 2. I suspect a similar thing, but rarer, happens with A4 -> ... -> T1 transition when compiler queues are overloaded. We can generate A1 method for this case. >> >> 3. When training is done with default configuration, but at runtime we enable only C1, we summarily miss almost *all* AOT methods, because A1 methods are rarely generated with a normal tiered policy. Generating A1 methods always would be convenient for hybrid C2 AOT + C1 JIT modes as well. >> >> Overall, I think generating more C1 methods even when C2 methods are present in training is beneficial, as we prepare the ground for whatever corner case happens at runtime. Benchmarks show this improves performance model quite a bit. >> >> Since we now look at methods at all different tiers when deciding to precompile, compile IDs are not working all that well. I have rewritten that to use counters and method sizes. This seems to work well in practice. >> >> Additional testing: >> - [x] `javac` performance tests (see comments) >> - [x] Linux x86_64 server fastdebug, `runtime/cds` > > 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 four additional commits since the last revision: > > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Fix My experiment with AOT A[P}4 code entry counter and deoptimization I see that we go to interpreter and then compile T2 which then trigger T4 compilation (per "persistent profiling" policy). I think we may indeed need A2 for methods compiled for A4. I am doing experiments to see if we indeed need these A2 to get more, up to date, profiling data for T4 compilation during productions run to get peak performance. ------------- PR Comment: https://git.openjdk.org/leyden/pull/93#issuecomment-3837092158 From duke at openjdk.org Tue Feb 3 07:06:48 2026 From: duke at openjdk.org (duke) Date: Tue, 3 Feb 2026 07:06:48 GMT Subject: Withdrawn: 8373256: [leyden] Enforce aligned reads/writes in code cache archive In-Reply-To: References: Message-ID: On Mon, 8 Dec 2025 13:25:29 GMT, Aleksey Shipilev wrote: > Spotting a little inefficiency when looking at related code. `DataKind` is always stored as `int`, but its values are actually comfortably fitting in byte. Going to `int8_t` saves about 1% of AOT cache size. If this ever becomes a problem, we can always revert back to `int32_t`. I looked around other uses of `write_bytes`, and I believe `DataKind` is the most obvious opportunity. > > Additional testing: > - [x] Linux x86_64 server fastdebug, `runtime/cds` This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/leyden/pull/105 From shade at openjdk.org Tue Feb 3 10:10:54 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 3 Feb 2026 10:10:54 GMT Subject: RFR: 8366681: [leyden] Precompile more C1 code [v4] In-Reply-To: References: Message-ID: On Wed, 17 Sep 2025 10:37:37 GMT, Aleksey Shipilev wrote: >> Looking at how code goes through AOT+JIT pipeline, I believe we have several issues in the way we include the methods for precompilation. >> >> 1. AP4 code gets replaced by more efficient A4 code, which can then deopt. Once it does, we go back to the fully normal JIT pipeline, with C1 compiling, C2 compiling, etc. Training run currently does A2 versions only when there is a tier2/3 training data present. We can pessimistically assume that A4/AP4 method should have A2 method generated for the sake of quicker deopt. >> >> 2. I suspect a similar thing, but rarer, happens with A4 -> ... -> T1 transition when compiler queues are overloaded. We can generate A1 method for this case. >> >> 3. When training is done with default configuration, but at runtime we enable only C1, we summarily miss almost *all* AOT methods, because A1 methods are rarely generated with a normal tiered policy. Generating A1 methods always would be convenient for hybrid C2 AOT + C1 JIT modes as well. >> >> Overall, I think generating more C1 methods even when C2 methods are present in training is beneficial, as we prepare the ground for whatever corner case happens at runtime. Benchmarks show this improves performance model quite a bit. >> >> Since we now look at methods at all different tiers when deciding to precompile, compile IDs are not working all that well. I have rewritten that to use counters and method sizes. This seems to work well in practice. >> >> Additional testing: >> - [x] `javac` performance tests (see comments) >> - [x] Linux x86_64 server fastdebug, `runtime/cds` > > 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 four additional commits since the last revision: > > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Merge branch 'premain' into JDK-8366681-precompile-more-c1 > - Fix OK, tell me if you want me to re-open the PR and do more A2 code. ------------- PR Comment: https://git.openjdk.org/leyden/pull/93#issuecomment-3840349801 From mariasde at redhat.com Tue Feb 3 11:14:09 2026 From: mariasde at redhat.com (=?UTF-8?Q?Mar=C3=ADa_Arias_de_Reyna_Dominguez?=) Date: Tue, 3 Feb 2026 12:14:09 +0100 Subject: Initialization code that never got trained In-Reply-To: References: Message-ID: Hi again! Comparing native and java was not as straight forward as I thought... but I decided to just do an experiment: What would happen if I train with "-Xcomp" and force compilation of everything? Would I get some advantage? My hypothesis said yes. Reality had other ideas. This is a simple REST API over Quarkus that calls a database and returns a select. I trained with "-Xcomp" and then run production without that option. And compared production runs with what happens if I don't train with XComp. This was done on 2 cores with dedicated cpu cores. But on my laptop, so other things running at the same time may have interfered (like using IO or memory, who knows, slack is a beast). But I run it four times and the results are always similar. JDK26 said that "[warning][aot] The AOT cache was created by a different version or build of HotSpot" so I couldn't even use it on my experiment. Premain (results from build over 127bfc9b0dd122c78e702867a88e0847ec362e68) didn't throw that error. Probably this is a bug, not a feature, but let's use it! Do we store more stuff on the cache with that option enabled? Yes, we definitely do. [image: image.png] Do we have a faster start-up time with Xcomp enabled? No, we even have a worse start-up time: [image: image.png] I decided to take a look at the cache statistics in both Premain runs: With XComp on: [debug][aot,codecache,exit] Adapters: total=725 [debug][aot,codecache,exit] Shared Blobs: total=0 [debug][aot,codecache,exit] C1 Blobs: total=0 [debug][aot,codecache,exit] C2 Blobs: total=0 [debug][aot,codecache,exit] AOT code cache size: 894352 bytes, max entry's size: 2208 bytes [info ][aot,codecache,exit] Wrote 725 AOT code entries to AOT Code Cache Classes in AOT Cache: 12,603 -> KlassTrainingData: 7,101 (56.34%) Objects in AOT Cache: 149,684 -> AOT-inited: 1,261 (0.84%) -> java.lang.Class instances: 12,361 (8.26%) -> java.lang.String instances: 46,320 (30.95%) Methods in AOT Cache: 158,664 -> MethodCounters: 38,424 (24.22%) -> MethodData: 33,347 (21.02%) -> MethodTrainingData: 37,619 (23.71%) -> CompileTrainingData: -> Level 1: 552 (0.35%) -> Level 2: 36 (0.02%) -> Level 3: 24,737 (15.59%) -> Level 4: 23,761 (14.98%) Without XComp: [debug][aot,codecache,exit] Adapters: total=724 [debug][aot,codecache,exit] Shared Blobs: total=0 [debug][aot,codecache,exit] C1 Blobs: total=0 [debug][aot,codecache,exit] C2 Blobs: total=0 [debug][aot,codecache,exit] AOT code cache size: 893136 bytes, max entry's size: 2208 bytes [info ][aot,codecache,exit] Wrote 724 AOT code entries to AOT Code Cache Classes in AOT Cache: 12,465 -> KlassTrainingData: 2,693 (21.60%) Objects in AOT Cache: 149,416 -> AOT-inited: 1,250 (0.84%) -> java.lang.Class instances: 12,208 (8.17%) -> java.lang.String instances: 46,458 (31.09%) Methods in AOT Cache: 157,933 -> MethodCounters: 11,004 (6.97%) -> MethodData: 7,311 (4.63%) -> MethodTrainingData: 8,794 (5.57%) -> CompileTrainingData: -> Level 1: 1,249 (0.79%) -> Level 2: 947 (0.60%) -> Level 3: 4,784 (3.03%) -> Level 4: 1,154 (0.73%) (for some reason, the log didn't say anything about any nmethod in the codecache) Whatever that argument is doing, is not helping as I expected. We get many more TrainingData objects, and the CompileTrainingData is done at a higher level. But it doesn't seem to speed up the application, probably because we are busy loading things we are not really going to use? So, the conclusion is: don't bother. This looks like a dead end. Mar?a, you should have trusted the process: the JVM knows better than you. On Wed, Jan 7, 2026 at 9:18?AM Mar?a Arias de Reyna Dominguez < mariasde at redhat.com> wrote: > Hi! > > Thanks! I will try to take a closer look and see what is exactly what is > happening. > > Right now, a comparison on a Quarkus native vs Quarkus Leyden (J26 main > latest) is close to six or seven times faster on the tests I have done. But > that may be test-dependent, so I have to dig further. > > On Sun, Jan 4, 2026 at 6:23?PM Dan Heidinga > wrote: > >> Happy new year! >> >> > For example: a REST API. It has some initialization, port opening, >> reading configurations, >> > etc... that run only once. So the code will never be trained. But it >> always runs at startup, >> > impacting the time to first response. >> >> Historically, JVMs have looked at run-once code - like the body of >> - as not being worth compiling as the return on the investment in >> compile time is too low. There have always been exceptions but even >> template style jits have avoided run once code. >> >> Can you quantify how much of the applications startup is spent in these >> run-once methods? >> >> > So, how can I tell Leyden to please compile and cache those functions, >> even if they are >> > going to be run just once, even if they are not optimized at all, even >> if those compilations >> > can get discarded after a couple of seconds? >> >> Compiling the code isn?t enough. There?s a lot of work with careful >> timing required to get the code ready for use before the first invocation. >> If we miss that window, then the compiled code is just overhead. >> >> For ?expensive? or long running single use code, we may be able to >> precompile with C1 and get out of the interpreter earlier at the cost of >> some coordination overhead to ensure the methods are installed immediately. >> >> I think we?d need to understand better where the time is being spent to >> see why this run once code is slowing down startup. >> >> ?Dan >> >> *From: *leyden-dev on behalf of Mar?a >> Arias de Reyna Dominguez >> *Date: *Tuesday, December 30, 2025 at 4:13?AM >> *To: *leyden-dev >> *Subject: *Initialization code that never got trained >> >> Happy New Year! >> >> I have been doing some experiments with Leyden and realized something: >> there is some code at startup/initialization that never gets optimized but >> is impacting on startup and warmup time. >> >> This was a realization while doing comparisons with native/graalvm images >> of the same code. >> >> For example: a REST API. It has some initialization, port opening, >> reading configurations, etc... that run only once. So the code will never >> be trained. But it always runs at startup, impacting the time to first >> response. >> >> Compared to a native image, the native image may not have it optimized, >> but at least it is already compiled, not interpreted. Therefore, the native >> image starts faster. >> >> So, how can I tell Leyden to please compile and cache those functions, >> even if they are going to be run just once, even if they are not optimized >> at all, even if those compilations can get discarded after a couple of >> seconds? >> >> Or are we just going to assume that that code, which is impacting startup >> time, doesn't need to be pre-compiled because we are focusing only on >> optimizations made by the JVM on runtime? >> >> Kind regards, >> Mar?a Arias de Reyna Dom?nguez >> Senior Software Engineer >> She / Her / Hers >> ariasdereyna at redhat.com >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 54724 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 33413 bytes Desc: not available URL: From vladimir.kozlov at oracle.com Tue Feb 3 19:39:20 2026 From: vladimir.kozlov at oracle.com (Vladimir Kozlov) Date: Tue, 3 Feb 2026 11:39:20 -0800 Subject: Initialization code that never got trained In-Reply-To: References: Message-ID: Thank you, Mar?a, for your report. Yes, we should not use -Xcomp in production (may be only for testing). Even if we don't take into account the size of AOT cache it will generate much worse code because of bad profiling information it collects. > (for some reason, the log didn't say anything about any nmethod in the codecache) I just check latest premain build and it shows nmethods. What command liens you used? > JDK26 said that "[warning][aot] The AOT cache was created by a different version or build of HotSpot" so I couldn't even use it on my experiment. What command lines you used for JDK 26 experiment? Thanks, Vladimir K On 2/3/26 3:14 AM, Mar?a Arias de Reyna Dominguez wrote: > Hi again! > > Comparing native and java was not as straight forward as I thought... > but I decided to just do an experiment: What would happen if I train > with "-Xcomp" and force compilation of everything? Would I get some > advantage? > > My hypothesis said yes. Reality had other ideas. > > This is a simple REST API over Quarkus that calls a database and returns > a select. I trained with "-Xcomp" and then run production without that > option. And compared production runs with what happens if I don't train > with XComp. > This was done on 2 cores with dedicated cpu cores. > But on my laptop, so other things running at the same time may have > interfered (like using IO or memory, who knows, slack is a beast). But I > run it four times and the results are always similar. > > JDK26 said that "[warning][aot] The AOT cache was created by a different > version or build of HotSpot" so I couldn't even use it on my experiment. > Premain (results from build > over?127bfc9b0dd122c78e702867a88e0847ec362e68)? didn't throw that error. > Probably this is a bug, not a feature, but let's use it! > > Do we store more stuff on the cache with that option enabled? Yes, we > definitely do. > > image.png > > Do we have a faster start-up time with Xcomp enabled? No, we even have a > worse start-up time: > > image.png > I decided to take a look at the cache statistics in both Premain runs: > > With XComp on: > [debug][aot,codecache,exit] ? Adapters: ?total=725 > [debug][aot,codecache,exit] ? Shared Blobs: ?total=0 > [debug][aot,codecache,exit] ? C1 Blobs: ? ? ?total=0 > [debug][aot,codecache,exit] ? C2 Blobs: ? ? ?total=0 > [debug][aot,codecache,exit] ? AOT code cache size: 894352 bytes, max > entry's size: 2208 bytes > [info ][aot,codecache,exit] Wrote 725 AOT code entries to AOT Code Cache > Classes in AOT Cache: 12,603 > ? -> KlassTrainingData: 7,101 (56.34%) > Objects in AOT Cache: 149,684 > ? -> AOT-inited: 1,261 (0.84%) > ? -> java.lang.Class instances: 12,361 (8.26%) > ? -> java.lang.String instances: 46,320 (30.95%) > Methods in AOT Cache: 158,664 > ? -> MethodCounters: 38,424 (24.22%) > ? -> MethodData: 33,347 (21.02%) > ? -> MethodTrainingData: 37,619 (23.71%) > ? -> CompileTrainingData: > ? ? ? -> Level 1: 552 (0.35%) > ? ? ? -> Level 2: 36 (0.02%) > ? ? ? -> Level 3: 24,737 (15.59%) > ? ? ? -> Level 4: 23,761 (14.98%) > > > Without XComp: > [debug][aot,codecache,exit] ? Adapters: ?total=724 > [debug][aot,codecache,exit] ? Shared Blobs: ?total=0 > [debug][aot,codecache,exit] ? C1 Blobs: ? ? ?total=0 > [debug][aot,codecache,exit] ? C2 Blobs: ? ? ?total=0 > [debug][aot,codecache,exit] ? AOT code cache size: 893136 bytes, max > entry's size: 2208 bytes > [info ][aot,codecache,exit] Wrote 724 AOT code entries to AOT Code Cache > Classes in AOT Cache: 12,465 > ? -> KlassTrainingData: 2,693 (21.60%) > Objects in AOT Cache: 149,416 > ? -> AOT-inited: 1,250 (0.84%) > ? -> java.lang.Class instances: 12,208 (8.17%) > ? -> java.lang.String instances: 46,458 (31.09%) > Methods in AOT Cache: 157,933 > ? -> MethodCounters: 11,004 (6.97%) > ? -> MethodData: 7,311 (4.63%) > ? -> MethodTrainingData: 8,794 (5.57%) > ? -> CompileTrainingData: > ? ? ? -> Level 1: 1,249 (0.79%) > ? ? ? -> Level 2: 947 (0.60%) > ? ? ? -> Level 3: 4,784 (3.03%) > ? ? ? -> Level 4: 1,154 (0.73%) > > (for some reason, the log didn't say anything about any nmethod in the > codecache) > > Whatever that argument is doing, is not helping as I expected. > > We get many more TrainingData objects, and the CompileTrainingData is > done at a higher level. But it doesn't seem to speed up the application, > probably because we are busy loading things we are not really going to use? > > So, the conclusion is: don't bother. This looks like a dead end. Mar?a, > you should have trusted the process: the JVM knows better than you. > > > On Wed, Jan 7, 2026 at 9:18?AM Mar?a Arias de Reyna Dominguez > > wrote: > > Hi! > > Thanks! I will try to take a closer look and see what is exactly > what is happening. > > Right now, a comparison on a Quarkus native vs Quarkus Leyden (J26 > main latest) is close to six or seven times faster on the tests I > have done. But that may be test-dependent, so I have to dig further. > > On Sun, Jan 4, 2026 at 6:23?PM Dan Heidinga > wrote: > > Happy new year! > > > For example: a REST API. It has some initialization, port > opening, reading configurations, > > etc... that run only once. So the code will never be trained. But it always runs at startup, > > impacting the time to first response. > > Historically, JVMs have looked at run-once code - like the body > of - ?as not being worth compiling as the return on the > investment in compile time is too low.? There have always been > exceptions but even template style jits have avoided run once code. > > Can you quantify how much of the applications startup is spent > in these run-once methods? > > > So, how can I tell Leyden to please compile and cache those functions, even if they are > > going to be run just once, even if they are not optimized at all, even if those compilations > > can get discarded after a couple of seconds? > > Compiling the code isn?t enough.? There?s a lot of work with > careful timing required?to get the code ready for use before the > first invocation.? If we miss that window, then the compiled > code is just overhead. > > For ?expensive? or long running single use code, we may be able > to precompile with C1 and get out of the interpreter earlier at > the cost of some coordination overhead to ensure the methods are > installed immediately. > > I think we?d need to understand better where the time is being > spent to see why this run once code is slowing down startup. > > ?Dan > > *From: *leyden-dev dev-retn at openjdk.org>> on behalf of Mar?a Arias de Reyna > Dominguez > > *Date: *Tuesday, December 30, 2025 at 4:13?AM > *To: *leyden-dev dev at openjdk.org>> > *Subject: *Initialization code that never got trained > > Happy New Year! > > I have been doing some experiments with Leyden and realized > something: there is some code at startup/initialization that > never gets optimized but is impacting on startup and warmup time. > > This was a realization while doing comparisons with native/ > graalvm images of the same code. > > For example: a REST API. It has some initialization, port > opening, reading configurations, etc... that run only once. So > the code will never be trained. But it always runs at startup, > impacting the time to first response. > > Compared to a native image, the native image may not have it > optimized, but at least it is already compiled, not interpreted. > Therefore, the native image starts faster. > > So, how can I tell Leyden to please compile and cache those > functions, even if they are going to be run just once, even if > they are not optimized at all, even if those compilations can > get discarded after a couple of seconds? > > Or are we just going to assume that that code, which is > impacting startup time, doesn't need to be pre-compiled because > we are focusing only on optimizations made by the JVM on runtime? > > Kind regards, > Mar?a Arias de Reyna Dom?nguez > Senior Software Engineer > She / Her / Hers > ariasdereyna at redhat.com > From kvn at openjdk.org Tue Feb 3 19:44:46 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 3 Feb 2026 19:44:46 GMT Subject: RFR: 8366681: [leyden] Precompile more C1 code [v4] In-Reply-To: References: Message-ID: On Tue, 3 Feb 2026 10:08:06 GMT, Aleksey Shipilev wrote: > OK, tell me if you want me to re-open the PR and do more A2 code. No need to reopen it. My experiments yesterday shows that directly requesting T4 compilation (instead of deoptimization) after we hit entry counter limit in AOT code is better then using A2 to profile and trigger T4 after that. ------------- PR Comment: https://git.openjdk.org/leyden/pull/93#issuecomment-3843288516 From mariasde at redhat.com Wed Feb 4 09:14:14 2026 From: mariasde at redhat.com (=?UTF-8?Q?Mar=C3=ADa_Arias_de_Reyna_Dominguez?=) Date: Wed, 4 Feb 2026 10:14:14 +0100 Subject: Initialization code that never got trained In-Reply-To: References: Message-ID: Hi! On Tue, Feb 3, 2026 at 8:40?PM Vladimir Kozlov wrote: > Thank you, Mar?a, for your report. > > > (for some reason, the log didn't say anything about any nmethod in > the codecache) > > I just check latest premain build and it shows nmethods. > What command liens you used? > Training: java -XX:+PrintCompilation -agentpath:/..../libasyncProfiler.so=start,event=cpu,file=.....profile.html -XX:AOTCacheOutput=...../sqpc-quarkus-uberjar-app.aot -Xcomp -Xlog:aot+map=trace,aot+map+oops=trace:file=......-aot.map:none:filesize=0 -Xlog:class+load=info,aot+resolve*=trace,aot+codecache+exit=debug,aot=warning:file=......training.log:level,tags -jar file.jar Production: java -XX:+PrintCompilation -agentpath:/..../libasyncProfiler.so=start,event=cpu,file=......profile.html -XX:AOTCache=...../sqpc-quarkus-uberjar-app.aot -Xlog:class+load=info,aot+resolve*=trace,aot+codecache+exit=debug,aot=warning:file=./.....aot.log:level,tags -jar file.jar (removed the paths) > JDK26 said that "[warning][aot] The AOT cache was created by a > different version or build of HotSpot" so I couldn't even use it on my > experiment. > > What command lines you used for JDK 26 experiment? > Same. > > Thanks, > Vladimir K > > On 2/3/26 3:14 AM, Mar?a Arias de Reyna Dominguez wrote: > > Hi again! > > > > Comparing native and java was not as straight forward as I thought... > > but I decided to just do an experiment: What would happen if I train > > with "-Xcomp" and force compilation of everything? Would I get some > > advantage? > > > > My hypothesis said yes. Reality had other ideas. > > > > This is a simple REST API over Quarkus that calls a database and returns > > a select. I trained with "-Xcomp" and then run production without that > > option. And compared production runs with what happens if I don't train > > with XComp. > > This was done on 2 cores with dedicated cpu cores. > > But on my laptop, so other things running at the same time may have > > interfered (like using IO or memory, who knows, slack is a beast). But I > > run it four times and the results are always similar. > > > > JDK26 said that "[warning][aot] The AOT cache was created by a different > > version or build of HotSpot" so I couldn't even use it on my experiment. > > Premain (results from build > > over 127bfc9b0dd122c78e702867a88e0847ec362e68) didn't throw that error. > > Probably this is a bug, not a feature, but let's use it! > > > > Do we store more stuff on the cache with that option enabled? Yes, we > > definitely do. > > > > image.png > > > > Do we have a faster start-up time with Xcomp enabled? No, we even have a > > worse start-up time: > > > > image.png > > I decided to take a look at the cache statistics in both Premain runs: > > > > With XComp on: > > [debug][aot,codecache,exit] Adapters: total=725 > > [debug][aot,codecache,exit] Shared Blobs: total=0 > > [debug][aot,codecache,exit] C1 Blobs: total=0 > > [debug][aot,codecache,exit] C2 Blobs: total=0 > > [debug][aot,codecache,exit] AOT code cache size: 894352 bytes, max > > entry's size: 2208 bytes > > [info ][aot,codecache,exit] Wrote 725 AOT code entries to AOT Code Cache > > Classes in AOT Cache: 12,603 > > -> KlassTrainingData: 7,101 (56.34%) > > Objects in AOT Cache: 149,684 > > -> AOT-inited: 1,261 (0.84%) > > -> java.lang.Class instances: 12,361 (8.26%) > > -> java.lang.String instances: 46,320 (30.95%) > > Methods in AOT Cache: 158,664 > > -> MethodCounters: 38,424 (24.22%) > > -> MethodData: 33,347 (21.02%) > > -> MethodTrainingData: 37,619 (23.71%) > > -> CompileTrainingData: > > -> Level 1: 552 (0.35%) > > -> Level 2: 36 (0.02%) > > -> Level 3: 24,737 (15.59%) > > -> Level 4: 23,761 (14.98%) > > > > > > Without XComp: > > [debug][aot,codecache,exit] Adapters: total=724 > > [debug][aot,codecache,exit] Shared Blobs: total=0 > > [debug][aot,codecache,exit] C1 Blobs: total=0 > > [debug][aot,codecache,exit] C2 Blobs: total=0 > > [debug][aot,codecache,exit] AOT code cache size: 893136 bytes, max > > entry's size: 2208 bytes > > [info ][aot,codecache,exit] Wrote 724 AOT code entries to AOT Code Cache > > Classes in AOT Cache: 12,465 > > -> KlassTrainingData: 2,693 (21.60%) > > Objects in AOT Cache: 149,416 > > -> AOT-inited: 1,250 (0.84%) > > -> java.lang.Class instances: 12,208 (8.17%) > > -> java.lang.String instances: 46,458 (31.09%) > > Methods in AOT Cache: 157,933 > > -> MethodCounters: 11,004 (6.97%) > > -> MethodData: 7,311 (4.63%) > > -> MethodTrainingData: 8,794 (5.57%) > > -> CompileTrainingData: > > -> Level 1: 1,249 (0.79%) > > -> Level 2: 947 (0.60%) > > -> Level 3: 4,784 (3.03%) > > -> Level 4: 1,154 (0.73%) > > > > (for some reason, the log didn't say anything about any nmethod in the > > codecache) > > > > Whatever that argument is doing, is not helping as I expected. > > > > We get many more TrainingData objects, and the CompileTrainingData is > > done at a higher level. But it doesn't seem to speed up the application, > > probably because we are busy loading things we are not really going to > use? > > > > So, the conclusion is: don't bother. This looks like a dead end. Mar?a, > > you should have trusted the process: the JVM knows better than you. > > > > > > On Wed, Jan 7, 2026 at 9:18?AM Mar?a Arias de Reyna Dominguez > > > wrote: > > > > Hi! > > > > Thanks! I will try to take a closer look and see what is exactly > > what is happening. > > > > Right now, a comparison on a Quarkus native vs Quarkus Leyden (J26 > > main latest) is close to six or seven times faster on the tests I > > have done. But that may be test-dependent, so I have to dig further. > > > > On Sun, Jan 4, 2026 at 6:23?PM Dan Heidinga > > wrote: > > > > Happy new year! > > > > > For example: a REST API. It has some initialization, port > > opening, reading configurations, > > > etc... that run only once. So the code will never be trained. > But it always runs at startup, > > > impacting the time to first response. > > > > Historically, JVMs have looked at run-once code - like the body > > of - as not being worth compiling as the return on the > > investment in compile time is too low. There have always been > > exceptions but even template style jits have avoided run once > code. > > > > Can you quantify how much of the applications startup is spent > > in these run-once methods? > > > > > So, how can I tell Leyden to please compile and cache those > functions, even if they are > > > going to be run just once, even if they are not optimized at > all, even if those compilations > > > can get discarded after a couple of seconds? > > > > Compiling the code isn?t enough. There?s a lot of work with > > careful timing required to get the code ready for use before the > > first invocation. If we miss that window, then the compiled > > code is just overhead. > > > > For ?expensive? or long running single use code, we may be able > > to precompile with C1 and get out of the interpreter earlier at > > the cost of some coordination overhead to ensure the methods are > > installed immediately. > > > > I think we?d need to understand better where the time is being > > spent to see why this run once code is slowing down startup. > > > > ?Dan > > > > *From: *leyden-dev > dev-retn at openjdk.org>> on behalf of Mar?a Arias de Reyna > > Dominguez > > > *Date: *Tuesday, December 30, 2025 at 4:13?AM > > *To: *leyden-dev > dev at openjdk.org>> > > *Subject: *Initialization code that never got trained > > > > Happy New Year! > > > > I have been doing some experiments with Leyden and realized > > something: there is some code at startup/initialization that > > never gets optimized but is impacting on startup and warmup time. > > > > This was a realization while doing comparisons with native/ > > graalvm images of the same code. > > > > For example: a REST API. It has some initialization, port > > opening, reading configurations, etc... that run only once. So > > the code will never be trained. But it always runs at startup, > > impacting the time to first response. > > > > Compared to a native image, the native image may not have it > > optimized, but at least it is already compiled, not interpreted. > > Therefore, the native image starts faster. > > > > So, how can I tell Leyden to please compile and cache those > > functions, even if they are going to be run just once, even if > > they are not optimized at all, even if those compilations can > > get discarded after a couple of seconds? > > > > Or are we just going to assume that that code, which is > > impacting startup time, doesn't need to be pre-compiled because > > we are focusing only on optimizations made by the JVM on runtime? > > > > Kind regards, > > Mar?a Arias de Reyna Dom?nguez > > Senior Software Engineer > > She / Her / Hers > > ariasdereyna at redhat.com > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From duke at openjdk.org Thu Feb 5 03:34:03 2026 From: duke at openjdk.org (duke) Date: Thu, 5 Feb 2026 03:34:03 GMT Subject: Withdrawn: Experiment with storing target method for static and opt-virtual callsites in reloc info In-Reply-To: References: Message-ID: <2E7C2zQAcXdjG00I-RXDtxkz5x096sUCUoMVK7Rk-mc=.6a7a9fc3-f049-4ea6-8fb2-65529b3d61ee@github.com> On Tue, 9 Dec 2025 21:15:23 GMT, Ashutosh Mehra wrote: > This work aims to reduce the time taken to perform call resolution by caching the result of direct calls (static and opt-virtual) in the reloc info during compilation of a method. > Relocations for static and opt-virtual calls already have a field `method_index` which is used to store the "real" method to be invoked by the method handle. It is currently only used during c2 compilations. > This patch re-uses the `method_index` field for static and opt-virtual calls to store the target method. The runtime call (`SharedRuntime::resolve_helper`) used by the compiled code to perform the call site resolution can then optimize the resolution process by getting the target method from the reloc info and patches the callsite through CompiledDirectCall. > No special handling is needed for AOT code. > > On a 4-cpu system there is around 3% improvement in `spring-boot-getting-started`. Numbers for JavacBench range between 0-3% improvement. > > `spring-boot-getting-started`: > > Run,Old CDS + AOT,New CDS + AOT > 1,199,192 > 2,199,196 > 3,202,197 > 4,203,198 > 5,198,196 > 6,201,194 > 7,203,197 > 8,200,193 > 9,204,193 > 10,199,201 > Geomean,200.79,195.68 (1.03x improvement) > Stdev,1.99,2.61 > > > `-Xlog:init` shows the numbers for time spent in call resolution from the compiled code. > For `spring-boot-getting-started` before this patch: > > [0.357s][info][init] SharedRuntime: > [0.357s][info][init] resolve_opt_virtual_call: 8260us / 2249 events > [0.357s][info][init] resolve_virtual_call: 6899us / 1297 events > [0.357s][info][init] resolve_static_call: 4646us / 1723 events > [0.357s][info][init] handle_wrong_method: 680us / 145 events > [0.357s][info][init] ic_miss: 2109us / 488 events > [0.357s][info][init] Total: 22596us > [0.357s][info][init] perf_resolve_static_cache_hit_ctr: 0 > [0.357s][info][init] perf_resolve_opt_virtual_cache_hit_ctr: 0 > > > For `spring-boot-getting-started` after this patch: > > [0.348s][info][init] SharedRuntime: > [0.348s][info][init] resolve_opt_virtual_call: 2774us / 2251 events > [0.348s][info][init] resolve_virtual_call: 5577us / 1294 events > [0.348s][info][init] resolve_static_call: 1901us / 1728 events > [0.348s][info][init] handle_wrong_method: 719us / 146 events > [0.348s][info][init] ic_miss: 2109us / 474 events > [0.348s][info][init] Total: 13082us > [0.348s][info][init] perf_resolve_static_cache_hit_ctr: 1704 > ... This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/leyden/pull/106 From iklam at openjdk.org Thu Feb 5 04:33:52 2026 From: iklam at openjdk.org (Ioi Lam) Date: Thu, 5 Feb 2026 04:33:52 GMT Subject: git: openjdk/leyden: premain: 196 new changesets Message-ID: <1aa4065e-1b96-479e-bbf4-247c5fd769b2@openjdk.org> Changeset: 34d6e5e0 Branch: premain Author: Kim Barrett Date: 2026-01-21 05:56:19 +0000 URL: https://git.openjdk.org/leyden/commit/34d6e5e07b8ee43ee7f913dd47fa7c897f52e6c0 8375737: Fix -Wzero-as-null-pointer-constant warnings in arm32 code Reviewed-by: dholmes ! src/hotspot/cpu/arm/frame_arm.cpp ! src/hotspot/cpu/arm/nativeInst_arm_32.cpp ! src/hotspot/cpu/arm/nativeInst_arm_32.hpp Changeset: b5727d27 Branch: premain Author: Kim Barrett Date: 2026-01-21 06:04:09 +0000 URL: https://git.openjdk.org/leyden/commit/b5727d27622e1e321733f8d0e606b366984104be 8375738: Fix -Wzero-as-null-pointer-constant warnings in MacOSX/bsd code Reviewed-by: erikj, dholmes ! make/hotspot/lib/CompileGtest.gmk ! src/hotspot/os/bsd/memMapPrinter_macosx.cpp ! src/hotspot/os/bsd/os_bsd.cpp Changeset: 560a92a6 Branch: premain Author: Jie Fu Date: 2026-01-21 06:33:54 +0000 URL: https://git.openjdk.org/leyden/commit/560a92a6327221c90596bcd17a87722e4910472a 8375787: compiler/vectorapi/TestCastShapeBadOpc.java fails with release VMs Reviewed-by: syan, lmesnik, fyang, epeter ! test/hotspot/jtreg/compiler/vectorapi/TestCastShapeBadOpc.java Changeset: 4f87fb53 Branch: premain Author: Thomas Schatzl Date: 2026-01-21 09:01:00 +0000 URL: https://git.openjdk.org/leyden/commit/4f87fb53ee5c6071fa57dfe9452eca9fe7b460ee 8375622: G1: Convert G1CodeRootSet to use Atomic Reviewed-by: shade, sjohanss ! src/hotspot/share/gc/g1/g1CodeRootSet.cpp Changeset: b1340305 Branch: premain Author: Ivan Walulya Date: 2026-01-21 09:51:01 +0000 URL: https://git.openjdk.org/leyden/commit/b1340305c8f5ea53b45b8bd3bd2ebe8f74864d40 8238686: G1 may waste lots of space or fail to uncommit when observing MinHeapFreeRatio during sizing after full gc Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1Arguments.cpp Changeset: 5c7c2f09 Branch: premain Author: Francesco Andreuzzi Date: 2026-01-21 10:42:05 +0000 URL: https://git.openjdk.org/leyden/commit/5c7c2f093b83a017970d9d05c258b4c0910bfc2c 8375717: Outdated link in jdk.jfr.internal.JVM javadoc Reviewed-by: egahlin ! src/jdk.jfr/share/classes/jdk/jfr/internal/JVM.java Changeset: 983ae96f Branch: premain Author: Jatin Bhateja Date: 2026-01-21 11:20:18 +0000 URL: https://git.openjdk.org/leyden/commit/983ae96f60c935aa52f482d21ae6a0d947679541 8375498: [VectorAPI] Dump primary vector IR details with -XX:+TraceNewVectors Reviewed-by: epeter ! src/hotspot/share/opto/vectorIntrinsics.cpp Changeset: 4c9103f7 Branch: premain Author: Matthias Baesken Date: 2026-01-21 14:14:33 +0000 URL: https://git.openjdk.org/leyden/commit/4c9103f7b6c91b0f237859516ef72bb9ee27157e 8374998: Failing os::write - remove bad file Reviewed-by: mdoerr, lucy ! src/hotspot/os/posix/perfMemory_posix.cpp Changeset: 3033e6f4 Branch: premain Author: Kim Barrett Date: 2026-01-21 14:55:26 +0000 URL: https://git.openjdk.org/leyden/commit/3033e6f421d0f6e0aea1d976a806d7abca7c6360 8375544: JfrSet::clear should not use memset Reviewed-by: mgronlun ! src/hotspot/share/jfr/utilities/jfrSet.hpp Changeset: 17086d31 Branch: premain Author: Maurizio Cimadamore Date: 2026-01-21 16:14:35 +0000 URL: https://git.openjdk.org/leyden/commit/17086d31196827432477391fd2921a82868eaa05 8375646: Some parser flags seem unused Reviewed-by: jlahoda, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Changeset: a0ac5b34 Branch: premain Author: Damon Nguyen Date: 2026-01-21 18:47:39 +0000 URL: https://git.openjdk.org/leyden/commit/a0ac5b34a742cf18d86f3ac77110bcaa00192169 8375775: JDK 26 RDP2 L10n resource files update Reviewed-by: naoto, jlu, liach ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins_de.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins_ja.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins_zh_CN.properties Changeset: 3d919ad4 Branch: premain Author: Serguei Spitsyn Date: 2026-01-22 01:53:42 +0000 URL: https://git.openjdk.org/leyden/commit/3d919ad43a041eb60ce51e78831c77fd3b109aee 8373366: HandshakeState should disallow suspend ops for disabler threads 8375362: Deadlock with unmount of suspended virtual thread interrupting another virtual thread Reviewed-by: lmesnik, pchilanomate ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/hotspot/share/runtime/mountUnmountDisabler.cpp ! src/hotspot/share/runtime/suspendResumeManager.cpp + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest2/ThreadStateTest2.java + test/hotspot/jtreg/serviceability/jvmti/vthread/ThreadStateTest2/libThreadStateTest2.cpp Changeset: 38a8309b Branch: premain Author: Ivan Walulya Date: 2026-01-22 05:38:32 +0000 URL: https://git.openjdk.org/leyden/commit/38a8309b3f2544fa13448f5217e4227f0e2fe171 8341630: G1: Adopt PartialArrayState to consolidate marking stack in concurrent marking Co-authored-by: Stefan Johansson Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp - src/hotspot/share/gc/g1/g1ConcurrentMarkObjArrayProcessor.cpp - src/hotspot/share/gc/g1/g1ConcurrentMarkObjArrayProcessor.hpp - src/hotspot/share/gc/g1/g1ConcurrentMarkObjArrayProcessor.inline.hpp ! src/hotspot/share/gc/shared/taskqueue.hpp Changeset: 0f4d7750 Branch: premain Author: Tobias Hartmann Date: 2026-01-22 06:56:51 +0000 URL: https://git.openjdk.org/leyden/commit/0f4d775085109981fbf00623d38da22655d04675 8375534: Debug method 'pp' should support compressed oops Reviewed-by: vlivanov, phubner ! src/hotspot/share/utilities/debug.cpp Changeset: f3381f0f Branch: premain Author: Thomas Schatzl Date: 2026-01-22 08:29:05 +0000 URL: https://git.openjdk.org/leyden/commit/f3381f0ffe2207e1765558f6f49e5a0280a3f920 8375314: Parallel: Crash iterating over unloaded classes for ObjectCountAfterGC event Reviewed-by: rkennke, sjohanss, iwalulya ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.hpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/collectedHeap.inline.hpp + test/hotspot/jtreg/gc/parallel/TestObjectCountAfterGC.java Changeset: e50bf1f2 Branch: premain Author: Thomas Schatzl Date: 2026-01-22 08:29:27 +0000 URL: https://git.openjdk.org/leyden/commit/e50bf1f2a4702ef48cf16cc4f45d034a652bf358 8375616: G1: Convert G1BatchedTask to use Atomic Reviewed-by: sjohanss, kbarrett ! src/hotspot/share/gc/g1/g1BatchedTask.cpp ! src/hotspot/share/gc/g1/g1BatchedTask.hpp Changeset: 92236ead Branch: premain Author: Quan Anh Mai Date: 2026-01-22 08:32:01 +0000 URL: https://git.openjdk.org/leyden/commit/92236ead1dea813cf456855f0aa6b73c16e9dc70 8375618: Incorrect assert in CastLLNode::Ideal Reviewed-by: chagedorn, dlong ! src/hotspot/share/opto/castnode.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp + test/hotspot/jtreg/compiler/igvn/CastLLBits.java Changeset: 63be87d7 Branch: premain Author: Thomas Schatzl Date: 2026-01-22 08:35:03 +0000 URL: https://git.openjdk.org/leyden/commit/63be87d7f38a83c5fcdf59b54c6d63e0f0ca34d6 8375977: G1: Convert JVMCICleaningTask to use Atomic Reviewed-by: kbarrett ! src/hotspot/share/gc/g1/g1ParallelCleaning.cpp ! src/hotspot/share/gc/g1/g1ParallelCleaning.hpp Changeset: 03038d80 Branch: premain Author: Thomas Schatzl Date: 2026-01-22 08:35:32 +0000 URL: https://git.openjdk.org/leyden/commit/03038d802cc43b7694f554978ac9de8edca8a954 8375978: G1: Convert G1Policy to use Atomic Reviewed-by: kbarrett ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp Changeset: 6165daf0 Branch: premain Author: Matthias Baesken Date: 2026-01-22 08:50:11 +0000 URL: https://git.openjdk.org/leyden/commit/6165daf03c8582cca8e5b075560aa978b90f677c 8375458: Check legal folder of JDK image for unwanted files Reviewed-by: erikj ! test/jdk/build/CheckFiles.java Changeset: ddbd4617 Branch: premain Author: Casper Norrbin Date: 2026-01-22 09:45:40 +0000 URL: https://git.openjdk.org/leyden/commit/ddbd4617a6172e3054b2afade4f304f66c79816e 8303470: containers/docker/TestMemoryAwareness.java failed with "'memory_limit_in_bytes:.*512000 k' missing from stdout/stderr" Reviewed-by: sgehwolf, dholmes ! src/hotspot/os/linux/osContainer_linux.cpp ! test/hotspot/jtreg/ProblemList.txt Changeset: e8eb218c Branch: premain Author: Liam Miller-Cushon Date: 2026-01-22 10:05:05 +0000 URL: https://git.openjdk.org/leyden/commit/e8eb218ca2d05736adc4b0aefa4b17e3062959b8 8374643: Fix reference to implMethodKind in LambdaToMethod debug printf statement Reviewed-by: vromero, liach ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/diags/examples/LambdaDeserializationStat.java ! test/langtools/tools/javac/lambda/SerializableObjectMethods.java + test/langtools/tools/javac/lambda/SerializableObjectMethods.out Changeset: 6e9256cb Branch: premain Author: Roland Westrelin Date: 2026-01-22 10:37:26 +0000 URL: https://git.openjdk.org/leyden/commit/6e9256cb613c9a3594546a45975a81def2efcf46 8373343: C2: verify AddP base input only set for heap addresses Reviewed-by: dlong, chagedorn, qamai ! src/hotspot/share/gc/shared/c2/barrierSetC2.cpp ! src/hotspot/share/opto/addnode.hpp ! src/hotspot/share/opto/callnode.cpp ! src/hotspot/share/opto/callnode.hpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/macro.cpp ! src/hotspot/share/opto/macro.hpp ! src/hotspot/share/opto/macroArrayCopy.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/memnode.hpp ! src/hotspot/share/opto/parse.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parseHelper.cpp ! src/hotspot/share/opto/subtypenode.cpp Changeset: 0ad81fbd Branch: premain Author: Thomas Schatzl Date: 2026-01-22 11:04:09 +0000 URL: https://git.openjdk.org/leyden/commit/0ad81fbd161edbc8479e5af5c0f8d6098f6c72d1 8375541: G1: Race in G1BarrierSet::write_ref_field_post() Reviewed-by: iwalulya, sjohanss, shade ! src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp Changeset: 66e950e9 Branch: premain Author: Ivan Walulya Date: 2026-01-22 11:07:42 +0000 URL: https://git.openjdk.org/leyden/commit/66e950e9b6414617952d22200831be5b0cafee85 8340470: G1: Adopt PartialArrayState to consolidate marking stack in Full GC Co-authored-by: Stefan Johansson Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp ! src/hotspot/share/gc/g1/g1FullGCMarker.cpp ! src/hotspot/share/gc/g1/g1FullGCMarker.hpp ! src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.hpp Changeset: 5e0ed3f4 Branch: premain Author: Thomas Schatzl Date: 2026-01-22 11:51:37 +0000 URL: https://git.openjdk.org/leyden/commit/5e0ed3f408b6afd7496e0e0da207f7e372b0d446 8375982: G1: Convert G1YoungCollector helper classes to use Atomic Reviewed-by: kbarrett, shade ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp Changeset: 0d1d4d07 Branch: premain Author: Roland Westrelin Date: 2026-01-22 12:09:11 +0000 URL: https://git.openjdk.org/leyden/commit/0d1d4d07b9fa2368f471f30e176d446698500115 8374725: C2: assert(x_ctrl == get_late_ctrl_with_anti_dep(x->as_Load(), early_ctrl, x_ctrl)) failed: anti-dependences were already checked Reviewed-by: chagedorn, qamai, dfenacci ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/loopopts/TestSinkingLoadInputOfPhi.java Changeset: eda15aa1 Branch: premain Author: Weijun Wang Date: 2026-01-22 12:16:09 +0000 URL: https://git.openjdk.org/leyden/commit/eda15aa19c36142984edaa08850132ca6ae7a369 8277489: Rewrite JAAS UnixLoginModule with FFM Co-authored-by: Martin Doerr Reviewed-by: mdoerr, ascarpino, erikj ! make/modules/jdk.security.auth/Lib.gmk ! src/java.base/share/classes/module-info.java ! src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java ! src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixSystem.java - src/jdk.security.auth/unix/native/libjaas/Unix.c ! test/jdk/com/sun/security/auth/module/AllPlatforms.java Changeset: 025041ba Branch: premain Author: Artur Barashev Date: 2026-01-22 13:11:42 +0000 URL: https://git.openjdk.org/leyden/commit/025041ba04f3ae3a149b9d57d0dde4afaef37f4c 8370885: Default namedGroups values are not being filtered against algorithm constraints Reviewed-by: hchao ! src/java.base/share/classes/sun/security/ssl/NamedGroup.java + test/jdk/sun/security/ssl/CipherSuite/DefaultNamedGroups.java Changeset: 26aab3cc Branch: premain Author: Patricio Chilano Mateo Date: 2026-01-22 14:56:23 +0000 URL: https://git.openjdk.org/leyden/commit/26aab3cccdbcf98c329c8d67093eb2dbf4b164e5 8373120: Virtual thread stuck in BLOCKED state Co-authored-by: Alan Bateman Reviewed-by: alanb ! src/java.base/share/classes/java/lang/VirtualThread.java + test/jdk/java/lang/Thread/virtual/stress/NotifiedThenTimedOutWait.java Changeset: 07f6617e Branch: premain Author: Brian Burkhalter Date: 2026-01-22 16:11:33 +0000 URL: https://git.openjdk.org/leyden/commit/07f6617e0b2752b538b6c43250dd0bb65fd8c695 8367284: (fs) Support current working directory target in SecureDirectoryStream.move Reviewed-by: alanb ! src/java.base/share/classes/java/nio/file/SecureDirectoryStream.java ! src/java.base/unix/classes/sun/nio/fs/UnixSecureDirectoryStream.java ! test/jdk/java/nio/file/DirectoryStream/SecureDS.java Changeset: 8c82b58d Branch: premain Author: Alexander Zuev Date: 2026-01-22 16:36:24 +0000 URL: https://git.openjdk.org/leyden/commit/8c82b58db960a178566514731e1f8dcbc59b0161 8286258: [Accessibility,macOS,VoiceOver] VoiceOver reads the spinner value wrong and sometime partially Reviewed-by: psadhukhan, asemenov ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m + test/jdk/javax/accessibility/JSpinner/CustomSpinnerAccessibilityTest.java Changeset: 5dfda66e Branch: premain Author: Henry Jen Date: 2026-01-22 17:21:44 +0000 URL: https://git.openjdk.org/leyden/commit/5dfda66e13df5a88a66a6e4b1ae1bcd4e20ac674 8373928: 4 Dangling pointer defect groups in java.c Reviewed-by: bpb, alanb, jpai, jwaters ! src/java.base/share/native/libjli/java.c Changeset: 96a2649e Branch: premain Author: Hai-May Chao Date: 2026-01-22 17:41:00 +0000 URL: https://git.openjdk.org/leyden/commit/96a2649e29b8b4ff9b65b2314d430bc7637c5c61 8373408: SHA1withECDSA is not required for ECDHE and ECDSA Reviewed-by: djelinski, ascarpino ! src/java.base/share/classes/sun/security/ssl/JsseJce.java Changeset: f3121d10 Branch: premain Author: Phil Race Date: 2026-01-22 20:16:44 +0000 URL: https://git.openjdk.org/leyden/commit/f3121d10237a933087dde926f83a12ce826cde02 8373931: Test javax/sound/sampled/Clip/AutoCloseTimeCheck.java timed out Reviewed-by: dholmes, dnguyen, kizune ! test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java Changeset: d6ebcf8a Branch: premain Author: Kelvin Nilsen Date: 2026-01-22 21:28:57 +0000 URL: https://git.openjdk.org/leyden/commit/d6ebcf8a4f42b8e157083be90271e0df3b631033 8357471: GenShen: Share collector reserves between young and old Reviewed-by: wkemper ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp ! src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp ! src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp ! src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp ! src/hotspot/share/gc/shenandoah/shenandoahGeneration.hpp ! src/hotspot/share/gc/shenandoah/shenandoahGenerationalFullGC.cpp ! src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp ! src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp ! src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp ! src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp ! src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp ! src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp ! test/hotspot/gtest/gc/shenandoah/test_shenandoahOldHeuristic.cpp Changeset: 25d2b52a Branch: premain Author: Daniel Jeli?ski Date: 2026-01-22 21:48:28 +0000 URL: https://git.openjdk.org/leyden/commit/25d2b52ab97d116024872e567c1c1ffd814616d4 8328046: Need to keep leading zeros in TlsPremasterSecret of TLS1.3 DHKeyAgreement Reviewed-by: hchao ! src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java Changeset: 0f087a7f Branch: premain Author: SendaoYan Date: 2026-01-23 00:57:25 +0000 URL: https://git.openjdk.org/leyden/commit/0f087a7fef2d3979badefde02a1e85351379f18c 8376051: gc/stress/TestStressG1Uncommit.java fails assertLessThan: expected that xxx < xxx Reviewed-by: tschatzl, shade ! test/hotspot/jtreg/gc/stress/TestStressG1Uncommit.java Changeset: 7f2aa59f Branch: premain Author: Ioi Lam Date: 2026-01-23 06:24:47 +0000 URL: https://git.openjdk.org/leyden/commit/7f2aa59f8220f302a3f8662eeca3291dcf86d2ad 8375654: Exclude all array classes from dynamic CDS archive Reviewed-by: kvn, vlivanov ! src/hotspot/share/cds/archiveBuilder.cpp ! test/hotspot/jtreg/ProblemList-AotJdk.txt + test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArraySuperTest.java Changeset: 39f0e6d6 Branch: premain Author: Julian Waters Date: 2026-01-23 07:07:51 +0000 URL: https://git.openjdk.org/leyden/commit/39f0e6d6f91bf7e75862851ca0e00fc62780f938 8375241: Simplify --with-native-debug-symbols-level option implementation Reviewed-by: erikj, shade ! make/autoconf/flags-cflags.m4 Changeset: 315bf07b Branch: premain Author: Jan Lahoda Date: 2026-01-23 07:40:52 +0000 URL: https://git.openjdk.org/leyden/commit/315bf07b23ad6c5f86fc8fe976abd9e9a8548404 8375119: SwitchBoostraps.enumSwitch does not throw an NPE when lookup is null in some cases Reviewed-by: liach ! src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java ! test/jdk/java/lang/runtime/SwitchBootstrapsTest.java Changeset: ca37dba4 Branch: premain Author: Volkan Yazici Date: 2026-01-23 08:27:27 +0000 URL: https://git.openjdk.org/leyden/commit/ca37dba4d40bf3f71c5489829c893346faec1c56 8376089: Increase QUIC idle timeout in H3FixedThreadPoolTest to collect more diagnostic Reviewed-by: dfuchs, jpai ! test/jdk/java/net/httpclient/http3/H3FixedThreadPoolTest.java Changeset: fa20391e Branch: premain Author: Thomas Schatzl Date: 2026-01-23 08:31:31 +0000 URL: https://git.openjdk.org/leyden/commit/fa20391e73102a5d6a5b0a760d95a4225c673e04 8375966: G1: Convert G1UpdateRegionLivenessAndSelectForRebuildTask to use Atomic Reviewed-by: kbarrett, shade ! src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.hpp Changeset: 6f6966b2 Branch: premain Author: Guanqiang Han Committer: Dean Long Date: 2026-01-23 11:37:30 +0000 URL: https://git.openjdk.org/leyden/commit/6f6966b28b2c5a18b001be49f5db429c667d7a8f 8374862: assert(false) failed: Attempting to acquire lock MDOExtraData_lock/nosafepoint-1 out of order with lock tty_lock/tty -- possible deadlock (running with -XX:+Verbose -XX:+WizardMode -XX:+PrintDeoptimizationDetails) Reviewed-by: dholmes, dlong ! src/hotspot/share/interpreter/bytecodeTracer.cpp ! src/hotspot/share/interpreter/bytecodeTracer.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/runtime/vframeArray.cpp + test/hotspot/jtreg/compiler/uncommontrap/TestDeoptDetailsLockRank.java Changeset: 3fb118a2 Branch: premain Author: Severin Gehwolf Date: 2026-01-23 16:55:38 +0000 URL: https://git.openjdk.org/leyden/commit/3fb118a29ed68f2fbb64de45468b0f014fa01890 8375692: Hotspot container tests assert with non-ascii vendor name Reviewed-by: naoto, dholmes, syan ! test/hotspot/jtreg/containers/docker/TestJcmd.java ! test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java ! test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java Changeset: 40f7a18b Branch: premain Author: Chen Liang Date: 2026-01-23 17:32:53 +0000 URL: https://git.openjdk.org/leyden/commit/40f7a18b2dbf120a95432174664fa897331e8973 8373935: Migrate java/lang/invoke tests away from TestNG Reviewed-by: jvernee, alanb ! test/jdk/java/lang/invoke/8147078/Test8147078.java ! test/jdk/java/lang/invoke/8177146/TestMethodHandleBind.java ! test/jdk/java/lang/invoke/AccessControlTest.java ! test/jdk/java/lang/invoke/ArrayConstructorTest.java ! test/jdk/java/lang/invoke/ArrayLengthTest.java ! test/jdk/java/lang/invoke/CallerSensitiveMethodHandle.java ! test/jdk/java/lang/invoke/ClassSpecializerTest.java ! test/jdk/java/lang/invoke/CompileThresholdBootstrapTest.java ! test/jdk/java/lang/invoke/ConstantIdentityMHTest.java ! test/jdk/java/lang/invoke/DefineClassTest.java ! test/jdk/java/lang/invoke/DropArgumentsTest.java ! test/jdk/java/lang/invoke/DropLookupModeTest.java ! test/jdk/java/lang/invoke/FilterArgumentsTest.java ! test/jdk/java/lang/invoke/FindAccessTest.java ! test/jdk/java/lang/invoke/FoldTest.java ! test/jdk/java/lang/invoke/InvokeGenericTest.java ! test/jdk/java/lang/invoke/InvokeMethodHandleWithBadArgument.java ! test/jdk/java/lang/invoke/InvokeWithArgumentsTest.java ! test/jdk/java/lang/invoke/JavaDocExamplesTest.java ! test/jdk/java/lang/invoke/JavaUtilConcurrentLookupTest.java ! test/jdk/java/lang/invoke/LoopCombinatorTest.java ! test/jdk/java/lang/invoke/MethodHandleInvokeUOE.java ! test/jdk/java/lang/invoke/MethodHandleProxies/Driver.java ! test/jdk/java/lang/invoke/MethodHandleProxies/Unnamed.java ! test/jdk/java/lang/invoke/MethodHandleProxies/m1/module-info.java ! test/jdk/java/lang/invoke/MethodHandleProxies/m1/p1/Main.java ! test/jdk/java/lang/invoke/MethodHandles/TestDropReturn.java ! test/jdk/java/lang/invoke/MethodHandles/TestTableSwitch.java ! test/jdk/java/lang/invoke/MethodHandles/classData/ClassDataTest.java ! test/jdk/java/lang/invoke/MethodHandles/ensureInitialized/Main.java ! test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/Driver.java ! test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/module-info.java ! test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java ! test/jdk/java/lang/invoke/MethodHandlesCollectArgsTest.java ! test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java ! test/jdk/java/lang/invoke/MethodTypeTest.java ! test/jdk/java/lang/invoke/PermuteArgsReturnVoidTest.java ! test/jdk/java/lang/invoke/PermuteArgsTest.java ! test/jdk/java/lang/invoke/SpreadCollectTest.java ! test/jdk/java/lang/invoke/TestVHInvokerCaching.java ! test/jdk/java/lang/invoke/ThrowExceptionsTest.java ! test/jdk/java/lang/invoke/TryFinallyTest.java ! test/jdk/java/lang/invoke/VarArgsTest.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleMethodReferenceTest.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessModeMethodNames.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessBoolean.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessChar.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessDouble.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessInt.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessLong.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessShort.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessString.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java ! test/jdk/java/lang/invoke/VarHandles/VarHandleTestReflection.java ! test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template ! test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template ! test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template ! test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodType.java.template ! test/jdk/java/lang/invoke/VarHandles/accessibility/TestFieldLookupAccessibility.java ! test/jdk/java/lang/invoke/WrongMethodTypeTest.java ! test/jdk/java/lang/invoke/accessClassAndFindClass/TestAccessClass.java ! test/jdk/java/lang/invoke/accessClassAndFindClass/TestFindClass.java ! test/jdk/java/lang/invoke/accessClassAndFindClass/TestLookup.java ! test/jdk/java/lang/invoke/callerSensitive/CallerSensitiveAccess.java ! test/jdk/java/lang/invoke/condy/BootstrapMethodJumboArgsTest.java ! test/jdk/java/lang/invoke/condy/CondyBSMException.java ! test/jdk/java/lang/invoke/condy/CondyBSMInvocation.java ! test/jdk/java/lang/invoke/condy/CondyBSMValidationTest.java ! test/jdk/java/lang/invoke/condy/CondyInterfaceWithOverpassMethods.java ! test/jdk/java/lang/invoke/condy/CondyNameValidationTest.java ! test/jdk/java/lang/invoke/condy/CondyNestedTest.java ! test/jdk/java/lang/invoke/condy/CondyRepeatFailedResolution.java ! test/jdk/java/lang/invoke/condy/CondyReturnPrimitiveTest.java ! test/jdk/java/lang/invoke/condy/CondyStaticArgumentsTest.java ! test/jdk/java/lang/invoke/condy/CondyTypeValidationTest.java ! test/jdk/java/lang/invoke/condy/CondyWithGarbageTest.java ! test/jdk/java/lang/invoke/condy/CondyWrongType.java ! test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/BasicTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/HiddenNestmateTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/LambdaNestedInnerTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/PreviewHiddenClass.java ! test/jdk/java/lang/invoke/defineHiddenClass/StaticInvocableTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/TypeDescriptorTest.java ! test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java ! test/jdk/java/lang/invoke/findSpecial/FindSpecialTest.java ! test/jdk/java/lang/invoke/lambda/LambdaFileEncodingSerialization.java ! test/jdk/java/lang/invoke/lambda/LambdaHiddenCaller.java ! test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java ! test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodTest.java ! test/jdk/java/lang/invoke/lambda/superProtectedMethod/InheritedProtectedMethod.java ! test/jdk/java/lang/invoke/lambda/superProtectedMethod/ProtectedMethodInOtherPackage.java ! test/jdk/java/lang/invoke/lookup/ChainedLookupTest.java ! test/jdk/java/lang/invoke/lookup/LookupClassTest.java ! test/jdk/java/lang/invoke/lookup/SpecialStatic.java ! test/jdk/java/lang/invoke/modules/Driver.java ! test/jdk/java/lang/invoke/modules/Driver1.java ! test/jdk/java/lang/invoke/modules/m1/module-info.java ! test/jdk/java/lang/invoke/modules/m1/p1/Main.java ! test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java ! test/jdk/java/lang/invoke/modules/m3/module-info.java Changeset: 2c3ad0f4 Branch: premain Author: Cesar Soares Lucas Date: 2026-01-23 17:56:04 +0000 URL: https://git.openjdk.org/leyden/commit/2c3ad0f425c75332412a5e8e5733dd0d073a09c8 8373021: aarch64: MacroAssembler::arrays_equals reads out of bounds Reviewed-by: rkennke, aph ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: e08fb3a9 Branch: premain Author: Phil Race Date: 2026-01-23 18:19:23 +0000 URL: https://git.openjdk.org/leyden/commit/e08fb3a914ac348dc691ae3fc46c6bdbc34faf46 8375221: Update code to get PrinterResolution from CUPS/IPP print service Reviewed-by: serb, psadhukhan ! src/java.desktop/unix/classes/sun/print/AttributeClass.java ! src/java.desktop/unix/classes/sun/print/IPPPrintService.java ! src/java.desktop/unix/native/common/awt/CUPSfuncs.c ! test/jdk/javax/print/PrintablePrintDPI.java Changeset: e88edd0b Branch: premain Author: Phil Race Date: 2026-01-23 18:53:48 +0000 URL: https://git.openjdk.org/leyden/commit/e88edd0bc63e0a39f42a6a9e1ced61a79f84ad73 8375338: sun/awt/image/ImageRepresentation/LUTCompareTest.java fails with -Xcheck:jni Reviewed-by: aivanov, serb, krk ! src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c ! test/jdk/sun/awt/image/ImageRepresentation/LUTCompareTest.java Changeset: e617ccd5 Branch: premain Author: Phil Race Date: 2026-01-23 19:12:54 +0000 URL: https://git.openjdk.org/leyden/commit/e617ccd529657440eaf20ed68794fea6f6c07fee 8375480: Remove usage of AppContext from javax/swing/text Reviewed-by: serb, psadhukhan ! src/java.desktop/share/classes/javax/swing/text/JTextComponent.java ! src/java.desktop/share/classes/javax/swing/text/LayoutQueue.java ! src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java ! src/java.desktop/share/classes/javax/swing/text/html/parser/DTD.java ! src/java.desktop/share/classes/javax/swing/text/html/parser/Element.java ! src/java.desktop/share/classes/javax/swing/text/html/parser/ParserDelegator.java - test/jdk/javax/swing/Security/6938813/bug6938813.java - test/jdk/javax/swing/text/LayoutQueue/Test6588003.java - test/jdk/javax/swing/text/html/parser/Test8017492.java Changeset: e5512404 Branch: premain Author: Valerie Peng Date: 2026-01-23 19:46:40 +0000 URL: https://git.openjdk.org/leyden/commit/e55124041e0181ca14ed95dc5f94d404b7900029 8375549: ConcurrentModificationException if jdk.crypto.disabledAlgorithms has multiple entries with known oid Reviewed-by: mullan, coffeys ! src/java.base/share/classes/sun/security/util/CryptoAlgorithmConstraints.java + test/jdk/javax/crypto/Cipher/TestDisabledWithOids.java Changeset: 44b74e16 Branch: premain Author: Phil Race Date: 2026-01-23 20:20:22 +0000 URL: https://git.openjdk.org/leyden/commit/44b74e165e2d3ea79397d6f1ddbef94f51ac56c7 8375351: Remove usage of AppContext from print implementation Reviewed-by: serb, tr ! src/java.desktop/share/classes/javax/print/PrintServiceLookup.java ! src/java.desktop/share/classes/javax/print/StreamPrintServiceFactory.java ! test/jdk/javax/print/PrintServiceLookup/FlushCustomClassLoader.java Changeset: a3b1aa9f Branch: premain Author: Yasumasa Suenaga Date: 2026-01-24 08:43:37 +0000 URL: https://git.openjdk.org/leyden/commit/a3b1aa9f7dce30a1c5967cb15a5d523e3d7ea72d 8374482: SA does not handle signal handler frame in mixed jstack Reviewed-by: cjplummer, kevinw ! src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java + test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java Changeset: a40dbce4 Branch: premain Author: Lei Zhu Committer: Chen Liang Date: 2026-01-24 14:19:40 +0000 URL: https://git.openjdk.org/leyden/commit/a40dbce495db9959624b72ff619e2e7ae7f7fb8b 8374293: Jshell throws an error and crashes when using keyword Public Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java ! test/langtools/jdk/jshell/SnippetHighlightTest.java Changeset: 93255602 Branch: premain Author: SendaoYan Date: 2026-01-25 01:08:31 +0000 URL: https://git.openjdk.org/leyden/commit/932556026d6d49fe6f74d4ec4afcb72448611766 8375683: Add notes for sctp tests Reviewed-by: erikj, vyazici ! doc/testing.html ! doc/testing.md Changeset: 38b66b12 Branch: premain Author: Xiaohong Gong Date: 2026-01-26 01:50:57 +0000 URL: https://git.openjdk.org/leyden/commit/38b66b12581a3745a37589e32aa0fc880d27b4d4 8374043: C2: assert(_base >= VectorMask && _base <= VectorZ) failed: Not a Vector Reviewed-by: qamai, vlivanov ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp Changeset: 90b54692 Branch: premain Author: Arno Zeller Committer: Jaikiran Pai Date: 2026-01-26 08:34:56 +0000 URL: https://git.openjdk.org/leyden/commit/90b546925397ff7cdd1591291e1b87d0bac5604a 8375999: com/sun/jndi/ldap/LdapPoolTimeoutTest.java fails sporadically on Windows Reviewed-by: jpai, mbaesken ! test/jdk/com/sun/jndi/ldap/LdapPoolTimeoutTest.java Changeset: 2af271e5 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:12:39 +0000 URL: https://git.openjdk.org/leyden/commit/2af271e5e64260f05c01cb94bcf95f80fd69b4ff 8375436: G1: Convert G1CardSet classes to use Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.inline.hpp ! src/hotspot/share/gc/g1/g1CardSetMemory.cpp ! test/hotspot/gtest/gc/g1/test_g1CardSetContainers.cpp Changeset: e7cadd90 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:15:32 +0000 URL: https://git.openjdk.org/leyden/commit/e7cadd90b2872364443873aa4b4b4664bcf02f4d 8375981: G1: Convert G1RemSet helper classes to use Atomic Reviewed-by: shade, iwalulya ! src/hotspot/share/gc/g1/g1RemSet.cpp Changeset: 45970469 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:16:11 +0000 URL: https://git.openjdk.org/leyden/commit/4597046984dedfd28bd76bd00dfc4b13ccb38dd4 8375974: G1: Convert G1FullCollector to use Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullCollector.inline.hpp Changeset: a49986c6 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:16:41 +0000 URL: https://git.openjdk.org/leyden/commit/a49986c62f4bcc4656f4ce0c7804a96875e9b6c6 8375964: G1: Convert G1BuildCandidateRegionsTask to use Atomic Reviewed-by: shade, iwalulya ! src/hotspot/share/gc/g1/g1CollectionSetChooser.cpp Changeset: c3360ff5 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:17:01 +0000 URL: https://git.openjdk.org/leyden/commit/c3360ff51155bdd62b758c163351f57f4b410606 8375983: G1: Convert G1ConcurrentRefineStats to use Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineStats.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineStats.hpp + src/hotspot/share/gc/g1/g1ConcurrentRefineStats.inline.hpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineSweepTask.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineSweepTask.hpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineThread.cpp ! src/hotspot/share/gc/g1/g1ConcurrentRefineThread.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1YoungGCPreEvacuateTasks.cpp Changeset: 0bc2dc34 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:17:22 +0000 URL: https://git.openjdk.org/leyden/commit/0bc2dc3401f01b4727077a9844194d1654c3138c 8375971: G1: Convert G1EvacStats to use Atomic Reviewed-by: iwalulya, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp ! src/hotspot/share/gc/g1/g1EvacStats.cpp ! src/hotspot/share/gc/g1/g1EvacStats.hpp ! src/hotspot/share/gc/g1/g1EvacStats.inline.hpp Changeset: 90d065e6 Branch: premain Author: Jan Lahoda Date: 2026-01-26 09:42:49 +0000 URL: https://git.openjdk.org/leyden/commit/90d065e677535e3f7caa7507f1526062b50ecc67 8375712: Convert java/lang/runtime tests to use JUnit Reviewed-by: liach ! test/jdk/java/lang/runtime/ExactnessConversionsSupportTest.java ! test/jdk/java/lang/runtime/ObjectMethodsTest.java ! test/jdk/java/lang/runtime/SwitchBootstrapsTest.java Changeset: 42c0126f Branch: premain Author: Thomas Schatzl Date: 2026-01-26 09:47:52 +0000 URL: https://git.openjdk.org/leyden/commit/42c0126fb2067b5f792e99af9ad131bab7502c08 8376119: G1: Convert volatiles in G1CMMarkStack to Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp Changeset: 48d63687 Branch: premain Author: Thomas Schatzl Date: 2026-01-26 10:15:57 +0000 URL: https://git.openjdk.org/leyden/commit/48d636872f1bd239d12823bf2f9d4aa32384f5e5 8376293: Bad copyright header in g1ConcurrentRefineStats.inline.hpp breaks the build Reviewed-by: mhaessig, chagedorn ! src/hotspot/share/gc/g1/g1ConcurrentRefineStats.inline.hpp Changeset: 30675faa Branch: premain Author: Quan Anh Mai Date: 2026-01-26 11:18:21 +0000 URL: https://git.openjdk.org/leyden/commit/30675faa67d1bbb4acc729a841493bb8311416af 8375653: C2: CmpUNode::sub is not monotonic Reviewed-by: chagedorn, mchevalier ! src/hotspot/share/opto/subnode.cpp + test/hotspot/jtreg/compiler/c2/gvn/CmpUNodeValueTests.java + test/hotspot/jtreg/compiler/ccp/TestCmpUMonotonicity.java Changeset: 0f1b96a5 Branch: premain Author: Matthias Baesken Date: 2026-01-26 11:38:05 +0000 URL: https://git.openjdk.org/leyden/commit/0f1b96a50a3a79fd699bf34121df8451ffa37b8f 8375684: Avoid leak in KeystoreImpl.m when using CFArrayCreateMutable Reviewed-by: clanger ! src/java.base/macosx/native/libosxsecurity/KeystoreImpl.m Changeset: de5c7a9e Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 12:16:05 +0000 URL: https://git.openjdk.org/leyden/commit/de5c7a9e8607b2a6219d98f9b81ddce4ca92baef 8374676: ZGC: Convert zAbort to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zAbort.cpp ! src/hotspot/share/gc/z/zAbort.hpp ! src/hotspot/share/gc/z/zAbort.inline.hpp Changeset: 8a9127fc Branch: premain Author: Daniel Fuchs Date: 2026-01-26 12:57:23 +0000 URL: https://git.openjdk.org/leyden/commit/8a9127fc2d1f8c1cba952744e1a5a7533bb03537 8376118: java/net/httpclient/StreamingBody.java fails intermittently on Windows Reviewed-by: vyazici, jpai ! test/jdk/java/net/httpclient/StreamingBody.java Changeset: 37cb2282 Branch: premain Author: Hannes Walln?fer Date: 2026-01-26 13:28:04 +0000 URL: https://git.openjdk.org/leyden/commit/37cb22826a8f644c699228b8a68852b59933ead5 8373679: Link color accessibility issue in dark theme Reviewed-by: liach, nbenalla ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/stylesheet.css ! test/langtools/jdk/javadoc/doclet/checkStylesheetClasses/CheckStylesheetClasses.java Changeset: 319e21e9 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 13:44:06 +0000 URL: https://git.openjdk.org/leyden/commit/319e21e9b48b4a9646c803e23d16f0b7df827d3f 8374677: ZGC: Convert zArray to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zArray.hpp ! src/hotspot/share/gc/z/zArray.inline.hpp Changeset: 512f95cf Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 13:53:12 +0000 URL: https://git.openjdk.org/leyden/commit/512f95cf2632167149e2118853ab4d6d636fe0a3 8374678: ZGC: Convert zForwarding to use Atomic Reviewed-by: stefank, eosterlund ! src/hotspot/share/gc/z/vmStructs_z.hpp ! src/hotspot/share/gc/z/zForwarding.cpp ! src/hotspot/share/gc/z/zForwarding.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: fef85ff9 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 14:13:48 +0000 URL: https://git.openjdk.org/leyden/commit/fef85ff932055cd5385633f3b283e6201cdcaa68 8374679: ZGC: Convert zForwardingAllocator to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zForwardingAllocator.cpp ! src/hotspot/share/gc/z/zForwardingAllocator.hpp ! src/hotspot/share/gc/z/zForwardingAllocator.inline.hpp Changeset: b59f49a1 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 14:28:39 +0000 URL: https://git.openjdk.org/leyden/commit/b59f49a1c3e370f794291a1f948e67d2651ece11 8374680: ZGC: Convert zGeneration to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zGeneration.cpp ! src/hotspot/share/gc/z/zGeneration.hpp Changeset: 61b722d5 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 14:45:24 +0000 URL: https://git.openjdk.org/leyden/commit/61b722d59a799ba943476a03be3a1c7649aa0c27 8374681: ZGC: Convert zJNICritical to use Atomic Reviewed-by: tschatzl, stefank ! src/hotspot/share/gc/z/zJNICritical.cpp ! src/hotspot/share/gc/z/zJNICritical.hpp Changeset: 99b4e05d Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 15:05:24 +0000 URL: https://git.openjdk.org/leyden/commit/99b4e05d502b68844699faa025e0d5bd51135d8f 8374682: ZGC: Convert zLiveMap to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zLiveMap.cpp ! src/hotspot/share/gc/z/zLiveMap.hpp ! src/hotspot/share/gc/z/zLiveMap.inline.hpp Changeset: 66485675 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 15:14:42 +0000 URL: https://git.openjdk.org/leyden/commit/664856757405e149bb98474872938e3a62b62302 8374683: ZGC: Convert zLock to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zLock.hpp ! src/hotspot/share/gc/z/zLock.inline.hpp Changeset: f4607ed0 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-26 15:35:59 +0000 URL: https://git.openjdk.org/leyden/commit/f4607ed0a7ea2504c1d72dd3dab0b21e583fa0e7 8374684: ZGC: Convert zMark to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp Changeset: bbae38e5 Branch: premain Author: Christian Hagedorn Date: 2026-01-26 16:23:30 +0000 URL: https://git.openjdk.org/leyden/commit/bbae38e510efd8877daca5118f45893bb87f6eaa 8375272: [IR Framework] Miscellaneous clean-ups Reviewed-by: mchevalier, dfenacci, thartmann ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! test/hotspot/jtreg/compiler/lib/ir_framework/CompilePhase.java ! test/hotspot/jtreg/compiler/lib/ir_framework/TestFramework.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/TestVMProcess.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/irmethod/IRMethod.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/irmethod/NotCompilableIRMethod.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/irmethod/NotCompilableIRMethodMatchResult.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/parser/ApplicableIRRulesParser.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/parser/IRMethodBuilder.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/parser/TestMethod.java + test/hotspot/jtreg/compiler/lib/ir_framework/driver/network/testvm/java/IRRuleIds.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/TestVM.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestCheckedTests.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestSetupTests.java Changeset: 67beb9cd Branch: premain Author: Henry Jen Date: 2026-01-26 16:38:12 +0000 URL: https://git.openjdk.org/leyden/commit/67beb9cd812db2af49c62c95d69f2f27d0a20af8 8373924: Remove unreferenced ImageDecompressor::image_decompressor_close Reviewed-by: alanb ! src/java.base/share/native/libjimage/imageDecompressor.cpp ! src/java.base/share/native/libjimage/imageDecompressor.hpp Changeset: b42861a2 Branch: premain Author: Henry Jen Date: 2026-01-26 17:19:44 +0000 URL: https://git.openjdk.org/leyden/commit/b42861a2aa5bf5fde348cf17c5e40134148de1b4 8373699: JLink: ModuleReader should be closed in JlinkTask.getReleaseInfo(mref) Reviewed-by: alanb ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java Changeset: 3220c4cb Branch: premain Author: Chen Liang Date: 2026-01-26 18:32:15 +0000 URL: https://git.openjdk.org/leyden/commit/3220c4cb431a2c4eb8bb2d60f0d5046e40af69bd 8372696: Allow boot classes to explicitly opt-in for final field trusting Reviewed-by: jvernee, jrose, alanb ! src/hotspot/share/ci/ciField.cpp ! src/hotspot/share/ci/ciInstanceKlass.cpp ! src/hotspot/share/ci/ciInstanceKlass.hpp ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/instanceKlassFlags.hpp ! src/java.base/share/classes/java/util/Optional.java ! src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java ! src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java ! src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java + src/java.base/share/classes/jdk/internal/vm/annotation/TrustFinalFields.java + test/hotspot/jtreg/compiler/corelibs/OptionalFold.java Changeset: c69275dd Branch: premain Author: Phil Race Date: 2026-01-26 18:53:39 +0000 URL: https://git.openjdk.org/leyden/commit/c69275ddfe8c1769ae82b4ba64b2d6d80bbd8683 8376232: Remove AppContext from Swing synth related classes Reviewed-by: serb, azvegint ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/Effect.java ! src/java.desktop/share/classes/javax/swing/plaf/synth/ImagePainter.java ! src/java.desktop/share/classes/javax/swing/plaf/synth/Region.java ! src/java.desktop/share/classes/javax/swing/plaf/synth/SynthButtonUI.java ! src/java.desktop/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java - test/jdk/javax/swing/plaf/synth/7143614/bug7143614.java - test/jdk/javax/swing/plaf/synth/Test6660049.java Changeset: 82bd3831 Branch: premain Author: Hannes Greule Date: 2026-01-26 20:13:03 +0000 URL: https://git.openjdk.org/leyden/commit/82bd3831b0f1e268ae76b31a803c86094add8e92 8374538: Wrong specification of MethodHandles.constant(...) Reviewed-by: liach, jvernee ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java Changeset: 12570be6 Branch: premain Author: Damon Nguyen Date: 2026-01-26 21:13:01 +0000 URL: https://git.openjdk.org/leyden/commit/12570be64ae2114587e6de4ef79f79be961023b9 8376151: Test javax/swing/JFileChooser/4966171/bug4966171.java is failing with OOME Reviewed-by: prr, azvegint, aivanov ! test/jdk/javax/swing/JFileChooser/4966171/bug4966171.java Changeset: fdcc122a Branch: premain Author: Chen Liang Date: 2026-01-27 00:15:13 +0000 URL: https://git.openjdk.org/leyden/commit/fdcc122a9db2f6fdeb014e9e731cd3992bb3d0f3 8376422: Run compiler/corelibs/OptionalFold.java with tiered compilation Reviewed-by: dholmes ! test/hotspot/jtreg/compiler/corelibs/OptionalFold.java Changeset: cba7d88c Branch: premain Author: Ioi Lam Date: 2026-01-27 03:16:43 +0000 URL: https://git.openjdk.org/leyden/commit/cba7d88ca427984ebb27a1634aab10a62c9eede1 8374549: Extend MetaspaceClosure to cover non-MetaspaceObj types Reviewed-by: kvn, asmehra + src/hotspot/share/cds/aotGrowableArray.cpp + src/hotspot/share/cds/aotGrowableArray.hpp + src/hotspot/share/cds/aotGrowableArray.inline.hpp ! src/hotspot/share/cds/aotMapLogger.cpp ! src/hotspot/share/cds/aotMapLogger.hpp ! src/hotspot/share/cds/aotMetaspace.cpp ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/cppVtables.cpp ! src/hotspot/share/cds/cppVtables.hpp ! src/hotspot/share/cds/dumpAllocStats.hpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/classfile/classLoaderDataShared.cpp ! src/hotspot/share/classfile/classLoaderDataShared.hpp ! src/hotspot/share/classfile/moduleEntry.cpp ! src/hotspot/share/classfile/moduleEntry.hpp ! src/hotspot/share/classfile/modules.cpp ! src/hotspot/share/classfile/modules.hpp ! src/hotspot/share/classfile/packageEntry.cpp ! src/hotspot/share/classfile/packageEntry.hpp ! src/hotspot/share/memory/allocation.cpp ! src/hotspot/share/memory/allocation.hpp ! src/hotspot/share/memory/metaspaceClosure.cpp ! src/hotspot/share/memory/metaspaceClosure.hpp + src/hotspot/share/memory/metaspaceClosureType.hpp ! src/hotspot/share/oops/array.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/hotspot/share/utilities/growableArray.hpp ! test/hotspot/gtest/utilities/test_metaspaceClosure.cpp Changeset: 5c05d6f2 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-27 08:26:00 +0000 URL: https://git.openjdk.org/leyden/commit/5c05d6f230e34cf409529d87b71f768a384ae4b4 8374686: ZGC: Convert zMarkTerminate to use Atomic Reviewed-by: stefank, kbarrett ! src/hotspot/share/gc/z/zMarkTerminate.hpp ! src/hotspot/share/gc/z/zMarkTerminate.inline.hpp Changeset: bd92c68e Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-27 08:36:41 +0000 URL: https://git.openjdk.org/leyden/commit/bd92c68ef0aa7615c62626eb6baf4496b0137cad 8374687: ZGC: Convert zNMethodTableIteration to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zNMethodTableIteration.cpp ! src/hotspot/share/gc/z/zNMethodTableIteration.hpp Changeset: 6fda4417 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-27 08:42:44 +0000 URL: https://git.openjdk.org/leyden/commit/6fda44172e955d4e1d181598a97902ed5b16c57b 8374690: ZGC: Convert zRelocate to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRelocate.hpp Changeset: ee2deade Branch: premain Author: Varada M Date: 2026-01-27 10:01:02 +0000 URL: https://git.openjdk.org/leyden/commit/ee2deaded82e5fbd94aff7dd22cf2d5c57caa94e 8371187: [BigEndian Platforms] Vector lane reversal error Reviewed-by: mdoerr, amitkumar ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java Changeset: e0445c09 Branch: premain Author: Eirik Bj?rsn?s Date: 2026-01-27 10:25:58 +0000 URL: https://git.openjdk.org/leyden/commit/e0445c09f7a967843a56634f72c7545446791e15 8376294: ZipFile.Source.Key should not hold on to its BasicFileAttributes instance Reviewed-by: jpai ! src/java.base/share/classes/java/util/zip/ZipFile.java Changeset: b1aea552 Branch: premain Author: Axel Boldt-Christmas Date: 2026-01-27 10:26:29 +0000 URL: https://git.openjdk.org/leyden/commit/b1aea5520592e835e33762e349615fe616576103 8374695: ZGC: Convert zTLABUsage to use Atomic Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zTLABUsage.cpp ! src/hotspot/share/gc/z/zTLABUsage.hpp Changeset: 4ff5f3a8 Branch: premain Author: Eirik Bj?rsn?s Date: 2026-01-27 10:28:54 +0000 URL: https://git.openjdk.org/leyden/commit/4ff5f3a8c0910e9ed9d77586bd692c469bdf3460 8376271: ZipFile comment confusingly refers to "native" ZIP file implementation Reviewed-by: jpai ! src/java.base/share/classes/java/util/zip/ZipFile.java Changeset: 5990165d Branch: premain Author: Afshin Zafari Date: 2026-01-27 11:55:25 +0000 URL: https://git.openjdk.org/leyden/commit/5990165d8257f39595b4c38f4e3e8d6ebb3393e8 8358957: [ubsan]: The assert in layout_helper_boolean_diffbit() in klass.hpp needs UB to fail Reviewed-by: dlong, jsjolen ! src/hotspot/share/oops/klass.hpp Changeset: 528bbe79 Branch: premain Author: Casper Norrbin Date: 2026-01-27 12:33:43 +0000 URL: https://git.openjdk.org/leyden/commit/528bbe7919785c50dda583277f4146b25eb4d2a4 8376302: os::Machine::used_memory reports container used memory when running containerized Reviewed-by: eosterlund, sgehwolf ! src/hotspot/share/runtime/os.cpp Changeset: 40d1b642 Branch: premain Author: Thomas Schatzl Date: 2026-01-27 12:51:20 +0000 URL: https://git.openjdk.org/leyden/commit/40d1b642a43fbc5c6ad21417f2f9d62d99db0201 8376191: Remove AtomicAccess include from files that do not use it in gc/shared Reviewed-by: iwalulya, stefank ! src/hotspot/share/gc/shared/oopStorageSetParState.inline.hpp ! src/hotspot/share/gc/shared/partialArrayState.cpp ! src/hotspot/share/gc/shared/partialArrayTaskStepper.inline.hpp ! src/hotspot/share/gc/shared/taskqueue.cpp ! src/hotspot/share/gc/shared/taskqueue.inline.hpp ! src/hotspot/share/gc/shared/workerThread.cpp Changeset: 992a8ef4 Branch: premain Author: Daniel Gredler Date: 2026-01-27 13:20:26 +0000 URL: https://git.openjdk.org/leyden/commit/992a8ef46bc0a06c70fd5f4f307dbd20e402ed33 8376226: CharsetEncoder.canEncode(CharSequence) is much slower than necessary Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/nio/charset/Charset-X-Coder.java.template ! src/java.base/share/classes/sun/nio/cs/DoubleByte.java ! src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java ! src/java.base/share/classes/sun/nio/cs/SingleByte.java ! src/java.base/share/classes/sun/nio/cs/US_ASCII.java + test/micro/org/openjdk/bench/java/nio/CharsetCanEncode.java Changeset: 479ac8b2 Branch: premain Author: Matthias Baesken Date: 2026-01-27 13:30:14 +0000 URL: https://git.openjdk.org/leyden/commit/479ac8b2fdfbb64d26b34ff72abd61a1ce5f6c87 8376281: Remove USE_XLC_BUILTINS macro usage in AIX code Reviewed-by: mdoerr, clanger ! src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp ! src/hotspot/os_cpu/aix_ppc/prefetch_aix_ppc.inline.hpp Changeset: 64b0ae6b Branch: premain Author: Wang Haomin Committer: Erik Joelsson Date: 2026-01-27 14:21:44 +0000 URL: https://git.openjdk.org/leyden/commit/64b0ae6be8a7b70ed4cc08333447e9b73bdcbaca 8376276: Add javafx to allowed-list of CheckFiles Reviewed-by: erikj, kcr ! test/jdk/build/CheckFiles.java Changeset: bbb4b0d4 Branch: premain Author: Chen Liang Date: 2026-01-27 14:51:04 +0000 URL: https://git.openjdk.org/leyden/commit/bbb4b0d498900f929225233008bbdbafaae5d709 8376277: Migrate java/lang/reflect tests away from TestNG Reviewed-by: alanb ! test/jdk/java/lang/reflect/AccessibleObject/CanAccessTest.java ! test/jdk/java/lang/reflect/AccessibleObject/ModuleSetAccessibleTest.java ! test/jdk/java/lang/reflect/AccessibleObject/TrySetAccessibleTest.java ! test/jdk/java/lang/reflect/ChainedReflection.java ! test/jdk/java/lang/reflect/DefaultMethodMembers/FilterNotMostSpecific.java ! test/jdk/java/lang/reflect/DefaultStaticTest/DefaultStaticInvokeTest.java ! test/jdk/java/lang/reflect/DefaultStaticTest/DefaultStaticTestData.java ! test/jdk/java/lang/reflect/Field/NegativeTest.java ! test/jdk/java/lang/reflect/Generics/ThreadSafety.java ! test/jdk/java/lang/reflect/IllegalArgumentsTest.java ! test/jdk/java/lang/reflect/Method/MethodArityLimit.java ! test/jdk/java/lang/reflect/MethodHandleAccessorsTest.java ! test/jdk/java/lang/reflect/Proxy/DefaultMethods.java ! test/jdk/java/lang/reflect/Proxy/HiddenProxyInterface.java ! test/jdk/java/lang/reflect/Proxy/LazyInitializationTest.java ! test/jdk/java/lang/reflect/Proxy/ProxyClassAccessTest.java ! test/jdk/java/lang/reflect/Proxy/ProxyLayerTest.java ! test/jdk/java/lang/reflect/Proxy/ProxyTest.java ! test/jdk/java/lang/reflect/Proxy/SealedInterfaceTest.java ! test/jdk/java/lang/reflect/Proxy/TestVarArgs.java ! test/jdk/java/lang/reflect/Proxy/nonPublicProxy/DefaultMethodProxy.java ! test/jdk/java/lang/reflect/annotationSharing/AnnotationSharing.java ! test/jdk/java/lang/reflect/callerCache/CustomLoaderTest.java ! test/jdk/java/lang/reflect/callerCache/ReflectionCallerCacheTest.java ! test/jdk/java/lang/reflect/records/CheckEqualityIsBasedOnFields.java ! test/jdk/java/lang/reflect/records/IsRecordTest.java ! test/jdk/java/lang/reflect/records/RecordReflectionTest.java ! test/jdk/java/lang/reflect/sealed_classes/SealedClassesReflectionTest.java Changeset: a5d0b051 Branch: premain Author: Chen Liang Date: 2026-01-27 15:04:26 +0000 URL: https://git.openjdk.org/leyden/commit/a5d0b05136e34871366441a8c8e6bda5f20c617c 8376274: JSpec preview support and output enhancement Reviewed-by: hannesw ! make/jdk/src/classes/build/tools/taglet/JSpec.java ! src/java.base/share/classes/java/lang/runtime/ExactConversionsSupport.java Changeset: e8048c87 Branch: premain Author: Roger Riggs Date: 2026-01-27 16:07:45 +0000 URL: https://git.openjdk.org/leyden/commit/e8048c87bc9c152932ee59cb674bdb6670db2a56 8376509: [process] Problemlist Test java/lang/ProcessBuilder/PipelineLeaksFD.java Reviewed-by: jpai ! test/jdk/ProblemList.txt Changeset: eb6e74b1 Branch: premain Author: Nizar Benalla Date: 2026-01-27 17:14:40 +0000 URL: https://git.openjdk.org/leyden/commit/eb6e74b1fa794bf16f572d5dbce157d1cae4c505 8374176: Update --release 26 symbol information for JDK 26 build 32 Reviewed-by: liach, iris, darcy ! src/jdk.compiler/share/data/symbols/java.base-Q.sym.txt Changeset: fa1b1d67 Branch: premain Author: Chris Plummer Date: 2026-01-27 20:39:35 +0000 URL: https://git.openjdk.org/leyden/commit/fa1b1d677ac492dfdd3110b9303a4c2b009046c8 8375477: CoreUtils support for SA tests should attempt to locate and unzip core files when they have been zipped Reviewed-by: lmesnik, kevinw ! test/lib/jdk/test/lib/util/CoreUtils.java Changeset: 1161a640 Branch: premain Author: Prasanta Sadhukhan Date: 2026-01-28 06:58:50 +0000 URL: https://git.openjdk.org/leyden/commit/1161a640abe454b47de95ed73452a78535160deb 8373239: Test java/awt/print/PrinterJob/PageRanges.java fails with incorrect selection of printed pages Reviewed-by: prr, aivanov ! src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java ! test/jdk/java/awt/print/PrinterJob/PageRanges.java Changeset: 88c8a55a Branch: premain Author: Aleksey Shipilev Date: 2026-01-28 07:44:31 +0000 URL: https://git.openjdk.org/leyden/commit/88c8a55a4337a857ac17ffff068f730f67cf5763 8373266: Strengthen constant CardTable base accesses Reviewed-by: tschatzl, xpeng ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/arm/gc/shared/cardTableBarrierSetAssembler_arm.cpp ! src/hotspot/cpu/ppc/gc/shared/cardTableBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/riscv/macroAssembler_riscv.cpp ! src/hotspot/cpu/s390/gc/shared/cardTableBarrierSetAssembler_s390.cpp ! src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp ! src/hotspot/os_cpu/linux_arm/javaThread_linux_arm.cpp ! src/hotspot/share/ci/ciUtilities.cpp ! src/hotspot/share/ci/ciUtilities.hpp ! src/hotspot/share/compiler/disassembler.cpp ! src/hotspot/share/gc/shared/c1/cardTableBarrierSetC1.cpp ! src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.cpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp Changeset: b2cd3b0d Branch: premain Author: Roland Westrelin Date: 2026-01-28 08:00:11 +0000 URL: https://git.openjdk.org/leyden/commit/b2cd3b0d48bdabacfd421dee9b9f87a003e0e09d 8350330: C2: PhaseIdealLoop::add_parse_predicate() should mirror GraphKit::add_parse_predicate() Reviewed-by: chagedorn, qamai ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp + test/hotspot/jtreg/compiler/longcountedloops/TestLoopNestTooManyTraps.java Changeset: 4ae4ffd5 Branch: premain Author: Chad Rakoczy Committer: Aleksey Shipilev Date: 2026-01-28 08:08:36 +0000 URL: https://git.openjdk.org/leyden/commit/4ae4ffd5a3114aa2a3832818ee30dc38d9aa2b72 8374513: AArch64: Improve receiver type profiling reliability Reviewed-by: shade, aph ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Changeset: 6afc0d8f Branch: premain Author: Saranya Natarajan Date: 2026-01-28 09:38:20 +0000 URL: https://git.openjdk.org/leyden/commit/6afc0d8f39390d474ce8ba16533c30b4c7770388 8366861: Phase AFTER_LOOP_OPTS printed even though the method has no loops Reviewed-by: chagedorn, dfenacci ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp Changeset: 127bfc9b Branch: premain Author: Yasumasa Suenaga Date: 2026-01-28 11:11:07 +0000 URL: https://git.openjdk.org/leyden/commit/127bfc9b0dd122c78e702867a88e0847ec362e68 8374926: EnableX86ECoreOpts was not enabled on some hybrid CPU Reviewed-by: vpaprotski, dholmes ! src/hotspot/cpu/x86/vm_version_x86.cpp Changeset: 2a465cb0 Branch: premain Author: Paul H?bner Committer: Joel Sikstr?m Date: 2026-01-28 13:14:51 +0000 URL: https://git.openjdk.org/leyden/commit/2a465cb0eba6ffe397cf3ad8c1def06bf7a1e392 8371777: Clean up preferred address of G1's archive region Reviewed-by: stefank, jsikstro ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp Changeset: 8c86b1bb Branch: premain Author: Roger Calnan Committer: Weijun Wang Date: 2026-01-28 14:18:52 +0000 URL: https://git.openjdk.org/leyden/commit/8c86b1bb1054b565cf23156d89ee8925a4e32597 8375325: add anchors to the options in the security man pages Reviewed-by: weijun, hchao ! src/java.base/share/man/keytool.md ! src/java.security.jgss/windows/man/kinit.md ! src/java.security.jgss/windows/man/klist.md ! src/java.security.jgss/windows/man/ktab.md ! src/jdk.jartool/share/man/jarsigner.md Changeset: 8095e33e Branch: premain Author: Christian Stein Date: 2026-01-28 15:02:21 +0000 URL: https://git.openjdk.org/leyden/commit/8095e33ee88759cf2fbe61e2284d95f6b7fb9a3a 8375433: jar should validate automatic module names Reviewed-by: jvernee ! src/jdk.jartool/share/classes/sun/tools/jar/Validator.java ! src/jdk.jartool/share/classes/sun/tools/jar/resources/jar.properties ! test/jdk/tools/jar/ValidatorTest.java Changeset: 0e2e66be Branch: premain Author: Matthias Baesken Date: 2026-01-28 16:30:34 +0000 URL: https://git.openjdk.org/leyden/commit/0e2e66be2423335002a53d887df35d2348a3ec9f 8376402: Dependencies::print_statistics() and AbstractClassHierarchyWalker::print_statistics() are not called from PRODUCT code Reviewed-by: azafari, chagedorn ! src/hotspot/share/code/dependencies.cpp ! src/hotspot/share/code/dependencies.hpp Changeset: 50d872ad Branch: premain Author: Brian Burkhalter Date: 2026-01-28 16:30:56 +0000 URL: https://git.openjdk.org/leyden/commit/50d872ad7ac5fa5a3406517eb53d8f61f81706df 8376419: (fs) Minor improvement of java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java Reviewed-by: jpai ! test/jdk/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java Changeset: 89a18c01 Branch: premain Author: Phil Race Date: 2026-01-28 17:58:15 +0000 URL: https://git.openjdk.org/leyden/commit/89a18c0108e10dc4ca4a4fa9e8718d49036f8871 8376432: Remove AppContext from sun/swing/DefaultLookup.java Reviewed-by: psadhukhan, azvegint, aivanov ! src/java.desktop/share/classes/sun/swing/DefaultLookup.java Changeset: 7efa3168 Branch: premain Author: Phil Race Date: 2026-01-28 18:01:10 +0000 URL: https://git.openjdk.org/leyden/commit/7efa3168b706c1d061c4ee65574427ef1f50fc7b 8376434: Remove AppContext from awt ImageFetcher implementation Reviewed-by: azvegint, aivanov ! src/java.desktop/share/classes/sun/awt/image/ImageFetcher.java Changeset: 0722ae92 Branch: premain Author: Phil Race Date: 2026-01-28 19:53:41 +0000 URL: https://git.openjdk.org/leyden/commit/0722ae926ff1327c47a922b1ca0b493a0d06526e 8376433: Remove AppContext from Swing Windows L&F implementation Reviewed-by: serb, aivanov ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/AnimationController.java ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsButtonUI.java ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsCheckBoxUI.java ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLabelUI.java ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI.java ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsToggleButtonUI.java Changeset: 09ed8e66 Branch: premain Author: Xiaolong Peng Date: 2026-01-28 21:28:16 +0000 URL: https://git.openjdk.org/leyden/commit/09ed8e66dc7a788763a2c7c24f54e93ec8eafedb 8376531: Genshen: Convert ShenandoahOldGeneration to use Atomic Reviewed-by: wkemper, shade ! src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp ! src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp Changeset: 2529e2fe Branch: premain Author: Prasanta Sadhukhan Date: 2026-01-29 02:30:41 +0000 URL: https://git.openjdk.org/leyden/commit/2529e2fe8dfe9685033bb0ae558266b8bc3cf95c 8376169: JPopupMenu.setInvoker(null) causes NPE Reviewed-by: aivanov, azvegint, prr, kizune ! src/java.desktop/share/classes/javax/swing/JPopupMenu.java ! test/jdk/javax/swing/JPopupMenu/TestPopupInvoker.java Changeset: 62c7e9ae Branch: premain Author: Phil Race Date: 2026-01-29 04:49:56 +0000 URL: https://git.openjdk.org/leyden/commit/62c7e9aefd4320d9d0cd8fa10610f59abb4de670 8376423: Test javax/swing/plaf/metal/MetalUtils/bug6190373.java failed: ClassCastException: class java.lang.Character cannot be cast to class javax.swing.Painter Reviewed-by: aivanov, tr ! src/java.desktop/share/classes/javax/swing/UIManager.java ! src/java.desktop/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java ! src/java.desktop/share/classes/sun/swing/SwingAccessor.java ! src/java.desktop/share/classes/sun/swing/SwingUtilities2.java - test/jdk/javax/swing/UIManager/Test6657026.java - test/jdk/javax/swing/plaf/metal/MetalUtils/bug6190373.java Changeset: 19c6fdf1 Branch: premain Author: Jaikiran Pai Date: 2026-01-29 06:34:02 +0000 URL: https://git.openjdk.org/leyden/commit/19c6fdf11b01308e9f99ce5666bfffcfbc453de3 8376290: SocketChannel.finishConnect() contains confusing "getsockopt" in exception message for a failed connect() on Windows Reviewed-by: alanb ! src/java.base/unix/native/libnet/net_util_md.c ! src/java.base/windows/native/libnet/net_util_md.c ! src/java.base/windows/native/libnio/ch/Net.c + test/jdk/java/nio/channels/Selector/ConnectionRefusedMessage.java Changeset: 06d1345f Branch: premain Author: Emanuel Peter Date: 2026-01-29 08:39:10 +0000 URL: https://git.openjdk.org/leyden/commit/06d1345f2913830c273b9546c997e877f7958113 8373026: C2 SuperWord and Vector API: vector algorithms test and benchmark Co-authored-by: Otmar Ertl Reviewed-by: vlivanov, jbhateja, psandoz, xgong + test/hotspot/jtreg/compiler/vectorization/TestVectorAlgorithms.java + test/hotspot/jtreg/compiler/vectorization/VectorAlgorithmsImpl.java + test/micro/org/openjdk/bench/vm/compiler/VectorAlgorithms.java + test/micro/org/openjdk/bench/vm/compiler/VectorAlgorithmsImpl.java Changeset: 92072a93 Branch: premain Author: Stefan Karlsson Date: 2026-01-29 08:39:32 +0000 URL: https://git.openjdk.org/leyden/commit/92072a93bfeb83186df15032d425ed984d24fc52 8375747: ZGC: ZForwardingTest is unable to commit memory on Windows Reviewed-by: jsikstro, eosterlund ! src/hotspot/share/gc/z/zAddress.inline.hpp ! test/hotspot/gtest/gc/z/test_zForwarding.cpp ! test/hotspot/gtest/gc/z/zunittest.hpp Changeset: f9cc1042 Branch: premain Author: Thomas Schatzl Date: 2026-01-29 08:54:37 +0000 URL: https://git.openjdk.org/leyden/commit/f9cc104249433eec179c98cb3fb44546254bf588 8376335: Convert PreservedMarks classes to use Atomic Reviewed-by: stefank, iwalulya ! src/hotspot/share/gc/shared/preservedMarks.cpp ! src/hotspot/share/gc/shared/preservedMarks.hpp Changeset: 681e4ec8 Branch: premain Author: Thomas Schatzl Date: 2026-01-29 08:54:59 +0000 URL: https://git.openjdk.org/leyden/commit/681e4ec8d37f4e30462b43e1c789d53525211b0a 8376350: Convert ReferenceProcessorPhaseTimes to use Atomic Reviewed-by: stefank, iwalulya ! src/hotspot/share/gc/shared/referenceProcessorPhaseTimes.cpp ! src/hotspot/share/gc/shared/referenceProcessorPhaseTimes.hpp Changeset: f96974db Branch: premain Author: Marc Chevalier Date: 2026-01-29 11:30:42 +0000 URL: https://git.openjdk.org/leyden/commit/f96974dbbd824db8d7b2bbf28f5d3b49bb005fb3 8373898: RepeatCompilation does not repeat compilation after bailout Reviewed-by: chagedorn, bmaillard ! src/hotspot/share/compiler/compileBroker.cpp Changeset: 48846744 Branch: premain Author: Boris Ulasevich Date: 2026-01-29 12:37:51 +0000 URL: https://git.openjdk.org/leyden/commit/48846744ca96ce3c6464a1a440b9e46119dfbb88 8374343: Fix SIGSEGV when lib/modules is unreadable Reviewed-by: iklam, dholmes ! src/hotspot/share/classfile/classLoader.cpp Changeset: e85d5d7a Branch: premain Author: Kerem Kat Committer: Quan Anh Mai Date: 2026-01-29 12:43:48 +0000 URL: https://git.openjdk.org/leyden/commit/e85d5d7a16024f6a3eda14f1e08f72e07ae38dd0 8375010: C2 VectorAPI: assert(vbox->is_CheckCastPP()) failed: should be expanded 8374903: C2 VectorAPI: assert(vbox->as_Phi()->region() == vect->as_Phi()->region()) failed Reviewed-by: qamai, vlivanov ! src/hotspot/share/opto/vector.cpp + test/hotspot/jtreg/compiler/vectorapi/VectorBoxExpandPhi.java + test/hotspot/jtreg/compiler/vectorapi/VectorBoxExpandProj.java Changeset: 99119597 Branch: premain Author: Ferenc Rakoczi Committer: Weijun Wang Date: 2026-01-29 12:52:23 +0000 URL: https://git.openjdk.org/leyden/commit/99119597aa95c1139ae2259bed5ec885a7c01269 8374755: ML-KEM's 12-bit decompression can be simplified on aarch64 Reviewed-by: adinn ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! src/java.base/share/classes/com/sun/crypto/provider/ML_KEM.java Changeset: 7c6c34e1 Branch: premain Author: Kerem Kat Committer: Manuel H?ssig Date: 2026-01-29 13:11:47 +0000 URL: https://git.openjdk.org/leyden/commit/7c6c34e150cf01cec5d166f6cbb8a649c75b0627 8370502: C2: segfault while adding node to IGVN worklist Reviewed-by: mhaessig, dlong ! src/hotspot/share/opto/macro.cpp + test/hotspot/jtreg/compiler/c2/TestUnlockNodeNullMemprof.java Changeset: a54ff1bf Branch: premain Author: Ioi Lam Date: 2026-01-29 16:29:34 +0000 URL: https://git.openjdk.org/leyden/commit/a54ff1bff45e1cb30100cbaa253494c3462f7abd 8376523: Move interned strings into AOT heap roots array Reviewed-by: kvn, shade ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/cds/aotMetaspace.cpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/heapShared.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsStress.java Changeset: 847b5166 Branch: premain Author: Matthew Donovan Date: 2026-01-29 16:44:24 +0000 URL: https://git.openjdk.org/leyden/commit/847b5166ea6322f9ff3effa62ed6d1e73a8b1122 8373018: Update OpenSSL version to 3.5.4 Reviewed-by: abarashev, weijun ! test/lib/jdk/test/lib/security/OpensslArtifactFetcher.java Changeset: 69c868d5 Branch: premain Author: Phil Race Date: 2026-01-29 18:54:39 +0000 URL: https://git.openjdk.org/leyden/commit/69c868d5b7fdeaf38d6a45b75d68bf51b6ee7188 8376510: Raster.createBandedRaster(int, int, int, int, int[], int[], Point) does not check for negative scanlineStride Reviewed-by: serb, azvegint ! src/java.desktop/share/classes/java/awt/image/Raster.java ! test/jdk/java/awt/image/Raster/CreateRasterExceptionTest.java Changeset: 9470aa31 Branch: premain Author: Anupam Dev Committer: Phil Race Date: 2026-01-29 18:59:11 +0000 URL: https://git.openjdk.org/leyden/commit/9470aa31175b504fcef15a932825dbc9e0532234 8375011: OldJTable.java - NullPointerException when columnData is null Reviewed-by: prr, psadhukhan, tr - src/demo/share/jfc/TableExample/OldJTable.java Changeset: 175bbb14 Branch: premain Author: Ioi Lam Date: 2026-01-29 22:39:32 +0000 URL: https://git.openjdk.org/leyden/commit/175bbb143e9fd2e596eb234d46ef9259f2bc4c1a 8375569: Store Java mirrors in AOT configuration file Reviewed-by: iveresov, kvn, asmehra ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/cds/aotMetaspace.cpp ! src/hotspot/share/cds/aotReferenceObjSupport.cpp ! src/hotspot/share/cds/cdsConfig.cpp ! src/hotspot/share/cds/cdsConfig.hpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! test/hotspot/jtreg/runtime/cds/appcds/aotCache/AOTMapTest.java Changeset: 379dcb02 Branch: premain Author: Alexander Zvegintsev Date: 2026-01-30 02:43:57 +0000 URL: https://git.openjdk.org/leyden/commit/379dcb0266bc90fac740eaa56b8027c7273e6d76 8365313: GTK LaF does not respect system color scheme with Gnome Reviewed-by: prr, mkartashev, kizune ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java ! src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c ! src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.h ! src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.h ! src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKEngine.c Changeset: 9a10ccee Branch: premain Author: Prasanta Sadhukhan Date: 2026-01-30 03:19:49 +0000 URL: https://git.openjdk.org/leyden/commit/9a10cceeafa5d332aa571f0d62acf50032a597d4 8374506: Incorrect positioning of arrow icon in parent JMenu in Windows L&F Reviewed-by: aivanov, kizune ! src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.java + test/jdk/javax/swing/JMenuItem/LargeMenuTextArrowIconPosition.java Changeset: 2953e0f4 Branch: premain Author: Archie Cobbs Date: 2026-01-30 03:43:46 +0000 URL: https://git.openjdk.org/leyden/commit/2953e0f445e147d778d4e765be0301cda6557ed5 8371162: Compiler warns about implicit cast from long to int in shift operation Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java + test/langtools/tools/javac/lint/AssignShift64Bits.java ! test/langtools/tools/javac/lint/ShiftOutOfRange.out Changeset: 9fef14a6 Branch: premain Author: Jan Lahoda Date: 2026-01-30 06:15:19 +0000 URL: https://git.openjdk.org/leyden/commit/9fef14a6d3124fae3ad8b24dac5103aa611d4edb 8375571: Compiler crash when using record pattern matching with a generic type parameter shadowing a record class Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java ! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out Changeset: 55375e98 Branch: premain Author: Prasanta Sadhukhan Date: 2026-01-30 08:31:27 +0000 URL: https://git.openjdk.org/leyden/commit/55375e98ae1672badeacaaf2f8b6f2f21ad03437 8375573: JTable ignores setPreferredWidth during initial layout when AUTO_RESIZE_LAST_COLUMN is enabled Reviewed-by: tr ! src/java.desktop/share/classes/javax/swing/JTable.java + test/jdk/javax/swing/JTable/TestJTableColWidth.java Changeset: e6437264 Branch: premain Author: Aleksey Shipilev Date: 2026-01-30 08:31:51 +0000 URL: https://git.openjdk.org/leyden/commit/e6437264d5e6d4aad23430b7dbdf574a12b8f57b 8376604: C2: EA should assert is_oop_field for AddP with oop outs Reviewed-by: qamai, kvn ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/escape.hpp Changeset: 42370e22 Branch: premain Author: Manuel H?ssig Date: 2026-01-30 09:01:00 +0000 URL: https://git.openjdk.org/leyden/commit/42370e22c5bc4ebd40fd500a2e6e9e07f0b8bcd8 8376781: Problemlist compiler/longcountedloops/TestLoopNestTooManyTraps.java Reviewed-by: thartmann, chagedorn ! test/hotspot/jtreg/ProblemList.txt Changeset: e3b5b261 Branch: premain Author: Guanqiang Han Committer: Thomas Schatzl Date: 2026-01-30 09:35:32 +0000 URL: https://git.openjdk.org/leyden/commit/e3b5b261af6acbe7ab074f301c70283b06c17d39 8376287: Crashes when using -XX:ObjArrayMarkingStride=0 Reviewed-by: tschatzl, shade ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp Changeset: 0a3809d3 Branch: premain Author: Aleksey Shipilev Date: 2026-01-30 11:33:03 +0000 URL: https://git.openjdk.org/leyden/commit/0a3809d380bcae8cb24d50886057d8586fa77f7c 8375046: C2: Incremental inlining step asserts when processing empty late inlines list Reviewed-by: vlivanov, thartmann, kbarrett ! src/hotspot/share/opto/compile.cpp Changeset: df8c4d6d Branch: premain Author: Daniel Jeli?ski Date: 2026-01-30 13:44:48 +0000 URL: https://git.openjdk.org/leyden/commit/df8c4d6d12dacd0adfcf8c711c8671913d805309 8373604: Operations on peer reset tokens are slow Reviewed-by: dfuchs ! src/java.net.http/share/classes/jdk/internal/net/http/quic/PeerConnIdManager.java ! src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicConnectionImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicEndpoint.java ! src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicPacketReceiver.java Changeset: 96180b9c Branch: premain Author: Daniel Fuchs Date: 2026-01-30 15:44:51 +0000 URL: https://git.openjdk.org/leyden/commit/96180b9c56a03f6d7cb22c0618ed7d946beae6bf 8376308: java/net/httpclient/CancelRequestTest.java fails intermittently with "Expected CancellationException not received" Reviewed-by: djelinski, vyazici ! test/jdk/java/net/httpclient/CancelRequestTest.java Changeset: c1c543cc Branch: premain Author: Naoto Sato Date: 2026-01-30 16:10:11 +0000 URL: https://git.openjdk.org/leyden/commit/c1c543cc81b4b73ebf228fb817227309b0cff990 8210336: DateTimeFormatter predefined formatters should support short time zone offsets Reviewed-by: jlu, rriggs ! src/java.base/share/classes/java/time/format/DateTimeFormatter.java ! test/jdk/java/time/tck/java/time/TCKOffsetTime.java ! test/jdk/java/time/test/java/time/format/TestDateTimeFormatter.java Changeset: 673cd6ed Branch: premain Author: William Kemper Date: 2026-01-30 16:54:47 +0000 URL: https://git.openjdk.org/leyden/commit/673cd6ed0c4ebbb301346e8e251d1674f363c0d8 8374449: Shenandoah: Leaf locks used by Shenandoah need lower ranks Reviewed-by: ysr ! src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp ! src/hotspot/share/gc/shenandoah/shenandoahController.hpp ! src/hotspot/share/gc/shenandoah/shenandoahGenerationalControlThread.cpp Changeset: ee60eff1 Branch: premain Author: Justin Lu Date: 2026-01-30 17:41:50 +0000 URL: https://git.openjdk.org/leyden/commit/ee60eff1ec9eddcdedc12c1707fbcca0025e71d6 8376038: Refactor java/sql tests to use JUnit 8376629: Refactor javax/sql tests to use JUnit Reviewed-by: lancea - test/jdk/java/sql/JavatimeTest.java - test/jdk/java/sql/driverModuleTests/DriverManagerModuleTests.java + test/jdk/java/sql/test/TEST.properties = test/jdk/java/sql/test/sql/BatchUpdateExceptionTests.java + test/jdk/java/sql/test/sql/CallableStatementTests.java + test/jdk/java/sql/test/sql/ConnectionTests.java = test/jdk/java/sql/test/sql/DataTruncationTests.java + test/jdk/java/sql/test/sql/DateTests.java + test/jdk/java/sql/test/sql/DriverManagerTests.java + test/jdk/java/sql/test/sql/JavatimeTest.java + test/jdk/java/sql/test/sql/PreparedStatementTests.java = test/jdk/java/sql/test/sql/SQLClientInfoExceptionTests.java = test/jdk/java/sql/test/sql/SQLDataExceptionTests.java = test/jdk/java/sql/test/sql/SQLExceptionTests.java = test/jdk/java/sql/test/sql/SQLFeatureNotSupportedExceptionTests.java = test/jdk/java/sql/test/sql/SQLIntegrityConstraintViolationExceptionTests.java = test/jdk/java/sql/test/sql/SQLInvalidAuthorizationSpecExceptionTests.java = test/jdk/java/sql/test/sql/SQLNonTransientConnectionExceptionTests.java = test/jdk/java/sql/test/sql/SQLNonTransientExceptionTests.java = test/jdk/java/sql/test/sql/SQLRecoverableExceptionTests.java = test/jdk/java/sql/test/sql/SQLSyntaxErrorExceptionTests.java = test/jdk/java/sql/test/sql/SQLTimeoutExceptionTests.java = test/jdk/java/sql/test/sql/SQLTransactionRollbackExceptionTests.java = test/jdk/java/sql/test/sql/SQLTransientConnectionExceptionTests.java = test/jdk/java/sql/test/sql/SQLTransientExceptionTests.java = test/jdk/java/sql/test/sql/SQLWarningTests.java + test/jdk/java/sql/test/sql/StatementTests.java + test/jdk/java/sql/test/sql/TimeTests.java + test/jdk/java/sql/test/sql/TimestampTests.java = test/jdk/java/sql/test/sql/drivermanager/DriverManagerInitTests.java + test/jdk/java/sql/test/sql/drivermanager/DriverManagerModuleTests.java + test/jdk/java/sql/test/sql/drivermanager/TEST.properties - test/jdk/java/sql/testng/TEST.properties - test/jdk/java/sql/testng/test/sql/CallableStatementTests.java - test/jdk/java/sql/testng/test/sql/ConnectionTests.java - test/jdk/java/sql/testng/test/sql/DateTests.java - test/jdk/java/sql/testng/test/sql/DriverManagerTests.java - test/jdk/java/sql/testng/test/sql/PreparedStatementTests.java - test/jdk/java/sql/testng/test/sql/StatementTests.java - test/jdk/java/sql/testng/test/sql/TimeTests.java - test/jdk/java/sql/testng/test/sql/TimestampTests.java - test/jdk/java/sql/testng/util/BaseTest.java + test/jdk/java/sql/util/BaseTest.java = test/jdk/java/sql/util/DriverActionImpl.java = test/jdk/java/sql/util/SerializedBatchUpdateException.java = test/jdk/java/sql/util/StubCallableStatement.java = test/jdk/java/sql/util/StubConnection.java = test/jdk/java/sql/util/StubDatabaseMetaData.java = test/jdk/java/sql/util/StubDriver.java = test/jdk/java/sql/util/StubDriverDA.java = test/jdk/java/sql/util/StubPreparedStatement.java = test/jdk/java/sql/util/StubStatement.java + test/jdk/javax/sql/TEST.properties = test/jdk/javax/sql/jars/badFactory/META-INF/services/javax.sql.rowset.RowSetFactory = test/jdk/javax/sql/jars/goodFactory/META-INF/services/javax.sql.rowset.RowSetFactory - test/jdk/javax/sql/rowset/TEST.properties - test/jdk/javax/sql/rowset/serial/SerialBlob/SetBinaryStream.java - test/jdk/javax/sql/rowset/serial/SerialClob/SetAsciiStream.java - test/jdk/javax/sql/rowset/serial/SerialClob/SetCharacterStream.java + test/jdk/javax/sql/test/rowset/BaseRowSetTests.java + test/jdk/javax/sql/test/rowset/CommonRowSetTests.java + test/jdk/javax/sql/test/rowset/RowSetFactoryTests.java + test/jdk/javax/sql/test/rowset/RowSetMetaDataTests.java + test/jdk/javax/sql/test/rowset/RowSetProviderTests.java = test/jdk/javax/sql/test/rowset/RowSetWarningTests.java = test/jdk/javax/sql/test/rowset/cachedrowset/CachedRowSetTests.java + test/jdk/javax/sql/test/rowset/cachedrowset/CommonCachedRowSetTests.java = test/jdk/javax/sql/test/rowset/filteredrowset/CityFilter.java + test/jdk/javax/sql/test/rowset/filteredrowset/FilteredRowSetTests.java = test/jdk/javax/sql/test/rowset/filteredrowset/PrimaryKeyFilter.java = test/jdk/javax/sql/test/rowset/jdbcrowset/JdbcRowSetDriverManagerTest.java + test/jdk/javax/sql/test/rowset/joinrowset/JoinRowSetTests.java + test/jdk/javax/sql/test/rowset/resourcebundle/TEST.properties = test/jdk/javax/sql/test/rowset/resourcebundle/ValidateGetBundle.java + test/jdk/javax/sql/test/rowset/resourcebundle/ValidateResourceBundleAccess.java = test/jdk/javax/sql/test/rowset/serial/SQLInputImplTests.java = test/jdk/javax/sql/test/rowset/serial/SQLOutputImplTests.java + test/jdk/javax/sql/test/rowset/serial/SerialArrayTests.java + test/jdk/javax/sql/test/rowset/serial/SerialBlobTests.java + test/jdk/javax/sql/test/rowset/serial/SerialClobTests.java = test/jdk/javax/sql/test/rowset/serial/SerialDataLinkTests.java = test/jdk/javax/sql/test/rowset/serial/SerialExceptionTests.java + test/jdk/javax/sql/test/rowset/serial/SerialJavaObjectTests.java + test/jdk/javax/sql/test/rowset/serial/SerialRefTests.java = test/jdk/javax/sql/test/rowset/serial/SerialStructTests.java = test/jdk/javax/sql/test/rowset/spi/SyncFactoryExceptionTests.java = test/jdk/javax/sql/test/rowset/spi/SyncFactoryTests.java = test/jdk/javax/sql/test/rowset/spi/SyncProviderExceptionTests.java + test/jdk/javax/sql/test/rowset/webrowset/CommonWebRowSetTests.java = test/jdk/javax/sql/test/rowset/webrowset/WebRowSetTests.java - test/jdk/javax/sql/testng/TEST.properties - test/jdk/javax/sql/testng/test/rowset/BaseRowSetTests.java - test/jdk/javax/sql/testng/test/rowset/CommonRowSetTests.java - test/jdk/javax/sql/testng/test/rowset/RowSetFactoryTests.java - test/jdk/javax/sql/testng/test/rowset/RowSetMetaDataTests.java - test/jdk/javax/sql/testng/test/rowset/RowSetProviderTests.java - test/jdk/javax/sql/testng/test/rowset/ValidateResourceBundleAccess.java - test/jdk/javax/sql/testng/test/rowset/cachedrowset/CommonCachedRowSetTests.java - test/jdk/javax/sql/testng/test/rowset/filteredrowset/FilteredRowSetTests.java - test/jdk/javax/sql/testng/test/rowset/joinrowset/JoinRowSetTests.java - test/jdk/javax/sql/testng/test/rowset/serial/SerialArrayTests.java - test/jdk/javax/sql/testng/test/rowset/serial/SerialBlobTests.java - test/jdk/javax/sql/testng/test/rowset/serial/SerialClobTests.java - test/jdk/javax/sql/testng/test/rowset/serial/SerialJavaObjectTests.java - test/jdk/javax/sql/testng/test/rowset/serial/SerialRefTests.java - test/jdk/javax/sql/testng/test/rowset/webrowset/CommonWebRowSetTests.java = test/jdk/javax/sql/util/PropertyStubProvider.java = test/jdk/javax/sql/util/StubArray.java = test/jdk/javax/sql/util/StubBaseRowSet.java = test/jdk/javax/sql/util/StubBlob.java = test/jdk/javax/sql/util/StubCachedRowSetImpl.java = test/jdk/javax/sql/util/StubClob.java = test/jdk/javax/sql/util/StubContext.java = test/jdk/javax/sql/util/StubFilteredRowSetImpl.java = test/jdk/javax/sql/util/StubJdbcRowSetImpl.java = test/jdk/javax/sql/util/StubJoinRowSetImpl.java = test/jdk/javax/sql/util/StubNClob.java = test/jdk/javax/sql/util/StubRef.java = test/jdk/javax/sql/util/StubRowId.java = test/jdk/javax/sql/util/StubRowSetFactory.java = test/jdk/javax/sql/util/StubSQLXML.java = test/jdk/javax/sql/util/StubStruct.java = test/jdk/javax/sql/util/StubSyncProvider.java = test/jdk/javax/sql/util/StubSyncResolver.java = test/jdk/javax/sql/util/StubWebRowSetImpl.java = test/jdk/javax/sql/util/SuperHero.java = test/jdk/javax/sql/util/TestRowSetListener.java = test/jdk/javax/sql/util/TestSQLDataImpl.java = test/jdk/javax/sql/xml/COFFEE_ROWS.xml = test/jdk/javax/sql/xml/DELETED_COFFEE_ROWS.xml = test/jdk/javax/sql/xml/INSERTED_COFFEE_ROWS.xml = test/jdk/javax/sql/xml/MODFIED_DELETED_COFFEE_ROWS.xml = test/jdk/javax/sql/xml/UPDATED_COFFEE_ROWS.xml = test/jdk/javax/sql/xml/UPDATED_INSERTED_COFFEE_ROWS.xml Changeset: 3a4277db Branch: premain Author: Srinivas Vamsi Parasa Date: 2026-01-30 17:50:58 +0000 URL: https://git.openjdk.org/leyden/commit/3a4277db74f889d0b8350145515c1a1f4e399ec8 8374744: Enable dumping of APX EGPRs (R16?R31) in JVM fatal error logs Reviewed-by: sviswanathan, dholmes ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp Changeset: 32e00ff3 Branch: premain Author: Phil Race Date: 2026-01-30 19:07:59 +0000 URL: https://git.openjdk.org/leyden/commit/32e00ff33785f0756cb320cd8c0ffad8eda76153 8375567: Remove AppContext usage from Swing Motif L&F classes Reviewed-by: serb, psadhukhan ! src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifButtonUI.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifCheckBoxUI.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifLabelUI.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifToggleButtonUI.java Changeset: 9ef98a5f Branch: premain Author: Phil Race Date: 2026-01-30 19:08:20 +0000 URL: https://git.openjdk.org/leyden/commit/9ef98a5fb194eec3024b87ea9f9c9acee952dcf6 8376747: Remove AppContext from Swing LayoutStyle Reviewed-by: psadhukhan, azvegint ! src/java.desktop/share/classes/javax/swing/LayoutStyle.java Changeset: c62c82d5 Branch: premain Author: Phil Race Date: 2026-01-30 19:27:45 +0000 URL: https://git.openjdk.org/leyden/commit/c62c82d5e0485b8570bb1c61805e518fe05f3ec4 8376420: Remove AppContext from javax/swing/ImageIcon.java Reviewed-by: aivanov, psadhukhan ! src/java.desktop/share/classes/javax/swing/ImageIcon.java Changeset: 6ce2f3e1 Branch: premain Author: Daniel D. Daugherty Date: 2026-01-30 22:37:43 +0000 URL: https://git.openjdk.org/leyden/commit/6ce2f3e18f31d1dbffc2c4f5adbb5dfe91613989 8376751: add preview project anchors to main-line ProblemList files Reviewed-by: kvn, rriggs, liach ! make/RunTests.gmk ! test/docs/ProblemList.txt ! test/hotspot/jtreg/ProblemList-AotJdk.txt ! test/hotspot/jtreg/ProblemList-StaticJdk.txt ! test/hotspot/jtreg/ProblemList-Virtual.txt ! test/hotspot/jtreg/ProblemList-Xcomp.txt ! test/hotspot/jtreg/ProblemList-enable-preview.txt ! test/hotspot/jtreg/ProblemList-jvmti-stress-agent.txt ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt ! test/jaxp/ProblemList.txt ! test/jdk/ProblemList-AotJdk.txt ! test/jdk/ProblemList-StaticJdk.txt ! test/jdk/ProblemList-Virtual.txt ! test/jdk/ProblemList-Xcomp.txt + test/jdk/ProblemList-coh.txt ! test/jdk/ProblemList-enable-preview.txt ! test/jdk/ProblemList-jvmti-stress-agent.txt ! test/jdk/ProblemList-shenandoah.txt ! test/jdk/ProblemList-zgc.txt ! test/jdk/ProblemList.txt ! test/langtools/ProblemList-StaticJdk.txt + test/langtools/ProblemList-enable-preview.txt ! test/langtools/ProblemList.txt ! test/lib-test/ProblemList-StaticJdk.txt ! test/lib-test/ProblemList.txt Changeset: ca95e5f3 Branch: premain Author: Eirik Bj?rsn?s Date: 2026-01-31 23:30:18 +0000 URL: https://git.openjdk.org/leyden/commit/ca95e5f3ddd5961dd43f825ed6c47054284c6798 8375580: Avoid using ArrayDeque in jdk.internal.loader.URLClassPath Reviewed-by: liach, redestad, jpai ! src/java.base/share/classes/jdk/internal/loader/URLClassPath.java + test/jdk/jdk/internal/loader/URLClassPath/JarManifestClassPathOrder.java Changeset: f4765abd Branch: premain Author: Phil Race Date: 2026-02-01 19:19:18 +0000 URL: https://git.openjdk.org/leyden/commit/f4765abd7ef76108c1ae5777f2822800be22030e 8376755: Remove AppContext from Swing javax/swing/plaf/basic classes Reviewed-by: dnguyen, kizune ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicButtonUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicCheckBoxUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTextUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java ! test/jdk/javax/swing/JPopupMenu/6495920/bug6495920.java Changeset: 3a327577 Branch: premain Author: Feilong Jiang Date: 2026-02-02 02:15:42 +0000 URL: https://git.openjdk.org/leyden/commit/3a32757743b459902aa97092d95eb9b0cb3099d6 8376572: RISC-V: Interpreter: Load array index as signed int Reviewed-by: fyang, dzhang ! src/hotspot/cpu/riscv/templateTable_riscv.cpp Changeset: f8b0ff26 Branch: premain Author: Aleksey Shipilev Date: 2026-02-02 07:12:32 +0000 URL: https://git.openjdk.org/leyden/commit/f8b0ff26c9e6643e96f06c18c509ddaf50326205 8376472: Shenandoah: Assembler store barriers read destination memory despite the decorators Reviewed-by: mdoerr, wkemper ! src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp ! src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp ! src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp ! src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp ! src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.hpp ! src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp Changeset: f22bc1cd Branch: premain Author: Thomas Schatzl Date: 2026-02-02 07:58:01 +0000 URL: https://git.openjdk.org/leyden/commit/f22bc1cd518bc7f09dc49b78e40d06210226d2b7 8376131: Convert ContiguousSpace to use Atomic Reviewed-by: dholmes, kbarrett ! src/hotspot/share/gc/shared/space.cpp ! src/hotspot/share/gc/shared/space.hpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp ! src/hotspot/share/runtime/vmStructs.cpp Changeset: 766e03b1 Branch: premain Author: Leo Korinth Date: 2026-02-02 08:02:07 +0000 URL: https://git.openjdk.org/leyden/commit/766e03b151b2972108ddc207eed10428e9a91c30 8367993: G1: Speed up ConcurrentMark initialization Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.cpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1RegionMarkStatsCache.cpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/prims/whitebox.cpp Changeset: 1f3fd3da Branch: premain Author: Anton Artemov Date: 2026-02-02 08:20:00 +0000 URL: https://git.openjdk.org/leyden/commit/1f3fd3da1d24118a29d28f01d3fa59d7712607e5 8366659: ObjectMonitor::wait() liveness problem with a suspension request Co-authored-by: Patricio Chilano Mateo Co-authored-by: Daniel D. Daugherty Reviewed-by: dcubed, sspitsyn, dholmes, pchilanomate ! src/hotspot/share/runtime/objectMonitor.cpp ! src/hotspot/share/runtime/objectMonitor.hpp - test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWait.java + test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWaitBase.java + test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWaitDefault.java + test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWaitReentryPartFirst.java + test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWaitReentryPartSecond.java + test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/SuspendWithObjectMonitorWaitWorker.java ! test/hotspot/jtreg/serviceability/jvmti/SuspendWithObjectMonitorWait/libSuspendWithObjectMonitorWait.cpp Changeset: 5e248603 Branch: premain Author: Thomas Schatzl Date: 2026-02-02 09:59:40 +0000 URL: https://git.openjdk.org/leyden/commit/5e248603813a46221c97f1c05311b06f21387bd7 8376115: G1: Convert G1CMRootRegions to use Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Changeset: 7ccf1757 Branch: premain Author: Beno?t Maillard Date: 2026-02-02 10:10:21 +0000 URL: https://git.openjdk.org/leyden/commit/7ccf1757859d25572d681c8e083b97ec4b6e0b20 8371536: C2: VerifyIterativeGVN should assert on first detected failure Reviewed-by: epeter, mhaessig, chagedorn ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/opto/phaseX.hpp Changeset: 90a43f84 Branch: premain Author: Marc Chevalier Date: 2026-02-02 10:11:34 +0000 URL: https://git.openjdk.org/leyden/commit/90a43f8445de4e66da6ae113c2b4d40ee88c4a73 8376325: [IR Framework] Detect and report overloads Reviewed-by: chagedorn, dfenacci ! test/hotspot/jtreg/compiler/lib/ir_framework/test/TestVM.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestBadFormat.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestBasics.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestControls.java Changeset: e370b8a1 Branch: premain Author: Aleksey Shipilev Date: 2026-02-02 10:32:51 +0000 URL: https://git.openjdk.org/leyden/commit/e370b8a1d834a0a6ebcd1d5946a5533c015ed960 8376570: GrowableArray::remove_{till,range} should work on empty list Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/utilities/growableArray.hpp ! test/hotspot/gtest/utilities/test_growableArray.cpp Changeset: 17f25b5a Branch: premain Author: David Briemann Date: 2026-02-02 11:31:17 +0000 URL: https://git.openjdk.org/leyden/commit/17f25b5ac46daed362f15005d65c5ee771328214 8375536: PPC64: Implement special MachNodes for floating point CMove Reviewed-by: mdoerr, rrich ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/ppc/assembler_ppc.hpp ! src/hotspot/cpu/ppc/assembler_ppc.inline.hpp ! src/hotspot/cpu/ppc/c2_MacroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/c2_MacroAssembler_ppc.hpp ! src/hotspot/cpu/ppc/matcher_ppc.hpp ! src/hotspot/cpu/ppc/ppc.ad Changeset: 176422b8 Branch: premain Author: Roland Westrelin Date: 2026-02-02 11:43:30 +0000 URL: https://git.openjdk.org/leyden/commit/176422b885d2d045dd44b61b7fcdcb01be2d00a7 8370519: C2: Hit MemLimit when running with +VerifyLoopOptimizations Co-authored-by: Beno?t Maillard Reviewed-by: mhaessig, bmaillard, epeter ! src/hotspot/share/memory/arena.hpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp + test/hotspot/jtreg/compiler/c2/TestVerifyLoopOptimizationsHighMemUsage.java Changeset: 173c3f98 Branch: premain Author: Daniel Jeli?ski Date: 2026-02-02 14:57:14 +0000 URL: https://git.openjdk.org/leyden/commit/173c3f9852672f6c917e975383172c8878ba7e96 8376479: Http3 test server thread deadlock in ThrowingPublishersInRequest Co-authored-by: Volkan Yazici Reviewed-by: dfuchs ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerExchange.java ! test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerStreamImpl.java Changeset: b7128b7c Branch: premain Author: Thomas Schatzl Date: 2026-02-02 15:16:35 +0000 URL: https://git.openjdk.org/leyden/commit/b7128b7c30f3de2c1dcee2be567bb25d407c71a2 8376357: Parallel: Convert MutableSpace classes to use Atomic Reviewed-by: dholmes, iwalulya ! src/hotspot/share/gc/parallel/mutableNUMASpace.cpp ! src/hotspot/share/gc/parallel/mutableSpace.cpp ! src/hotspot/share/gc/parallel/mutableSpace.hpp ! src/hotspot/share/gc/parallel/vmStructs_parallelgc.hpp Changeset: 903b3fe1 Branch: premain Author: Thomas Schatzl Date: 2026-02-02 15:19:15 +0000 URL: https://git.openjdk.org/leyden/commit/903b3fe19596adaeac7cfb0d749b6e83f668f52f 8375438: G1: Convert G1HeapRegion related classes to use Atomic Reviewed-by: shade, iwalulya ! src/hotspot/share/gc/g1/g1HeapRegion.cpp ! src/hotspot/share/gc/g1/g1HeapRegion.hpp ! src/hotspot/share/gc/g1/g1HeapRegion.inline.hpp ! src/hotspot/share/gc/g1/g1HeapRegionManager.cpp ! src/hotspot/share/gc/g1/g1HeapRegionManager.hpp ! src/hotspot/share/gc/g1/g1YoungCollector.cpp ! src/hotspot/share/gc/g1/vmStructs_g1.hpp ! src/hotspot/share/runtime/vmStructs.cpp Changeset: 9871e2d3 Branch: premain Author: Thomas Schatzl Date: 2026-02-02 16:03:04 +0000 URL: https://git.openjdk.org/leyden/commit/9871e2d3f771ee2bc1b2473c0eb28a0bfc1c5456 8375535: G1: Convert CardTableBarrierSet and subclasses to use Atomic Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1BarrierSet.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.cpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.inline.hpp ! src/hotspot/share/gc/shared/vmStructs_gc.hpp Changeset: 70f4984a Branch: premain Author: Galder Zamarre?o Committer: Martin Doerr Date: 2026-02-02 16:46:46 +0000 URL: https://git.openjdk.org/leyden/commit/70f4984a4e1a43fd25169096ee0869361de2b9cb 8375640: MinMaxIdentity test fails on some machines after 8373134 Reviewed-by: mdoerr, mhaessig, amitkumar ! test/hotspot/jtreg/compiler/igvn/TestMinMaxIdentity.java Changeset: b6024988 Branch: premain Author: Thomas Schatzl Date: 2026-02-02 16:57:47 +0000 URL: https://git.openjdk.org/leyden/commit/b60249882cc511a7fc9cf9ae11e8beb1602ea10f 8376126: G1: Convert remaining volatiles in G1ConcurrentMark to Atomic Reviewed-by: iwalulya, kbarrett, stefank ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/g1/g1RegionMarkStatsCache.hpp Changeset: 8023c416 Branch: premain Author: Matthias Baesken Date: 2026-02-02 18:49:45 +0000 URL: https://git.openjdk.org/leyden/commit/8023c41690aee648eef800b69e517136e1cd062c 8376703: Some coding in libjimage seems to be not called at all or not called from PRODUCT code Reviewed-by: alanb, rriggs ! src/java.base/share/native/libjimage/endian.cpp ! src/java.base/share/native/libjimage/endian.hpp ! src/java.base/share/native/libjimage/imageDecompressor.hpp ! src/java.base/share/native/libjimage/imageFile.cpp ! src/java.base/share/native/libjimage/imageFile.hpp Changeset: 5607a462 Branch: premain Author: Hendrik Schick Committer: Chen Liang Date: 2026-02-02 20:58:03 +0000 URL: https://git.openjdk.org/leyden/commit/5607a4620c97ad2650a2dd3f464d03955fe17ef1 8376954: Typos in CharacterRangeInfo and AsynchronousServerSocketChannel Reviewed-by: liach, bpb ! src/java.base/share/classes/java/lang/classfile/attribute/CharacterRangeInfo.java ! src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java Changeset: 4db0f7f2 Branch: premain Author: Damon Nguyen Date: 2026-02-02 21:53:02 +0000 URL: https://git.openjdk.org/leyden/commit/4db0f7f29154d6618c63a30ef2a86267c842ebb3 8375057: Update HarfBuzz to 12.3.2 Reviewed-by: prr, kizune ! src/java.desktop/share/legal/harfbuzz.md ! src/java.desktop/share/native/libharfbuzz/OT/Color/COLR/COLR.hh ! src/java.desktop/share/native/libharfbuzz/OT/Color/CPAL/CPAL.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/Common/Coverage.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/Common/CoverageFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/Common/CoverageFormat2.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GDEF/GDEF.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/Anchor.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/AnchorFormat3.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/AnchorMatrix.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/GPOS.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/LigatureArray.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkArray.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkBasePos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkBasePosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkLigPos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkLigPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkMarkPos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/MarkMarkPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairPos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairPosFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairPosFormat2.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePos.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/ValueFormat.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/AlternateSet.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/AlternateSubst.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/AlternateSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/Ligature.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSet.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSubst.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/LigatureSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/MultipleSubst.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/ReverseChainSingleSubst.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/Sequence.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubst.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat1.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/GSUB/SingleSubstFormat2.hh ! src/java.desktop/share/native/libharfbuzz/OT/Layout/types.hh + src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.cc ! src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh ! src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh ! src/java.desktop/share/native/libharfbuzz/graph/classdef-graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/coverage-graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-context.hh ! src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/markbasepos-graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/pairpos-graph.hh ! src/java.desktop/share/native/libharfbuzz/graph/serialize.hh ! src/java.desktop/share/native/libharfbuzz/graph/split-helpers.hh ! src/java.desktop/share/native/libharfbuzz/hb-aat-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-aat-layout-kerx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-aat-layout-morx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-algs.hh + src/java.desktop/share/native/libharfbuzz/hb-alloc-pool.hh ! src/java.desktop/share/native/libharfbuzz/hb-array.hh ! src/java.desktop/share/native/libharfbuzz/hb-atomic.hh ! src/java.desktop/share/native/libharfbuzz/hb-bimap.hh ! src/java.desktop/share/native/libharfbuzz/hb-bit-page.hh ! src/java.desktop/share/native/libharfbuzz/hb-bit-set-invertible.hh ! src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh ! src/java.desktop/share/native/libharfbuzz/hb-buffer-deserialize-text-unicode.hh ! src/java.desktop/share/native/libharfbuzz/hb-buffer-serialize.cc ! src/java.desktop/share/native/libharfbuzz/hb-buffer-verify.cc ! src/java.desktop/share/native/libharfbuzz/hb-buffer.cc ! src/java.desktop/share/native/libharfbuzz/hb-buffer.hh ! src/java.desktop/share/native/libharfbuzz/hb-cache.hh ! src/java.desktop/share/native/libharfbuzz/hb-cff2-interp-cs.hh ! src/java.desktop/share/native/libharfbuzz/hb-common.cc ! src/java.desktop/share/native/libharfbuzz/hb-config.hh ! src/java.desktop/share/native/libharfbuzz/hb-debug.hh ! src/java.desktop/share/native/libharfbuzz/hb-deprecated.h ! src/java.desktop/share/native/libharfbuzz/hb-draw.cc ! src/java.desktop/share/native/libharfbuzz/hb-face-builder.cc ! src/java.desktop/share/native/libharfbuzz/hb-face.cc ! src/java.desktop/share/native/libharfbuzz/hb-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-font.h ! src/java.desktop/share/native/libharfbuzz/hb-font.hh = src/java.desktop/share/native/libharfbuzz/hb-free-pool.hh ! src/java.desktop/share/native/libharfbuzz/hb-ft.cc ! src/java.desktop/share/native/libharfbuzz/hb-geometry.hh ! src/java.desktop/share/native/libharfbuzz/hb-iter.hh ! src/java.desktop/share/native/libharfbuzz/hb-kern.hh ! src/java.desktop/share/native/libharfbuzz/hb-limits.hh ! src/java.desktop/share/native/libharfbuzz/hb-machinery.hh ! src/java.desktop/share/native/libharfbuzz/hb-map.hh ! src/java.desktop/share/native/libharfbuzz/hb-number-parser.hh ! src/java.desktop/share/native/libharfbuzz/hb-open-file.hh ! src/java.desktop/share/native/libharfbuzz/hb-open-type.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cff-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-std-str.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-hmtx-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-kern-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-base-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gpos-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsub-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout.h ! src/java.desktop/share/native/libharfbuzz/hb-ot-layout.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-math-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-post-macroman.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shape-fallback.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shape.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shape.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-joining-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-hangul.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-machine.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-table.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-khmer-machine.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-khmer.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-myanmar-machine.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-thai.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-machine.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-vowel-constraints.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-shaper.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-stat-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-tag-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-avar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-cvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-fvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-ot-var.cc ! src/java.desktop/share/native/libharfbuzz/hb-ot-vorg-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-outline.cc ! src/java.desktop/share/native/libharfbuzz/hb-outline.hh ! src/java.desktop/share/native/libharfbuzz/hb-paint-extents.cc ! src/java.desktop/share/native/libharfbuzz/hb-paint-extents.hh ! src/java.desktop/share/native/libharfbuzz/hb-paint.hh ! src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh ! src/java.desktop/share/native/libharfbuzz/hb-repacker.hh ! src/java.desktop/share/native/libharfbuzz/hb-sanitize.hh ! src/java.desktop/share/native/libharfbuzz/hb-script-list.h ! src/java.desktop/share/native/libharfbuzz/hb-serialize.hh ! src/java.desktop/share/native/libharfbuzz/hb-set-digest.hh ! src/java.desktop/share/native/libharfbuzz/hb-shape.cc ! src/java.desktop/share/native/libharfbuzz/hb-shaper-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-static.cc ! src/java.desktop/share/native/libharfbuzz/hb-string-array.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-iup.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan-member-list.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset-plan.hh ! src/java.desktop/share/native/libharfbuzz/hb-subset.cc ! src/java.desktop/share/native/libharfbuzz/hb-subset.h ! src/java.desktop/share/native/libharfbuzz/hb-subset.hh ! src/java.desktop/share/native/libharfbuzz/hb-ucd-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-unicode-emoji-table.hh ! src/java.desktop/share/native/libharfbuzz/hb-unicode.hh ! src/java.desktop/share/native/libharfbuzz/hb-utf.hh ! src/java.desktop/share/native/libharfbuzz/hb-vector.hh ! src/java.desktop/share/native/libharfbuzz/hb-version.h ! src/java.desktop/share/native/libharfbuzz/hb.hh Changeset: 67079b18 Branch: premain Author: David Holmes Date: 2026-02-02 22:29:15 +0000 URL: https://git.openjdk.org/leyden/commit/67079b18afb4454fc849a35dd208ccf0b702339f 8377000: [BACKOUT] JDK-8376126 G1: Convert remaining volatiles in G1ConcurrentMark to Atomic Reviewed-by: kvn ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp ! src/hotspot/share/gc/g1/g1RegionMarkStatsCache.hpp Changeset: 1cb4ef85 Branch: premain Author: David Holmes Date: 2026-02-02 22:39:31 +0000 URL: https://git.openjdk.org/leyden/commit/1cb4ef8581b5c5572474a5376baf4fd88c5ffeab 8376855: ASAN reports out-of-range read in strncmp in MethodHandles::is_basic_type_signature Reviewed-by: azafari, jsjolen ! src/hotspot/share/prims/methodHandles.cpp Changeset: caf13382 Branch: premain Author: SendaoYan Date: 2026-02-03 02:21:06 +0000 URL: https://git.openjdk.org/leyden/commit/caf1338243004e62c8a9e5fc8ba5d5e19f6edba2 8376700: java/nio/file/DirectoryStream/SecureDS.java fails AtomicMoveNotSupportedException Reviewed-by: bpb ! test/jdk/java/nio/file/DirectoryStream/SecureDS.java Changeset: e21cb852 Branch: premain Author: Paul H?bner Committer: David Holmes Date: 2026-02-03 06:32:50 +0000 URL: https://git.openjdk.org/leyden/commit/e21cb8525d91e91f000dc375b250c4acd37314e9 8370441: Remove unnecessary/confusing null check in Verifier::verify() Reviewed-by: dholmes, coleenp ! src/hotspot/share/classfile/verifier.cpp Changeset: 8e2bd92b Branch: premain Author: Aleksey Shipilev Date: 2026-02-03 08:41:37 +0000 URL: https://git.openjdk.org/leyden/commit/8e2bd92bacd6503346a48df236959c8a959c9c77 8376970: Shenandoah: Verifier should do basic verification before touching oops Reviewed-by: wkemper, xpeng, kdnilsen ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp Changeset: 692444f0 Branch: premain Author: Aleksey Shipilev Date: 2026-02-03 08:44:23 +0000 URL: https://git.openjdk.org/leyden/commit/692444f071cab930d1b92bbfac79f87d0d801aab 8376969: Shenandoah: GC state getters should be inlineable Reviewed-by: wkemper, xpeng, kdnilsen ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Changeset: 5fec0f32 Branch: premain Author: Jan Lahoda Date: 2026-02-03 08:58:57 +0000 URL: https://git.openjdk.org/leyden/commit/5fec0f3287a64aa56e04ad7c0222dca49a0992e0 8376585: bin/update_copyright_year.sh could allow updating a specified list of files Reviewed-by: erikj ! bin/update_copyright_year.sh Changeset: f43fbf08 Branch: premain Author: Casper Norrbin Date: 2026-02-03 09:19:15 +0000 URL: https://git.openjdk.org/leyden/commit/f43fbf08231a0ecf5c495c807302a851208c0736 8367332: Replace BlockTree tree logic with an intrusive red-black tree Reviewed-by: jsjolen, stuefe ! src/hotspot/share/memory/metaspace/blockTree.cpp ! src/hotspot/share/memory/metaspace/blockTree.hpp ! test/hotspot/gtest/metaspace/test_blocktree.cpp Changeset: efa16e9e Branch: premain Author: Jaikiran Pai Date: 2026-02-03 09:35:21 +0000 URL: https://git.openjdk.org/leyden/commit/efa16e9e5fb07088ef2e0f2509e40fd97e4141d1 8170896: TEST_BUG: java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java failed with unreferenced() not invoked after 20.0 seconds Reviewed-by: smarks, msheppar, dfuchs ! test/jdk/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java ! test/jdk/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java Changeset: 9c83dff8 Branch: premain Author: Yasumasa Suenaga Date: 2026-02-03 09:44:00 +0000 URL: https://git.openjdk.org/leyden/commit/9c83dff811c038ba8b20a9781ea3ac0f4f95b1b9 8376284: New test serviceability/sa/TestJhsdbJstackMixedCore.java from JDK-8374482 fails on Linux Alpine Reviewed-by: cjplummer, mbaesken ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java ! test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java ! test/lib/jdk/test/lib/SA/SATestUtils.java Changeset: 88f538f1 Branch: premain Author: Marc Chevalier Date: 2026-02-03 10:46:38 +0000 URL: https://git.openjdk.org/leyden/commit/88f538f114faf62e5decc48ae624b1c1302db13a 8376324: [IR Framework] Name methods in a CompileCommand-friendly way Reviewed-by: chagedorn, dfenacci ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/irmatching/report/FailureMessageBuilder.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestCompileThreshold.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestRunTests.java Changeset: a5b4c079 Branch: premain Author: Matthias Baesken Date: 2026-02-03 11:59:01 +0000 URL: https://git.openjdk.org/leyden/commit/a5b4c0795d88db3d02d31fb4740612c6a53f7204 8376889: Enhance JfrRecorder::on_create_vm_3() assert output Reviewed-by: mdoerr, mgronlun, asteiner ! src/hotspot/share/jfr/recorder/jfrRecorder.cpp Changeset: 69c3e278 Branch: premain Author: Thomas Schatzl Date: 2026-02-03 12:37:33 +0000 URL: https://git.openjdk.org/leyden/commit/69c3e2780c44c6ad2ef0f296e8cfba7796f2213e 8376410: G1: Task queue statistics not reset properly on mark abort Reviewed-by: shade, iwalulya ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp Changeset: 99bc9835 Branch: premain Author: Jaikiran Pai Date: 2026-02-03 13:37:51 +0000 URL: https://git.openjdk.org/leyden/commit/99bc98357dab78bef2cce7a10c98d13d1e5730e3 8377015: ConnectionRefusedMessage::testFinishConnect test fails on AIX with java.net.ConnectException: Connection refused Reviewed-by: alanb, mbaesken ! test/jdk/java/nio/channels/Selector/ConnectionRefusedMessage.java Changeset: e51ccef9 Branch: premain Author: Weijun Wang Date: 2026-02-03 16:32:21 +0000 URL: https://git.openjdk.org/leyden/commit/e51ccef9cb415ed31db70971bb439ca3d96c5bce 8347938: Add Support for the Latest ML-KEM and ML-DSA Private Key Encodings Reviewed-by: mullan, bperez, mpowers ! src/java.base/share/classes/com/sun/crypto/provider/ML_KEM.java ! src/java.base/share/classes/com/sun/crypto/provider/ML_KEM_Impls.java ! src/java.base/share/classes/sun/security/pkcs/NamedPKCS8Key.java ! src/java.base/share/classes/sun/security/provider/ML_DSA.java ! src/java.base/share/classes/sun/security/provider/ML_DSA_Impls.java ! src/java.base/share/classes/sun/security/provider/NamedKEM.java ! src/java.base/share/classes/sun/security/provider/NamedKeyFactory.java ! src/java.base/share/classes/sun/security/provider/NamedKeyPairGenerator.java ! src/java.base/share/classes/sun/security/provider/NamedSignature.java + src/java.base/share/classes/sun/security/util/KeyChoices.java ! src/java.base/share/classes/sun/security/x509/NamedX509Key.java ! src/java.base/share/conf/security/java.security - test/jdk/sun/security/provider/NamedEdDSA.java - test/jdk/sun/security/provider/NamedKeyFactoryTest.java ! test/jdk/sun/security/provider/acvp/Launcher.java ! test/jdk/sun/security/provider/acvp/ML_DSA_Test.java ! test/jdk/sun/security/provider/acvp/ML_KEM_Test.java + test/jdk/sun/security/provider/named/NamedEdDSA.java + test/jdk/sun/security/provider/named/NamedKeyFactoryTest.java + test/jdk/sun/security/provider/named/NamedKeys.java + test/jdk/sun/security/provider/pqc/PrivateKeyEncodings.java + test/jdk/sun/security/provider/pqc/SeedOrExpanded.java ! test/lib/jdk/test/lib/process/Proc.java ! test/lib/jdk/test/lib/security/RepositoryFileReader.java Changeset: b8a914bb Branch: premain Author: Ioi Lam Date: 2026-02-04 12:14:11 +0000 URL: https://git.openjdk.org/leyden/commit/b8a914bbe8f105cb3aa589e8e770fe102f34c003 Merge master 02-03-26 ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/cds/aotMetaspace.cpp ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/cdsConfig.cpp ! src/hotspot/share/cds/cdsConfig.hpp ! src/hotspot/share/cds/dumpAllocStats.hpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/heapShared.hpp ! src/hotspot/share/ci/ciField.cpp ! src/hotspot/share/ci/ciInstanceKlass.cpp ! src/hotspot/share/ci/ciInstanceKlass.hpp ! src/hotspot/share/ci/ciUtilities.cpp ! src/hotspot/share/ci/ciUtilities.hpp ! src/hotspot/share/classfile/classLoader.cpp ! src/hotspot/share/classfile/classLoaderDataShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/moduleEntry.cpp ! src/hotspot/share/classfile/modules.cpp ! src/hotspot/share/classfile/modules.hpp ! src/hotspot/share/classfile/packageEntry.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/code/dependencies.cpp ! src/hotspot/share/code/dependencies.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/shared/c1/cardTableBarrierSetC1.cpp ! src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.cpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/interpreter/bytecodeTracer.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/parse.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parseHelper.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/prims/methodHandles.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/java.base/share/native/libjli/java.c ! test/hotspot/jtreg/ProblemList-AotJdk.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/compiler/lib/ir_framework/TestFramework.java ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ! src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/cds/aotMetaspace.cpp ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/cdsConfig.cpp ! src/hotspot/share/cds/cdsConfig.hpp ! src/hotspot/share/cds/dumpAllocStats.hpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/heapShared.hpp ! src/hotspot/share/ci/ciField.cpp ! src/hotspot/share/ci/ciInstanceKlass.cpp ! src/hotspot/share/ci/ciInstanceKlass.hpp ! src/hotspot/share/ci/ciUtilities.cpp ! src/hotspot/share/ci/ciUtilities.hpp ! src/hotspot/share/classfile/classLoader.cpp ! src/hotspot/share/classfile/classLoaderDataShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/moduleEntry.cpp ! src/hotspot/share/classfile/modules.cpp ! src/hotspot/share/classfile/modules.hpp ! src/hotspot/share/classfile/packageEntry.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/code/dependencies.cpp ! src/hotspot/share/code/dependencies.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/shared/c1/cardTableBarrierSetC1.cpp ! src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.cpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/interpreter/bytecodeTracer.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/klass.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/parse.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parseHelper.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/prims/methodHandles.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/javaThread.cpp ! src/hotspot/share/runtime/javaThread.hpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/java.base/share/native/libjli/java.c ! test/hotspot/jtreg/ProblemList-AotJdk.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/compiler/lib/ir_framework/TestFramework.java Changeset: 6ce18321 Branch: premain Author: Ioi Lam Date: 2026-02-04 16:33:16 +0000 URL: https://git.openjdk.org/leyden/commit/6ce1832147ef3f01602b8fac02160038422a77bf Temp: comment out assert in CardTableBarrierSet::card_table_base_const() ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp From iklam at openjdk.org Fri Feb 6 06:06:28 2026 From: iklam at openjdk.org (Ioi Lam) Date: Fri, 6 Feb 2026 06:06:28 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots Message-ID: The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. The AOT compiler only needs the following objects - a few common exception objects - class loaders - class mirrors - interned strings - method handles Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) Notes to reviewers - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. - This code is added to make sure interned strings and method handles are roots if (AOTCodeCache::is_dumping_code() && (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { // Needed by AOT compiler. append_root(obj); } - Also some clean up that's not necessary but nice to have: - I removed the `DumpedInternedStrings` and replaced it with much simpler code. ------------- Commit messages: - clean up - reverted some code related to oop clearing - step 3 - step 2 -- remove HeapShared::clear_root - step1 Changes: https://git.openjdk.org/leyden/pull/108/files Webrev: https://webrevs.openjdk.org/?repo=leyden&pr=108&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8377339 Stats: 349 lines in 13 files changed: 83 ins; 202 del; 64 mod Patch: https://git.openjdk.org/leyden/pull/108.diff Fetch: git fetch https://git.openjdk.org/leyden.git pull/108/head:pull/108 PR: https://git.openjdk.org/leyden/pull/108 From duke at openjdk.org Fri Feb 6 18:21:34 2026 From: duke at openjdk.org (duke) Date: Fri, 6 Feb 2026 18:21:34 GMT Subject: git: openjdk/leyden: premain: Cleanup after merge and other changes Message-ID: Changeset: 10172534 Branch: premain Author: Vladimir Kozlov Date: 2026-02-06 10:17:59 +0000 URL: https://git.openjdk.org/leyden/commit/10172534fc92bc58dcf7eae6145c781ec50ffabc Cleanup after merge and other changes ! src/hotspot/share/cds/cdsConfig.cpp ! src/hotspot/share/ci/ciUtilities.cpp ! src/hotspot/share/ci/ciUtilities.hpp ! src/hotspot/share/code/aotCodeCache.cpp ! src/hotspot/share/code/aotCodeCache.hpp ! src/hotspot/share/code/codeCache.cpp ! src/hotspot/share/code/oopRecorder.cpp ! src/hotspot/share/code/relocInfo.cpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/gc/shared/cardTableBarrierSet.hpp ! src/hotspot/share/opto/output.cpp ! src/hotspot/share/runtime/deoptimization.cpp From avoznia at azul.com Mon Feb 9 15:24:53 2026 From: avoznia at azul.com (Anton Voznia) Date: Mon, 9 Feb 2026 15:24:53 +0000 Subject: Crash in ArchiveHeapWriter::compute_ptrmap when archiving heap objects of excluded classes Message-ID: Hi all, I have a question about a potential bug in AOT heap archiving. We observe a crash (guarantee failure) while creating the AOT cache with JDK 25, at: https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/archiveHeapWriter.cpp#L757 The failure happens because: get_buffered_addr(src_addr) == nullptr What means that a native pointer is present in _native_pointers but there is no corresponding buffered address, even though the SourceObjInfo was successfully added to _src_obj_table. The failing check is: guarantee(ArchiveBuilder::current()->has_been_buffered((address)native_ptr), "Metadata %p should have been archived", native_ptr); further investigation showed that we collect pointers into _native_pointers without checking whether the corresponding class was excluded (via class exclusion or link-time verification failures): https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/heapShared.cpp#L308 However, the SourceObjInfo::_buffered_addr seems to be assigned only for objects that are actually copied (i.e., not excluded). In particular, this SourceObjInfo didn?t end up in _ro_src_objs or _rw_src_objs because it didn?t satisfy the following condition: https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/archiveBuilder.cpp#L467 if (created && src_info.should_copy()) { if (read_only) { _ro_src_objs.append(p); } else { _rw_src_objs.append(p); } return true; // Need to recurse into this ref only if we are copying it } created is true (object exists in _src_obj_table), but src_info.should_copy() is false because _follow_mode is set_to_null (not make_a_copy). So it looks like we may end up with an item in _native_pointers for which we will never assign a buffered address. However, later we expect every item in _native_pointers to have one buffered address. Is this logic correct, or am I missing a step that guarantees buffering for all _native_pointers items? It seems, we have to check for a class exclusion before adding into _native_pointers. Unfortunately, I wasn?t able to reproduce the issue locally. Thanks and best regards, Anton Voznia -------------- next part -------------- An HTML attachment was scrubbed... URL: From iklam at openjdk.org Mon Feb 9 21:58:32 2026 From: iklam at openjdk.org (Ioi Lam) Date: Mon, 9 Feb 2026 21:58:32 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: > The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. > > Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. > > https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 > > However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` > > So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. > > This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. > > The AOT compiler only needs the following objects > > - a few common exception objects > - class loaders > - class mirrors > - interned strings > - method handles > > Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. > > (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) > > Notes to reviewers > - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. > - This code is added to make sure interned strings and method handles are roots > > if (AOTCodeCache::is_dumping_code() && > (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { > // Needed by AOT compiler. > append_root(obj); > } > > - Also some clean up that's not necessary but nice to have: > - I removed the `DumpedInternedStrings` and replaced it with much simpler code. Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: - @DanHeidinga review comment - @DanHeidinga review comment - @DanHeidinga review comment - fixed typo ------------- Changes: - all: https://git.openjdk.org/leyden/pull/108/files - new: https://git.openjdk.org/leyden/pull/108/files/33455b60..2cb0abb8 Webrevs: - full: https://webrevs.openjdk.org/?repo=leyden&pr=108&range=01 - incr: https://webrevs.openjdk.org/?repo=leyden&pr=108&range=00-01 Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/leyden/pull/108.diff Fetch: git fetch https://git.openjdk.org/leyden.git pull/108/head:pull/108 PR: https://git.openjdk.org/leyden/pull/108 From eosterlund at openjdk.org Mon Feb 9 21:58:41 2026 From: eosterlund at openjdk.org (Erik =?UTF-8?B?w5ZzdGVybHVuZA==?=) Date: Mon, 9 Feb 2026 21:58:41 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Mon, 9 Feb 2026 17:49:40 GMT, Ioi Lam wrote: >> The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. >> >> Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. >> >> https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 >> >> However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` >> >> So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. >> >> This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. >> >> The AOT compiler only needs the following objects >> >> - a few common exception objects >> - class loaders >> - class mirrors >> - interned strings >> - method handles >> >> Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. >> >> (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) >> >> Notes to reviewers >> - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. >> - This code is added to make sure interned strings and method handles are roots >> >> if (AOTCodeCache::is_dumping_code() && >> (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { >> // Needed by AOT compiler. >> append_root(obj); >> } >> >> - Also some clean up that's not necessary but nice to have: >> - I removed the `DumpedInternedStrings` and replaced it with much simpler code. > > Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: > > - @DanHeidinga review comment > - @DanHeidinga review comment > - @DanHeidinga review comment > - fixed typo Changes requested by eosterlund (Committer). Looks like a reasonable fix for now. Thanks for fixing this! src/hotspot/share/cds/heapShared.cpp line 571: > 569: > 570: void HeapShared::clear_root(int index) { > 571: if (CDSConfig::is_using_aot_linked_classes() && 0) { This one looks weird ------------- PR Review: https://git.openjdk.org/leyden/pull/108#pullrequestreview-3763806334 Marked as reviewed by eosterlund (Committer). PR Review: https://git.openjdk.org/leyden/pull/108#pullrequestreview-3764093099 PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2774788951 From heidinga at openjdk.org Mon Feb 9 21:59:00 2026 From: heidinga at openjdk.org (Dan Heidinga) Date: Mon, 9 Feb 2026 21:59:00 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Mon, 9 Feb 2026 17:49:40 GMT, Ioi Lam wrote: >> The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. >> >> Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. >> >> https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 >> >> However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` >> >> So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. >> >> This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. >> >> The AOT compiler only needs the following objects >> >> - a few common exception objects >> - class loaders >> - class mirrors >> - interned strings >> - method handles >> >> Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. >> >> (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) >> >> Notes to reviewers >> - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. >> - This code is added to make sure interned strings and method handles are roots >> >> if (AOTCodeCache::is_dumping_code() && >> (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { >> // Needed by AOT compiler. >> append_root(obj); >> } >> >> - Also some clean up that's not necessary but nice to have: >> - I removed the `DumpedInternedStrings` and replaced it with much simpler code. > > Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: > > - @DanHeidinga review comment > - @DanHeidinga review comment > - @DanHeidinga review comment > - fixed typo Minor comments, overall looks good src/hotspot/share/cds/heapShared.cpp line 256: > 254: // copying the objects into the cache. This will allow the hashcode to be > 255: // dynamically and randomly computed in each production, which generally > 256: // desirable for security reasons. Suggestion: // desirable to make the hashcodes more random between runs. src/hotspot/share/cds/heapShared.cpp line 2468: > 2466: > 2467: ResourceMark rm; > 2468: int len; Suggestion: int len = 0; Nitpick: default values make the code easier to reason about. ------------- PR Review: https://git.openjdk.org/leyden/pull/108#pullrequestreview-3765087080 PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2775979090 PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2775995306 From kvn at openjdk.org Mon Feb 9 21:59:16 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Mon, 9 Feb 2026 21:59:16 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots In-Reply-To: References: Message-ID: <15vpbF-456jPU28bJMHef4pp29LZNX_xh6IdXpqEcmQ=.3ff36187-f1f8-4c4b-b479-3c664c455bc3@github.com> On Fri, 6 Feb 2026 05:50:15 GMT, Ioi Lam wrote: > The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. > > Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. > > https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 > > However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` > > So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. > > This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. > > The AOT compiler only needs the following objects > > - a few common exception objects > - class loaders > - class mirrors > - interned strings > - method handles > > Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. > > (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) > > Notes to reviewers > - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. > - This code is added to make sure interned strings and method handles are roots > > if (AOTCodeCache::is_dumping_code() && > (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { > // Needed by AOT compiler. > append_root(obj); > } > > - Also some clean up that's not necessary but nice to have: > - I removed the `DumpedInternedStrings` and replaced it with much simpler code. @iklam note that `AOTCodeCache::is_dumping_code()` is true only after `AOTCodeCache::init2()` is called when we fully initialized everything for AOT code cache. It is called after `universe_init()` when some oops already been created I think. May be we should use next which checks only flags when adding roots: bool AOTCodeCache::maybe_dumping_code() { return AOTCodeCaching && CDSConfig::is_dumping_final_static_archive(); } Or even next together with `CDSConfig::is_dumping_heap()`: bool AOTCodeCache::is_caching_enabled() { return AOTCodeCaching || AOTStubCaching || AOTAdapterCaching; } ------------- PR Comment: https://git.openjdk.org/leyden/pull/108#issuecomment-3873020322 From iklam at openjdk.org Mon Feb 9 21:59:32 2026 From: iklam at openjdk.org (Ioi Lam) Date: Mon, 9 Feb 2026 21:59:32 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Fri, 6 Feb 2026 20:54:18 GMT, Dan Heidinga wrote: >> Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: >> >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - fixed typo > > src/hotspot/share/cds/heapShared.cpp line 256: > >> 254: // copying the objects into the cache. This will allow the hashcode to be >> 255: // dynamically and randomly computed in each production, which generally >> 256: // desirable for security reasons. > > Suggestion: > > // desirable to make the hashcodes more random between runs. Fixed. > src/hotspot/share/cds/heapShared.cpp line 2468: > >> 2466: >> 2467: ResourceMark rm; >> 2468: int len; > > Suggestion: > > int len = 0; > > Nitpick: default values make the code easier to reason about. Fixed ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2783725331 PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2783728469 From iklam at openjdk.org Mon Feb 9 21:59:45 2026 From: iklam at openjdk.org (Ioi Lam) Date: Mon, 9 Feb 2026 21:59:45 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: <3_UYvfGkvC_45kDmXw7-RT8nXdtRnF2y7RVs0b2-_XQ=.a5ecacc9-dd24-4a0c-8ef1-ab33a307fc88@github.com> On Fri, 6 Feb 2026 15:46:47 GMT, Erik ?sterlund wrote: >> Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: >> >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - fixed typo > > src/hotspot/share/cds/heapShared.cpp line 571: > >> 569: >> 570: void HeapShared::clear_root(int index) { >> 571: if (CDSConfig::is_using_aot_linked_classes() && 0) { > > This one looks weird Oops :-) Fixed. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2774909373 From kvn at openjdk.org Mon Feb 9 21:59:54 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Mon, 9 Feb 2026 21:59:54 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Mon, 9 Feb 2026 17:49:40 GMT, Ioi Lam wrote: >> The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. >> >> Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. >> >> https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 >> >> However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` >> >> So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. >> >> This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. >> >> The AOT compiler only needs the following objects >> >> - a few common exception objects >> - class loaders >> - class mirrors >> - interned strings >> - method handles >> >> Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. >> >> (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) >> >> Notes to reviewers >> - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. >> - This code is added to make sure interned strings and method handles are roots >> >> if (AOTCodeCache::is_dumping_code() && >> (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { >> // Needed by AOT compiler. >> append_root(obj); >> } >> >> - Also some clean up that's not necessary but nice to have: >> - I removed the `DumpedInternedStrings` and replaced it with much simpler code. > > Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: > > - @DanHeidinga review comment > - @DanHeidinga review comment > - @DanHeidinga review comment > - fixed typo src/hotspot/share/cds/heapShared.cpp line 658: > 656: AOTArtifactFinder::add_cached_class(method_holder); > 657: } > 658: } else if (AOTCodeCache::is_dumping_code() && I suggest to use next check for possible any AOT code caching (see my other comment): if (CDSConfig::is_dumping_heap() && AOTCodeCache::is_caching_enabled) ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2783797511 From ioi.lam at oracle.com Tue Feb 10 01:02:36 2026 From: ioi.lam at oracle.com (ioi.lam at oracle.com) Date: Mon, 9 Feb 2026 17:02:36 -0800 Subject: Crash in ArchiveHeapWriter::compute_ptrmap when archiving heap objects of excluded classes In-Reply-To: References: Message-ID: <27dcea30-0c1a-45f8-ad05-16f966984542@oracle.com> Hi Anton, Thanks for the bug report. I have created https://bugs.openjdk.org/browse/JDK-8377512 (I am not sure if you have permission to edit the bug, but I think some of your colleagues at Azul should have permission). Do you have more information, such as an hs_err file? My guess is we have a?ResolvedMethodName?object that points to a method of an excluded class void HeapShared::mark_native_pointers(oop orig_obj) { ? if (java_lang_Class::is_instance(orig_obj)) { ? ? ArchiveHeapWriter::mark_native_pointer(orig_obj, java_lang_Class::klass_offset()); ? ? ArchiveHeapWriter::mark_native_pointer(orig_obj, java_lang_Class::array_klass_offset()); ? } else if (java_lang_invoke_ResolvedMethodName::is_instance(orig_obj)) { ? ? ArchiveHeapWriter::mark_native_pointer(orig_obj, java_lang_invoke_ResolvedMethodName::vmtarget_offset()); ? } } However, we should exclude all resolved lambda sites that reference an excluded class. As a result, we should never archive such a?ResolvedMethodName: ?0 AOTConstantPoolResolver::check_methodtype_signature ?1 AOTConstantPoolResolver::check_lambda_metafactory_methodtype_arg ?2 AOTConstantPoolResolver::is_indy_resolution_deterministic ?3 AOTConstantPoolResolver::is_resolution_deterministic ?4 ConstantPoolCache::remove_resolved_indy_entries_if_non_deterministic ?5 ConstantPoolCache::remove_unshareable_info ?6 ConstantPool::remove_unshareable_entries ?7 ConstantPool::remove_unshareable_info ?8 ArchiveBuilder::make_klasses_shareable ?9 VM_PopulateDumpSharedSpace::doit 10 VM_Operation::evaluate We have test cases in here: LambdaContainsOldInf.java: output.shouldMatch("Cannot aot-resolve Lambda proxy because OldProvider is excluded"); resolvedConstants/ResolvedConstants.java: ?.shouldContain("Cannot aot-resolve Lambda proxy of interface type InterfaceWithClinit") resolvedConstants/AOTLinkedLambdas.java: dumpOut.shouldContain("Can aot-resolve Lambda proxy of interface type IA"); If you can find a way to reproduce the problem it would be great. You can find more information about the failure with this: diff --git a/src/hotspot/share/cds/archiveHeapWriter.cpp b/src/hotspot/share/cds/archiveHeapWriter.cpp index ee1e334e84b..7f68e648431 100644 --- a/src/hotspot/share/cds/archiveHeapWriter.cpp +++ b/src/hotspot/share/cds/archiveHeapWriter.cpp @@ -754,6 +754,14 @@ void ArchiveHeapWriter::compute_ptrmap(ArchiveHeapInfo* heap_info) { ? ? ?Metadata** buffered_field_addr = requested_addr_to_buffered_addr(requested_field_addr); ? ? ?Metadata* native_ptr = *buffered_field_addr; ? ? ?guarantee(native_ptr != nullptr, "sanity"); +? ? if (!ArchiveBuilder::current()->has_been_buffered((address)native_ptr)) { +? ? ? ResourceMark rm; +? ? ? tty->print_cr("Marking native pointer for oop %p (type = %s, offset = %d)", +? ? ? ? ? ? ? ? ? ? cast_from_oop(src_obj), src_obj->klass()->external_name(), field_offset); +? ? ? src_obj->print_on(tty); +? ? ? tty->cr(); +? ? } + Thanks - Ioi On 2/9/26 7:24 AM, Anton Voznia wrote: > > Hi all, > > > I have a question about a potential bug in AOT heap archiving. > > > We observe a crash (guarantee failure) while creating the AOT cache > with JDK 25, at: > > _https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/archiveHeapWriter.cpp#L757_ > > > The failure happens because: > > get_buffered_addr(src_addr) == nullptr > > > What means that a native pointer is present in _native_pointers but > there is no corresponding buffered address, even though the > SourceObjInfo was successfully added to _src_obj_table. > > The failing check is: > > guarantee(ArchiveBuilder::current()->has_been_buffered((address)native_ptr), > > ? ? ? ? "Metadata %p should have been archived", native_ptr); > > > further investigation showed that we collect pointers into > _native_pointers without checking whether the corresponding class was > excluded (via class exclusion or link-time verification failures): > > _https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/heapShared.cpp#L308_ > > > However, the SourceObjInfo::_buffered_addr seems to be assigned only > for objects that are actually copied (i.e., not excluded). > > > In particular, this SourceObjInfo didn?t end up in _ro_src_objs or > _rw_src_objs because it didn?t satisfy the following condition: > > _https://github.com/openjdk/jdk25u-dev/blob/40ec273de548b47fc08d02bbe7c1cb3b48ebad17/src/hotspot/share/cds/archiveBuilder.cpp#L467_ > > > if (created && src_info.should_copy()) { > > ? if (read_only) { > > ? ? _ro_src_objs.append(p); > > ? } else { > > ? ? _rw_src_objs.append(p); > > ? } > > ? return true; // Need to recurse into this ref only if we are copying it > > } > > > created is true (object exists in _src_obj_table), but > src_info.should_copy() is false because _follow_mode is set_to_null > (not make_a_copy). > > > So it looks like we may end up with an item in _native_pointers for > which we will never assign a buffered address. > > However, later we expect every item in _native_pointers to have one > buffered address. > > > Is this logic correct, or am I missing a step that guarantees > buffering for all _native_pointers items? > > It seems, we have to check for a class exclusion before adding into > _native_pointers. > > > Unfortunately, I wasn?t able to reproduce the issue locally. > > > Thanks and best regards, > Anton Voznia > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From iklam at openjdk.org Tue Feb 10 02:00:19 2026 From: iklam at openjdk.org (Ioi Lam) Date: Tue, 10 Feb 2026 02:00:19 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: <_Br8p8weQHIg4ny9ORBBS_JuYCCP29xRJDZN8PbL650=.725f28e4-856c-4b9b-87ef-07db0e12ecd6@github.com> On Mon, 9 Feb 2026 17:45:53 GMT, Vladimir Kozlov wrote: >> Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: >> >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - fixed typo > > src/hotspot/share/cds/heapShared.cpp line 658: > >> 656: AOTArtifactFinder::add_cached_class(method_holder); >> 657: } >> 658: } else if (AOTCodeCache::is_dumping_code() && > > I suggest to use next check for possible any AOT code caching (see my other comment): > > if (CDSConfig::is_dumping_heap() && AOTCodeCache::is_caching_enabled) This code is not called during regular oop allocation. Instead, it's called when an oop is copied into the AOT cache. We call `AOTCodeCache::is_dumping_code()` in another places as well: https://github.com/openjdk/leyden/blob/10172534fc92bc58dcf7eae6145c781ec50ffabc/src/hotspot/share/cds/aotMetaspace.cpp#L1211 Both cases happen after `AOTCodeCache::init2()` has been called, so `AOTCodeCache::is_dumping_code()` should return the correct value. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2785393675 From kvn at openjdk.org Tue Feb 10 02:23:01 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 10 Feb 2026 02:23:01 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: <_Br8p8weQHIg4ny9ORBBS_JuYCCP29xRJDZN8PbL650=.725f28e4-856c-4b9b-87ef-07db0e12ecd6@github.com> References: <_Br8p8weQHIg4ny9ORBBS_JuYCCP29xRJDZN8PbL650=.725f28e4-856c-4b9b-87ef-07db0e12ecd6@github.com> Message-ID: On Tue, 10 Feb 2026 01:57:22 GMT, Ioi Lam wrote: >> src/hotspot/share/cds/heapShared.cpp line 658: >> >>> 656: AOTArtifactFinder::add_cached_class(method_holder); >>> 657: } >>> 658: } else if (AOTCodeCache::is_dumping_code() && >> >> I suggest to use next check for possible any AOT code caching (see my other comment): >> >> if (CDSConfig::is_dumping_heap() && AOTCodeCache::is_caching_enabled) > > This code is not called during regular oop allocation. Instead, it's called when an oop is copied into the AOT cache. > > We call `AOTCodeCache::is_dumping_code()` in another places as well: > > https://github.com/openjdk/leyden/blob/10172534fc92bc58dcf7eae6145c781ec50ffabc/src/hotspot/share/cds/aotMetaspace.cpp#L1211 > > Both cases happen after `AOTCodeCache::init2()` has been called, so `AOTCodeCache::is_dumping_code()` should return the correct value. It depends when you copy oops into AOT cache. It is fine to use this check If you copy oops before we dump AOT code (at the code lines you pointed). But it is not fine after AOT code is dumped. At the line 1219 we call `AOTCodeCache::close();` which dumps AOT code and deallocates cache. Code dumping is called from `~AOTCodeCache()` destructor. `AOTCodeCache::is_dumping_code()` will return `false` after that. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2785441140 From iklam at openjdk.org Tue Feb 10 02:46:23 2026 From: iklam at openjdk.org (Ioi Lam) Date: Tue, 10 Feb 2026 02:46:23 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: <_Br8p8weQHIg4ny9ORBBS_JuYCCP29xRJDZN8PbL650=.725f28e4-856c-4b9b-87ef-07db0e12ecd6@github.com> Message-ID: On Tue, 10 Feb 2026 02:20:04 GMT, Vladimir Kozlov wrote: >> This code is not called during regular oop allocation. Instead, it's called when an oop is copied into the AOT cache. >> >> We call `AOTCodeCache::is_dumping_code()` in another places as well: >> >> https://github.com/openjdk/leyden/blob/10172534fc92bc58dcf7eae6145c781ec50ffabc/src/hotspot/share/cds/aotMetaspace.cpp#L1211 >> >> Both cases happen after `AOTCodeCache::init2()` has been called, so `AOTCodeCache::is_dumping_code()` should return the correct value. > > It depends when you copy oops into AOT cache. It is fine to use this check If you copy oops before we dump AOT code (at the code lines you pointed). > > But it is not fine after AOT code is dumped. At the line 1219 we call `AOTCodeCache::close();` which dumps AOT code and deallocates cache. Code dumping is called from `~AOTCodeCache()` destructor. `AOTCodeCache::is_dumping_code()` will return `false` after that. The oop copying is done before we dump the AOT code. The new call to `AOTCodeCache::is_dumping_code()` happens before the other call to the same function in aotMetaspace.cpp. Eventually, we should change the order so that AOT code is generated before we collect all artifacts (metaspace objects, oops, and code), but this would be a drastic change so we should delay that after initial AOT code JEP is integrated. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2785503214 From kvn at openjdk.org Tue Feb 10 03:35:02 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 10 Feb 2026 03:35:02 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Mon, 9 Feb 2026 21:58:32 GMT, Ioi Lam wrote: >> The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. >> >> Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. >> >> https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 >> >> However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` >> >> So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. >> >> This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. >> >> The AOT compiler only needs the following objects >> >> - a few common exception objects >> - class loaders >> - class mirrors >> - interned strings >> - method handles >> >> Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. >> >> (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) >> >> Notes to reviewers >> - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. >> - This code is added to make sure interned strings and method handles are roots >> >> if (AOTCodeCache::is_dumping_code() && >> (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { >> // Needed by AOT compiler. >> append_root(obj); >> } >> >> - Also some clean up that's not necessary but nice to have: >> - I removed the `DumpedInternedStrings` and replaced it with much simpler code. > > Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: > > - @DanHeidinga review comment > - @DanHeidinga review comment > - @DanHeidinga review comment > - fixed typo Marked as reviewed by kvn (Committer). ------------- PR Review: https://git.openjdk.org/leyden/pull/108#pullrequestreview-3776541036 From kvn at openjdk.org Tue Feb 10 03:35:04 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 10 Feb 2026 03:35:04 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: <_Br8p8weQHIg4ny9ORBBS_JuYCCP29xRJDZN8PbL650=.725f28e4-856c-4b9b-87ef-07db0e12ecd6@github.com> Message-ID: <2P3hW59pPf8ExEH58AaCg57QP0EdFyShy6Ruyo-jOkk=.7636803b-aee0-47d3-988a-8115a998327d@github.com> On Tue, 10 Feb 2026 02:43:32 GMT, Ioi Lam wrote: >> It depends when you copy oops into AOT cache. It is fine to use this check If you copy oops before we dump AOT code (at the code lines you pointed). >> >> But it is not fine after AOT code is dumped. At the line 1219 we call `AOTCodeCache::close();` which dumps AOT code and deallocates cache. Code dumping is called from `~AOTCodeCache()` destructor. `AOTCodeCache::is_dumping_code()` will return `false` after that. > > The oop copying is done before we dump the AOT code. The new call to `AOTCodeCache::is_dumping_code()` happens before the other call to the same function in aotMetaspace.cpp. > > Eventually, we should change the order so that AOT code is generated before we collect all artifacts (metaspace objects, oops, and code), but this would be a drastic change so we should delay that after initial AOT code JEP is integrated. Okay. Good. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/108#discussion_r2785610969 From iklam at openjdk.org Tue Feb 10 05:57:53 2026 From: iklam at openjdk.org (Ioi Lam) Date: Tue, 10 Feb 2026 05:57:53 GMT Subject: git: openjdk/leyden: premain: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots Message-ID: <460bff29-6a2b-409a-9c61-13ee327e6e0e@openjdk.org> Changeset: 1f016c2b Branch: premain Author: Ioi Lam Date: 2026-02-10 05:55:49 +0000 URL: https://git.openjdk.org/leyden/commit/1f016c2b5b97f9f0fddb631747d529124e9667b2 8377339: Implement AOTCacheAccess::get_archived_object using heap roots Reviewed-by: eosterlund, kvn ! src/hotspot/share/cds/aotCacheAccess.cpp ! src/hotspot/share/cds/aotMappedHeapLoader.cpp ! src/hotspot/share/cds/aotMappedHeapLoader.hpp ! src/hotspot/share/cds/aotMappedHeapWriter.cpp ! src/hotspot/share/cds/aotMappedHeapWriter.hpp ! src/hotspot/share/cds/aotStreamedHeapWriter.cpp ! src/hotspot/share/cds/aotStreamedHeapWriter.hpp ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/cds/heapShared.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/code/aotCodeCache.cpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp From iklam at openjdk.org Tue Feb 10 05:58:32 2026 From: iklam at openjdk.org (Ioi Lam) Date: Tue, 10 Feb 2026 05:58:32 GMT Subject: RFR: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots [v2] In-Reply-To: References: Message-ID: On Fri, 6 Feb 2026 16:46:00 GMT, Erik ?sterlund wrote: >> Ioi Lam has updated the pull request incrementally with four additional commits since the last revision: >> >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - @DanHeidinga review comment >> - fixed typo > > Looks like a reasonable fix for now. Thanks for fixing this! Thanks @fisk @vnkozlov @DanHeidinga for the review. ------------- PR Comment: https://git.openjdk.org/leyden/pull/108#issuecomment-3875488156 From iklam at openjdk.org Tue Feb 10 05:58:34 2026 From: iklam at openjdk.org (Ioi Lam) Date: Tue, 10 Feb 2026 05:58:34 GMT Subject: Integrated: 8377339: Implement AOTCacheAccess::get_archived_object using heap roots In-Reply-To: References: Message-ID: On Fri, 6 Feb 2026 05:50:15 GMT, Ioi Lam wrote: > The API `oop AOTCacheAccess::get_archived_object(int)` is used by the AOT compiler to access heap objects in the AOT cache. > > Because the objects can move in the production run, there's currently a complicated way to keep them alive using OopHandles. > > https://github.com/openjdk/leyden/blob/6ce1832147ef3f01602b8fac02160038422a77bf/src/hotspot/share/cds/heapShared.cpp#L545-L610 > > However, we already have a mechanism for this: `oop HeapShared::get_root(int index, ...)` > > So we just need to make sure that all oops needed by the AOT compiler are all stored as heap roots. > > This PR is intended to provide an acceptable solution in the short run to be used by the initial AOT compiler integration into the mainline. > > The AOT compiler only needs the following objects > > - a few common exception objects > - class loaders > - class mirrors > - interned strings > - method handles > > Most of these objects are in the roots already. We just need to add interned strings and method handles into the heap roots. > > (In the future, we should move the AOT compilation before we dump the heap. This way we know exactly what oops should be stored into the heap roots.) > > Notes to reviewers > - `HeapShared::archived_object_cache()` can now survive GCs that might happen during AOT compilation. I added a new function `HeapShared::archived_object_cache_hash()` with comments about how it uses `oop::identity_hash()`. > - This code is added to make sure interned strings and method handles are roots > > if (AOTCodeCache::is_dumping_code() && > (java_lang_invoke_MethodHandle::is_instance(obj) || is_interned_string(obj))) { > // Needed by AOT compiler. > append_root(obj); > } > > - Also some clean up that's not necessary but nice to have: > - I removed the `DumpedInternedStrings` and replaced it with much simpler code. This pull request has now been integrated. Changeset: 1f016c2b Author: Ioi Lam URL: https://git.openjdk.org/leyden/commit/1f016c2b5b97f9f0fddb631747d529124e9667b2 Stats: 349 lines in 13 files changed: 83 ins; 202 del; 64 mod 8377339: Implement AOTCacheAccess::get_archived_object using heap roots Reviewed-by: eosterlund, kvn ------------- PR: https://git.openjdk.org/leyden/pull/108 From kvn at openjdk.org Wed Feb 11 10:02:40 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Wed, 11 Feb 2026 10:02:40 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: On Tue, 10 Feb 2026 21:26:09 GMT, Vladimir Kozlov wrote: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM Note, `compiler/inlining/TestSubtypeCheckTypeInfo.java` fails in premain repo too. I filed bug[JDK-8377618]( https://bugs.openjdk.org/browse/JDK-8377618) ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3881189097 From kvn at openjdk.org Wed Feb 11 10:02:34 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Wed, 11 Feb 2026 10:02:34 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used Message-ID: Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k Screenshot 2026-02-10 at 1 25 30?PM Screenshot 2026-02-10 at 1 22 24?PM ... Screenshot 2026-02-10 at 1 24 09?PM ------------- Commit messages: - [Leyden] Improve peak performance when AOT code is used Changes: https://git.openjdk.org/leyden/pull/110/files Webrev: https://webrevs.openjdk.org/?repo=leyden&pr=110&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8377597 Stats: 223 lines in 17 files changed: 213 ins; 2 del; 8 mod Patch: https://git.openjdk.org/leyden/pull/110.diff Fetch: git fetch https://git.openjdk.org/leyden.git pull/110/head:pull/110 PR: https://git.openjdk.org/leyden/pull/110 From vladimir.kozlov at oracle.com Wed Feb 11 17:21:31 2026 From: vladimir.kozlov at oracle.com (Vladimir Kozlov) Date: Wed, 11 Feb 2026 09:21:31 -0800 Subject: Patch to improve peak perfromance when AOT code is used. Message-ID: <2889b904-c77a-48d9-8554-06a04beac316@oracle.com> Hi Aleksey, I published AOT PR to improve peak performance in Leyden premain. Please test it when you have time. Thanks, Vladimir K From shipilev at amazon.de Wed Feb 11 17:36:20 2026 From: shipilev at amazon.de (Shipilev, Aleksey) Date: Wed, 11 Feb 2026 17:36:20 +0000 Subject: Patch to improve peak perfromance when AOT code is used. In-Reply-To: <2889b904-c77a-48d9-8554-06a04beac316@oracle.com> References: <2889b904-c77a-48d9-8554-06a04beac316@oracle.com> Message-ID: <7F8842AD-9060-4928-96FB-7E765410F124@amazon.de> > I published AOT PR to improve peak performance in Leyden premain. > Please test it when you have time. Yes, I saw it, great work! It is on my TODO list to test. -Aleksey Amazon Web Services Development Center Germany GmbH Tamara-Danz-Str. 13 10243 Berlin Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B Sitz: Berlin Ust-ID: DE 365 538 597 From heidinga at openjdk.org Wed Feb 11 21:28:14 2026 From: heidinga at openjdk.org (Dan Heidinga) Date: Wed, 11 Feb 2026 21:28:14 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: On Tue, 10 Feb 2026 21:26:09 GMT, Vladimir Kozlov wrote: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > The counts collected during training run are scaled based on hyperbolic saturation curve formula: > > > int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); > > where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. > This scaling limits threshold to 100K for higher counts. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM src/hotspot/share/ci/ciMethod.cpp line 1142: > 1140: return CURRENT_ENV->get_method_counters(method_counters); > 1141: } > 1142: return nullptr; The `CHECK_NULL` macro says if there's a pending exception, return null. Does that imply that this function has a contract that if it returns `nullptr`, there will also be a pending exception? src/hotspot/share/ci/ciObjectFactory.cpp line 426: > 424: } else if (o->is_methodCounters()) { > 425: // Hold methodHandle alive - might not be necessary ??? > 426: methodHandle h_m(THREAD, ((MethodCounters*)o)->method()); Either `o` is kept alive already by something else, or the `methodHandle` here is insufficient. If `o` is not already kept alive by something, it could be GC'd before the `methodHandle` is created and we'd be operating on invalid data. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2795559419 PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2795578433 From kvn at openjdk.org Thu Feb 12 00:18:28 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 00:18:28 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: <595CyPy0cj_Bqn-uvpj-JrbKnCHp_6Pz0YpiVgjK8Mw=.dc760282-103b-42e3-b6ec-a4546c8645eb@github.com> On Wed, 11 Feb 2026 21:13:29 GMT, Dan Heidinga wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > src/hotspot/share/ci/ciMethod.cpp line 1142: > >> 1140: return CURRENT_ENV->get_method_counters(method_counters); >> 1141: } >> 1142: return nullptr; > > The `CHECK_NULL` macro says if there's a pending exception, return null. Does that imply that this function has a contract that if it returns `nullptr`, there will also be a pending exception? `Method::build_method_counters()` clears PENDING_EXCEPTION. So you are right, we should just pass tread there. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2796165595 From kvn at openjdk.org Thu Feb 12 00:37:49 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 00:37:49 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: On Tue, 10 Feb 2026 21:26:09 GMT, Vladimir Kozlov wrote: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > The counts collected during training run are scaled based on hyperbolic saturation curve formula: > > > int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); > > where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. > This scaling limits threshold to 100K for higher counts. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM Thank you, @DanHeidinga, for you comments. I think I answered them. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3887993524 From kvn at openjdk.org Thu Feb 12 00:37:51 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 00:37:51 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: <3NW6IdDEmq4JU3KjRkj6QeGBisOVgUSeNmnY4hg2N2E=.676a128c-0464-470e-b81d-5ecda30fb785@github.com> On Wed, 11 Feb 2026 21:18:40 GMT, Dan Heidinga wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > src/hotspot/share/ci/ciObjectFactory.cpp line 426: > >> 424: } else if (o->is_methodCounters()) { >> 425: // Hold methodHandle alive - might not be necessary ??? >> 426: methodHandle h_m(THREAD, ((MethodCounters*)o)->method()); > > Either `o` is kept alive already by something else, or the `methodHandle` here is insufficient. > > If `o` is not already kept alive by something, it could be GC'd before the `methodHandle` is created and we'd be operating on invalid data. I think MethodData and MethodCounters are only cleared when their holder Method is cleared. Also I don't need MH here (and dubious comment) because we already created MH in caller `ciMethod::ensure_method_counters()` ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2796207930 From kvn at openjdk.org Thu Feb 12 01:43:27 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 01:43:27 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > The counts collected during training run are scaled based on hyperbolic saturation curve formula: > > > int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); > > where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. > This scaling limits threshold to 100K for higher counts. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: Address comments ------------- Changes: - all: https://git.openjdk.org/leyden/pull/110/files - new: https://git.openjdk.org/leyden/pull/110/files/33bf0e01..242530de Webrevs: - full: https://webrevs.openjdk.org/?repo=leyden&pr=110&range=01 - incr: https://webrevs.openjdk.org/?repo=leyden&pr=110&range=00-01 Stats: 3 lines in 2 files changed: 0 ins; 1 del; 2 mod Patch: https://git.openjdk.org/leyden/pull/110.diff Fetch: git fetch https://git.openjdk.org/leyden.git pull/110/head:pull/110 PR: https://git.openjdk.org/leyden/pull/110 From heidinga at openjdk.org Thu Feb 12 14:19:16 2026 From: heidinga at openjdk.org (Dan Heidinga) Date: Thu, 12 Feb 2026 14:19:16 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments src/hotspot/share/ci/ciObjectFactory.cpp line 422: > 420: } else if (o->is_methodData()) { > 421: // Hold methodHandle alive - might not be necessary ??? > 422: methodHandle h_m(THREAD, ((MethodData*)o)->method()); Can you make the same change here to remove the unnecessary `methodHandle` here too? ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2799145655 From shade at openjdk.org Thu Feb 12 15:20:42 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 15:20:42 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: <74vdvh1ORgy0bl5-3DRnqim33uNBgfXpG4YlqnQjibE=.7bca1c53-fe6c-4184-8928-fe454562dab7@github.com> On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments One immediate question I have about this: does this mean AOT code now has a _multi-threaded contention_ on the counter updated at method entry? ------------- PR Review: https://git.openjdk.org/leyden/pull/110#pullrequestreview-3791662378 From shade at openjdk.org Thu Feb 12 17:05:31 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 17:05:31 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments This *does* improve peak performance for my tests _for sure_, but still not fully there compared to non-AOT config, alas: Baseline: Compiled 200 files 100 times in 33522 ms ... 94 = 30.483 ms 6.561 files per ms 95 = 30.565 ms 6.543 files per ms 96 = 30.462 ms 6.565 files per ms 97 = 30.007 ms 6.665 files per ms 98 = 29.467 ms 6.787 files per ms 99 = 30.113 ms 6.642 files per ms AOT: Compiled 200 files 100 times in 33544 ms ... 94 = 32.259 ms 6.200 files per ms 95 = 32.211 ms 6.209 files per ms 96 = 32.310 ms 6.190 files per ms 97 = 32.454 ms 6.163 files per ms 98 = 32.319 ms 6.188 files per ms 99 = 32.237 ms 6.204 files per ms ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892151777 From shade at openjdk.org Thu Feb 12 17:16:18 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 17:16:18 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: <6SGV2fy_U6rouIGqmCeDK5Myp-zLZftIX6h8usOMEGg=.bfa8b2b9-d351-4534-beaf-321d317019dc@github.com> On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments > This _does_ improve peak performance for my tests _for sure_, but still not fully there compared to non-AOT config, alas: ...which is a bit weird, because I do see this work well as recompilation policy solution: the bulk of the code is replaced by T4 by the end of the run: plot-8c-aot-after ...compare with the same AOT mode before: plot-8c-aot-before This is 8 cores available for the run. The same configuration, but in JIT-only mode, for reference: plot-8c-jit ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892228446 From kvn at openjdk.org Thu Feb 12 17:32:34 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:32:34 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments > One immediate question I have about this: does this mean AOT code now has a multi-threaded contention on the counter updated at method entry? Counters increment is not synchronized and not atomic. Which is similar to other profiling counters we have. The only contention is present when compilation request is processed to create compilation task and put it on queue (that is synchronized). To request only once from AOT code another counter is used and checked for =0 when calling to CompileBroker. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892291202 From shade at openjdk.org Thu Feb 12 17:32:35 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 17:32:35 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: <4-xv-U6FEkExOrVVX9Jymlzzq_zSt_VN7HwUeIj-csE=.c6818651-96d8-4d6a-a5ca-b126900ba3b9@github.com> On Thu, 12 Feb 2026 17:24:28 GMT, Vladimir Kozlov wrote: > Counters increment is not synchronized and not atomic. Which is similar to other profiling counters we have. Yes, and where we _do_ have a counter contention problem. In mainline, it is constrained to T2/T3 code, which is more or less transient. Alas, doing the same in A4 would expose this problem to "optimal" code. Andrew is working on [JDK-8372701](https://bugs.openjdk.org/browse/JDK-8372701), which might be of benefit there. But none of that code deals with counter updates on C2 side, so there are some obstacles to overcome. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892306814 From kvn at openjdk.org Thu Feb 12 17:32:36 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:32:36 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: <6SGV2fy_U6rouIGqmCeDK5Myp-zLZftIX6h8usOMEGg=.bfa8b2b9-d351-4534-beaf-321d317019dc@github.com> References: <6SGV2fy_U6rouIGqmCeDK5Myp-zLZftIX6h8usOMEGg=.bfa8b2b9-d351-4534-beaf-321d317019dc@github.com> Message-ID: On Thu, 12 Feb 2026 17:13:58 GMT, Aleksey Shipilev wrote: > ...which is a bit weird, because I do see this work well as recompilation policy solution: the bulk of the code is replaced by T4 by the end of the run: @shipilev, thank you for this data. We also observed something similar: almost all AOT code is replaced but still small regression 5-10% is present at peak. I/we suspect it could be for several reasons - mostly because new C2 code is not optimal as without AOT. It could be due to different inlining decisions or other things. We will investigate this after this PR. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892321766 From shade at openjdk.org Thu Feb 12 17:42:31 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 17:42:31 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments As expected, on a very CPU constrained environment, e.g. with only 1 core, where application competes with JIT (re-)compilation, new mode significantly regresses AOT mode, and gets close to not having AOT mode at all. AOT current: plot-1c-aot-before AOT new: plot-1c-aot-after JIT: plot-1c-jit ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892367561 From kvn at openjdk.org Thu Feb 12 17:45:41 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:45:41 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments > Yes, and where we do have a counter contention problem. In mainline, it is constrained to T2/T3 code, which is more or less transient. Alas, doing the same in A4 would expose this problem to "optimal" code. But A4 is replaced with T4 which does not have this counter. So it slightly affects only AOT code which is used only during startup. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892399656 From kvn at openjdk.org Thu Feb 12 17:50:47 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:50:47 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v3] In-Reply-To: References: Message-ID: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > The counts collected during training run are scaled based on hyperbolic saturation curve formula: > > > int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); > > where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. > This scaling limits threshold to 100K for higher counts. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: An other MH removed ------------- Changes: - all: https://git.openjdk.org/leyden/pull/110/files - new: https://git.openjdk.org/leyden/pull/110/files/242530de..0f54a341 Webrevs: - full: https://webrevs.openjdk.org/?repo=leyden&pr=110&range=02 - incr: https://webrevs.openjdk.org/?repo=leyden&pr=110&range=01-02 Stats: 2 lines in 1 file changed: 0 ins; 1 del; 1 mod Patch: https://git.openjdk.org/leyden/pull/110.diff Fetch: git fetch https://git.openjdk.org/leyden.git pull/110/head:pull/110 PR: https://git.openjdk.org/leyden/pull/110 From shade at openjdk.org Thu Feb 12 17:50:48 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 17:50:48 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 17:42:32 GMT, Vladimir Kozlov wrote: > But A4 is replaced with T4 which does not have this counter. So it slightly affects only AOT code which is used only during startup. We differ on the "slightly", I think. We have seen 10x performance hits on unlucky T3 contentions. Are we sure we can afford that kind of slowdown for A4 code, especially when A4 -> T4 replacement can take tens of seconds? I am not so sure at all. But really I think it is not a fundamental design problem, it is an engineering problem: I believe this counter should be at very least probabilistic to manage contention, like in [JDK-8372701](https://bugs.openjdk.org/browse/JDK-8372701). ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892430178 From kvn at openjdk.org Thu Feb 12 17:50:51 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:50:51 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 14:16:52 GMT, Dan Heidinga wrote: >> Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: >> >> Address comments > > src/hotspot/share/ci/ciObjectFactory.cpp line 422: > >> 420: } else if (o->is_methodData()) { >> 421: // Hold methodHandle alive - might not be necessary ??? >> 422: methodHandle h_m(THREAD, ((MethodData*)o)->method()); > > Can you make the same change here to remove the unnecessary `methodHandle` here too? Done. ------------- PR Review Comment: https://git.openjdk.org/leyden/pull/110#discussion_r2800236160 From kvn at openjdk.org Thu Feb 12 17:53:22 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 17:53:22 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: <-4wEU9I4kJs3ZWkq1xPIYlip2aF59R2-Xz_KYlW2hmQ=.079203ac-555f-433a-be93-19a63615fbe6@github.com> On Thu, 12 Feb 2026 01:43:27 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > Address comments I agree that we can use randomized approach for this counter too. I am not against it and we can do it later. But for AOT code JEP I will use this current code. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892456537 From shade at openjdk.org Thu Feb 12 18:06:30 2026 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 12 Feb 2026 18:06:30 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v3] In-Reply-To: References: Message-ID: <3jD-OEqvY634zzNmZowFiYCDjmCQDwi27_Z0zEjuMBU=.5c0357eb-c33b-472f-8d77-110bce948d7b@github.com> On Thu, 12 Feb 2026 17:50:47 GMT, Vladimir Kozlov wrote: >> Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. >> >> Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. >> >> The counts collected during training run are scaled based on hyperbolic saturation curve formula: >> >> >> int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); >> >> where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. >> This scaling limits threshold to 100K for higher counts. >> >> Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) >> >> >> java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k >> >> >> Screenshot 2026-02-10 at 1 25 30?PM >> >> >> Screenshot 2026-02-10 at 1 22 24?PM >> >> ... >> Screenshot 2026-02-10 at 1 24 09?PM > > Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: > > An other MH removed All right, based on performance results I am seeing so far, I do not mind this going into `premain`. But I reserve the right to complain about how it works and/or suggest more followups, including maybe significantly reworking its heuristics :) ------------- Marked as reviewed by shade (Committer). PR Review: https://git.openjdk.org/leyden/pull/110#pullrequestreview-3792711741 From kvn at openjdk.org Thu Feb 12 18:35:42 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 18:35:42 GMT Subject: RFR: 8377597: [Leyden] Improve peak performance when AOT code is used [v2] In-Reply-To: References: Message-ID: On Thu, 12 Feb 2026 17:47:12 GMT, Aleksey Shipilev wrote: >>> Yes, and where we do have a counter contention problem. In mainline, it is constrained to T2/T3 code, which is more or less transient. Alas, doing the same in A4 would expose this problem to "optimal" code. >> >> But A4 is replaced with T4 which does not have this counter. So it slightly affects only AOT code which is used only during startup. > >> But A4 is replaced with T4 which does not have this counter. So it slightly affects only AOT code which is used only during startup. > > We differ on the "slightly", I think. We have seen 10x performance hits on unlucky T3 contentions. Are we sure we can afford that kind of slowdown for A4 code, especially when A4 -> T4 replacement can take tens of seconds? I am not so sure at all. > > But really I think it is not a fundamental design problem, it is an engineering problem: I believe this counter should be at very least probabilistic to manage contention, like in [JDK-8372701](https://bugs.openjdk.org/browse/JDK-8372701). Thank you @shipilev >All right, based on performance results I am seeing so far, I do not mind this going into premain. But I reserve the right to complain about how it works and/or suggest more followups, including maybe significantly reworking its heuristics :) Yes, suggestions are welcome. ------------- PR Comment: https://git.openjdk.org/leyden/pull/110#issuecomment-3892694682 From kvn at openjdk.org Thu Feb 12 18:35:43 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 18:35:43 GMT Subject: Integrated: 8377597: [Leyden] Improve peak performance when AOT code is used In-Reply-To: References: Message-ID: <6vF3yW27CQDSP0iNhOpGKuGNTE6_Il_Wa0WFCPN-5fc=.3383ba66-596f-405d-aeec-0cfc6028783a@github.com> On Tue, 10 Feb 2026 21:26:09 GMT, Vladimir Kozlov wrote: > Currently some AOT code could be used for long time after startup. It could case peak performance regression because AOT code is conservative and have several restrictions on optimizations it can do. > > Introduce AOT code entry counter to request JIT compilation and replace AOT code after some threshold is reached. Use invocation count of C2 code during training run as threshold for AOT code replacement during production run. > > The counts collected during training run are scaled based on hyperbolic saturation curve formula: > > > int scaled_limit = (AOTCodeInvokeBase + limit / (1.0 + limit / (100000.0 * AOTCodeInvokeScale))); > > where `AOTCodeInvokeBase` (default 100.) and `AOTCodeInvokeScale` (default 1.) are diagnostic flags. > This scaling limits threshold to 100K for higher counts. > > Here some results running JavacBanch JMH benchmark on linux-x64 (numactl -C 0-3 -m 0`) > > > java -jar javac.jar -f 1 -bm ss -wi 0 -i 100 JavacBench.helloWorld1k > > > Screenshot 2026-02-10 at 1 25 30?PM > > > Screenshot 2026-02-10 at 1 22 24?PM > > ... > Screenshot 2026-02-10 at 1 24 09?PM This pull request has now been integrated. Changeset: 9f150d3c Author: Vladimir Kozlov URL: https://git.openjdk.org/leyden/commit/9f150d3cf0b16de3e9c3eb2f2b1e98b2ee122fbe Stats: 225 lines in 17 files changed: 212 ins; 3 del; 10 mod 8377597: [Leyden] Improve peak performance when AOT code is used Reviewed-by: shade ------------- PR: https://git.openjdk.org/leyden/pull/110 From kvn at openjdk.org Thu Feb 12 18:45:49 2026 From: kvn at openjdk.org (Vladimir Kozlov) Date: Thu, 12 Feb 2026 18:45:49 GMT Subject: git: openjdk/leyden: premain: 8377597: [Leyden] Improve peak performance when AOT code is used Message-ID: <2fe91555-ed42-4208-bdf3-61b972f70248@openjdk.org> Changeset: 9f150d3c Branch: premain Author: Vladimir Kozlov Date: 2026-02-12 18:33:25 +0000 URL: https://git.openjdk.org/leyden/commit/9f150d3cf0b16de3e9c3eb2f2b1e98b2ee122fbe 8377597: [Leyden] Improve peak performance when AOT code is used Reviewed-by: shade ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/ci/ciEnv.hpp ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/ci/ciMethod.hpp ! src/hotspot/share/ci/ciObjectFactory.cpp ! src/hotspot/share/code/aotCodeCache.cpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/compiler/compiler_globals.hpp ! src/hotspot/share/oops/methodCounters.cpp ! src/hotspot/share/oops/methodCounters.hpp ! src/hotspot/share/oops/trainingData.cpp ! src/hotspot/share/oops/trainingData.hpp ! src/hotspot/share/opto/parse.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/runtime/stubDeclarations.hpp