[crac] RFR: Merge jdk:jdk-27+5
Timofei Pushkin
tpushkin at openjdk.org
Wed Jan 28 08:27:52 UTC 2026
Merge of mainline up to tag `jdk-27+5`.
Output of `git show --remerge-diff`: https://gist.github.com/TimPushkin/08b5f317377b4f3be0d13a83600af362
Major conflicts/changes:
- Removed a bunch of expired VM options
- Removed uses of `IgnoreCPUFeatures` as it becomes obsoleted with 27
- Sorted includes with `test/hotspot/jtreg/sources/SortIncludes.java` because there's now a test checking the include order in CI
- Replaced `snprintf` with `os::snprintf` because the use of the former now fails the build (it is marked deprecated)
- Moved code that cleans heap before checkpoint because of changes in GCs: [JDK-8368740](https://bugs.openjdk.org/browse/JDK-8368740) (Serial), [JDK-8338977](https://bugs.openjdk.org/browse/JDK-8338977) (Parallel), [JDK-8238687](https://bugs.openjdk.org/browse/JDK-8238687) (G1)
- Handled the new `HYBRID` CPU feature as not GLIBC-tunable — not sure if it is indeed not tunable (don't know how to check reliably)
- Rewrote CPU features to string conversions to use `stringStream` because of [JDK-8364128](https://bugs.openjdk.org/browse/JDK-8364128)
- Deferred initialization of `JDKFileResource.CLASSPATH_ENTRIES` until checkpoint: having it static changed the order of static initializations during VM startup from what is in the mainline in a way that class loading from CDS-archived JDK modules broke. When starting from a CDS archive, `ArchivedClassLoaders` and `BuiltinClassLoader` have a circular static-init dependency, and in CRaC the order was "wrong". I'd say that this is a CDS bug but it seems easier for us to apply this workaround, plus it improves performance when C/R is not used.
- Separated Docker code from `CracBuilder` into `CracContainerBuilder`: because of https://github.com/openjdk/jdk/pull/28557#issuecomment-3597274354 all tests that use `DockerTestUtils` now require `@modules java.base/jdk.internal.platform`, so all CRaC tests that use `CracContainerBuilder` now require it
Currently two tests that use images from https://github.com/CRaC/container-images fail in CI because the glibc-based image needs to be updated (CI now uses glibc 2.38) — I am working on that in that repo, no related changes in this repo are expected.
-------------
Commit messages:
- Merge tag 'jdk-27+5' into merge-jdk-27+5
- 8354853: Clean up x86 registers after 32-bit x86 removal
- 8373134: C2: Min/Max users of Min/Max uses should be enqueued for GVN
- 8371762: Incorrect use of checked_cast in Arguments::process_settings_file
- 8374215: [macos] Clean and fix "lic_template.plist" to correctly work with multiple languages
- 8374879: NMethodRelocationTest fails with -Xcomp after 8369150
- 8373945: Use WB.fullGC() in ClassUnloader.unloadClass to force GC for vmTestbase tests
- 8374432: TimeoutResponseBodyTest.java#retriesEnabledForResponseFailure fails run with -Xcomp
- 8373001: LauncherFromOptions.create() not properly handling FileAssociationNoExtensionsException
- 8374493: Add missing @Override annotations in "com.sun.java.swing.plaf.motif" package
- ... and 2917 more: https://git.openjdk.org/crac/compare/9616024a...f493f95e
The webrevs contain the adjustments done while merging with regards to each parent branch:
- crac: https://webrevs.openjdk.org/?repo=crac&pr=288&range=00.0
- jdk:jdk-27+5: https://webrevs.openjdk.org/?repo=crac&pr=288&range=00.1
Changes: https://git.openjdk.org/crac/pull/288/files
Stats: 825699 lines in 10640 files changed: 544358 ins; 173424 del; 107917 mod
Patch: https://git.openjdk.org/crac/pull/288.diff
Fetch: git fetch https://git.openjdk.org/crac.git pull/288/head:pull/288
PR: https://git.openjdk.org/crac/pull/288
More information about the crac-dev
mailing list