-
Enhancement
-
Resolution: Fixed
-
P4
-
None
On bootstrap we always hit a deoptimization of CHM.tabAt (which now gets compiled very early). By eagerly initializing ReservationNode we avoid this and see slightly better startup:
diff -r a09af8ef8e5c src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Thu Apr 26 12:48:35 2018 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Fri Apr 27 15:04:58 2018 +0200
@@ -6388,6 +6388,9 @@
// Reduce the risk of rare disastrous classloading in first call to
// LockSupport.park: https://bugs.openjdk.java.net/browse/JDK-8074773
- Class<?> ensureLoaded = LockSupport.class;
+ U.ensureClassInitialized(LockSupport.class);
+ // Eagerly initializing of ReservationNode avoids a few very likely deoptimizations
+ // during bootstrap:
+ U.ensureClassInitialized(ReservationNode.class);
}
}
diff -r a09af8ef8e5c src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Thu Apr 26 12:48:35 2018 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Fri Apr 27 15:04:58 2018 +0200
@@ -6388,6 +6388,9 @@
// Reduce the risk of rare disastrous classloading in first call to
// LockSupport.park: https://bugs.openjdk.java.net/browse/JDK-8074773
- Class<?> ensureLoaded = LockSupport.class;
+ U.ensureClassInitialized(LockSupport.class);
+ // Eagerly initializing of ReservationNode avoids a few very likely deoptimizations
+ // during bootstrap:
+ U.ensureClassInitialized(ReservationNode.class);
}
}