Skip to content

Merge jdk:jdk-28+5#329

Closed
TimPushkin wants to merge 252 commits into
openjdk:cracfrom
TimPushkin:crac-merge-jdk-28+5
Closed

Merge jdk:jdk-28+5#329
TimPushkin wants to merge 252 commits into
openjdk:cracfrom
TimPushkin:crac-merge-jdk-28+5

Conversation

@TimPushkin

@TimPushkin TimPushkin commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Merges tag jdk-28+5.

Output of git show --remerge-diff
commit e9f1e224594048b8dd2ea5e937718a798042da0c
Merge: 5452791c05f db987b1e378
Author: Timofei Pushkin <tpushkin@openjdk.org>
Date:   Mon Jul 6 10:12:05 2026 +0200

    Merge tag 'jdk-28+5' into crac-merge-jdk-28+5
    
    Added tag jdk-28+5 for changeset db987b1e

diff --git a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
remerge CONFLICT (content): Merge conflict in src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
index b74a4a98d0e..1fd196dc31b 100644
--- a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
+++ b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
@@ -76,37 +76,15 @@ public class BasicImageReader implements AutoCloseable {
     private final Path imagePath;
     private final ByteOrder byteOrder;
     private final String name;
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
     private ByteBuffer memoryMap;
-    private FileChannel channel;
-||||||| f8f7ad28ba0
-    private final ByteBuffer memoryMap;
-    private final FileChannel channel;
-=======
-    private final ByteBuffer memoryMap;
     private final boolean isMemoryMapped;
-    private final FileChannel channel;
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
+    private FileChannel channel;
     private final ImageHeader header;
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
-    private final long indexSize;
+    private final int indexSize;
     private IntBuffer redirect;
     private IntBuffer offsets;
     private ByteBuffer locations;
     private ByteBuffer strings;
-||||||| f8f7ad28ba0
-    private final long indexSize;
-    private final IntBuffer redirect;
-    private final IntBuffer offsets;
-    private final ByteBuffer locations;
-    private final ByteBuffer strings;
-=======
-    private final int indexSize;
-    private final IntBuffer redirect;
-    private final IntBuffer offsets;
-    private final ByteBuffer locations;
-    private final ByteBuffer strings;
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
     private final ImageStringsReader stringsReader;
     private final Decompressor decompressor;
     private Object cracResource;
@@ -133,77 +111,15 @@ public class BasicImageReader implements AutoCloseable {
         if (map != null && MAP_ALL) {
             channel = null;
         } else {
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
             channel = openFileChannel();
             registerIfCracPresent();
-||||||| f8f7ad28ba0
-            channel = FileChannel.open(imagePath, StandardOpenOption.READ);
-            // No lambdas during bootstrap
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                @Override
-                public Void run() {
-                    if (BasicImageReader.class.getClassLoader() == null) {
-                        try {
-                            Class<?> fileChannelImpl =
-                                Class.forName("sun.nio.ch.FileChannelImpl");
-                            Method setUninterruptible =
-                                    fileChannelImpl.getMethod("setUninterruptible");
-                            setUninterruptible.invoke(channel);
-                        } catch (ClassNotFoundException |
-                                 NoSuchMethodException |
-                                 IllegalAccessException |
-                                 InvocationTargetException ex) {
-                            // fall thru - will only happen on JDK-8 systems where this code
-                            // is only used by tools using jrt-fs (non-critical.)
-                        }
-                    }
-
-                    return null;
-                }
-            });
-=======
-            channel = FileChannel.open(imagePath, StandardOpenOption.READ);
-            // No lambdas during bootstrap
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                @Override
-                public Void run() {
-                    if (isCurrentRuntimeImage) {
-                        try {
-                            Class<?> fileChannelImpl =
-                                Class.forName("sun.nio.ch.FileChannelImpl");
-                            Method setUninterruptible =
-                                    fileChannelImpl.getMethod("setUninterruptible");
-                            setUninterruptible.invoke(channel);
-                        } catch (ClassNotFoundException |
-                                 NoSuchMethodException |
-                                 IllegalAccessException |
-                                 InvocationTargetException ex) {
-                            // fall thru - will only happen on JDK-8 systems where this code
-                            // is only used by tools using jrt-fs (non-critical.)
-                        }
-                    }
-
-                    return null;
-                }
-            });
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
         }
 
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
-        // If no memory map yet and 64 bit jvm then memory map entire file
-        if (MAP_ALL && map == null) {
-            map = createMemoryMap(channel.size());
-||||||| f8f7ad28ba0
-        // If no memory map yet and 64 bit jvm then memory map entire file
-        if (MAP_ALL && map == null) {
-            map = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
-=======
         isMemoryMapped = isCurrentRuntimeImage && MAP_ALL;
 
         // If no memory map yet, runtime image, and 64 bit jvm then memory map entire file
         if (map == null && isMemoryMapped) {
-            map = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
+            map = createMemoryMap(channel.size());
         }
 
 
@@ -224,15 +140,7 @@ public class BasicImageReader implements AutoCloseable {
 
         // If no memory map yet then must be 32 bit jvm or not runtime image not previously mapped
         if (map == null) {
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
-            // Just map the image index
-            map = createMemoryMap(indexSize);
-||||||| f8f7ad28ba0
-            // Just map the image index
-            map = channel.map(FileChannel.MapMode.READ_ONLY, 0, indexSize);
-=======
             map = readDirectBuffer(indexSize);
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
         }
 
         memoryMap = map.asReadOnlyBuffer();
@@ -337,7 +245,7 @@ public class BasicImageReader implements AutoCloseable {
                     } else if ("afterRestore".equals(method.getName())) {
                         if (channel != null) {
                             channel = openFileChannel();
-                            memoryMap = createMemoryMap(MAP_ALL ? channel.size() : indexSize).asReadOnlyBuffer();
+                            memoryMap = (isMemoryMapped ? createMemoryMap(channel.size()) : readDirectBuffer(indexSize)).asReadOnlyBuffer();
                             initMappedBuffers();
                         }
                     } else if ("toString".equals(method.getName())) {
@@ -358,12 +266,13 @@ public class BasicImageReader implements AutoCloseable {
 
     @SuppressWarnings("removal")
     private FileChannel openFileChannel() throws IOException {
+        final boolean isCurrentRuntimeImage = BasicImageReader.class.getClassLoader() == null;
         FileChannel channel = FileChannel.open(imagePath, StandardOpenOption.READ);
         // No lambdas during bootstrap
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
             @Override
             public Void run() {
-                if (BasicImageReader.class.getClassLoader() == null) {
+                if (isCurrentRuntimeImage) {
                     try {
                         Class<?> fileChannelImpl =
                             Class.forName("sun.nio.ch.FileChannelImpl");
diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt
remerge CONFLICT (content): Merge conflict in test/hotspot/jtreg/ProblemList.txt
index 4f5aac769ea..7d24310b7d3 100644
--- a/test/hotspot/jtreg/ProblemList.txt
+++ b/test/hotspot/jtreg/ProblemList.txt
@@ -101,14 +101,8 @@ runtime/os/TestTracePageSizes.java#compiler-options 8267460 linux-aarch64
 runtime/os/TestTracePageSizes.java#G1 8267460 linux-aarch64
 runtime/os/TestTracePageSizes.java#Parallel 8267460 linux-aarch64
 runtime/os/TestTracePageSizes.java#Serial 8267460 linux-aarch64
-<<<<<<< 5452791c05f (8386890: [CRaC] Drop deprecated aliases of bundled engines)
 # JDK-8310862 was closed but we're still seeing errors with the updated test
 runtime/ClassInitErrors/TestStackOverflowDuringInit.java 8310862 generic-all
-runtime/StackGuardPages/TestStackGuardPagesNative.java 8303612 linux-all
-||||||| f8f7ad28ba0
-runtime/StackGuardPages/TestStackGuardPagesNative.java 8303612 linux-all
-=======
->>>>>>> db987b1e378 (8386474: Aarch64: Correct static_assert((N & (N - 1)) == 0)
 runtime/ErrorHandling/MachCodeFramesInErrorFile.java 8313315 linux-ppc64le
 runtime/NMT/VirtualAllocCommitMerge.java 8309698 linux-s390x
 runtime/Thread/TestAlwaysPreTouchStacks.java 8383372 macosx-aarch64


Progress

  • Change must not contain extraneous whitespace

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/crac.git pull/329/head:pull/329
$ git checkout pull/329

Update a local copy of the PR:
$ git checkout pull/329
$ git pull https://git.openjdk.org/crac.git pull/329/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 329

View PR using the GUI difftool:
$ git pr show -t 329

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/crac/pull/329.diff

Using Webrev

Link to Webrev Comment

Chad Rakoczy and others added 30 commits June 4, 2026 19:36
Reviewed-by: shade, kvn
…cesTree after JDK-8377070

Co-authored-by: David Beaumont <dbeaumont@openjdk.org>
Reviewed-by: alanb
…tmaps after region uncommit

Reviewed-by: aboldtch, manc
… use 24-bit immediate operands

Reviewed-by: adinn, haosun
Reviewed-by: vpaprotski, ascarpino
Reviewed-by: iris, alanb, erikj
Reviewed-by: darcy, erikj, iris
…ting 16KB per request

Reviewed-by: jpai, dfuchs
…ualAlloc2 and MapViewOfFile3

Reviewed-by: stuefe, asmehra, jsjolen
… with exit code 139

Reviewed-by: dholmes, lmesnik
…otiated.java from JDK-8356544 shows intermittent timeouts

Reviewed-by: rhalade, azeller
Co-authored-by: Doug Lea <dl@openjdk.org>
Reviewed-by: alanb
…ShenandoahHeap

Reviewed-by: wkemper, shade
…ce logging enabled

Reviewed-by: fbredberg, coleenp
Daniel D. Daugherty and others added 14 commits June 30, 2026 23:25
…iTest/TestDescription.java in virtual thread configs

8387557: ProblemList vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001/TestDescription.java in virtual thread configs
8387558: ProblemList vmTestbase/nsk/jvmti/unit/timers/JvmtiTest/TestDescription.java on windows
8387560: ProblemList vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq002/TestDescription.java in virtual thread configs

Reviewed-by: sspitsyn
…ifferent core types

Reviewed-by: dzhang, fyang
Reviewed-by: epeter, shade, chagedorn, mchevalier
Co-authored-by: Axel Boldt-Christmas <aboldtch@openjdk.org>
Reviewed-by: tschatzl, aboldtch
…ad during CDS abort

Reviewed-by: shade, dholmes
…nconsistent state

Reviewed-by: aboldtch, ayang
… in SSLAlgorithmDecomposer

Reviewed-by: abarashev, mullan
Co-authored-by: Ferenc Rakoczi <ferenc.r.rakoczi@oracle.com>
Reviewed-by: adinn, semery
Added tag jdk-28+5 for changeset db987b1
@TimPushkin

Copy link
Copy Markdown
Collaborator Author

The CI failures are known issues:

  • InterlockTest
  • CPUFeatures tests on aarch64

@bridgekeeper

bridgekeeper Bot commented Jul 6, 2026

Copy link
Copy Markdown

👋 Welcome back tpushkin! A progress list of the required criteria for merging this PR into crac will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk

openjdk Bot commented Jul 6, 2026

Copy link
Copy Markdown

@TimPushkin This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

Merge jdk:jdk-28+5

Reviewed-by: rvansa

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been no new commits pushed to the crac branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the crac branch, type /integrate in a new comment.

@openjdk openjdk Bot added ready Pull request is ready to be integrated rfr Pull request is ready for review labels Jul 6, 2026
@mlbridge

mlbridge Bot commented Jul 6, 2026

Copy link
Copy Markdown

@TimPushkin
TimPushkin requested a review from rvansa July 6, 2026 13:06
@TimPushkin

Copy link
Copy Markdown
Collaborator Author

/integrate

@openjdk

openjdk Bot commented Jul 9, 2026

Copy link
Copy Markdown

Going to push as commit 439cc2d.

@openjdk openjdk Bot added the integrated Pull request has been integrated label Jul 9, 2026
@openjdk openjdk Bot closed this Jul 9, 2026
@openjdk openjdk Bot removed ready Pull request is ready to be integrated rfr Pull request is ready for review labels Jul 9, 2026
@openjdk

openjdk Bot commented Jul 9, 2026

Copy link
Copy Markdown

@TimPushkin Pushed as commit 439cc2d.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@TimPushkin
TimPushkin deleted the crac-merge-jdk-28+5 branch July 13, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integrated Pull request has been integrated

Development

Successfully merging this pull request may close these issues.