JDK 11 RFR of 8200478: For boxing conversion javac uses Long.valueOf which does not guarantee caching according to its javadoc

joe darcy joe.darcy at oracle.com
Wed Apr 25 00:30:34 UTC 2018


Hello,

Please review the patch below to update the specification of 
Long.valueOf(long) to require caching on [-128, 127]. The JDK 
implementation of this functionality has always cached in that region, 
even though it is not required.

Additionally, please review the corresponding CSR:

         JDK-8202231: For boxing conversion javac uses Long.valueOf 
which does not guarantee caching according to its javadoc

Thanks,

-Joe

diff -r f909f09569ca src/java.base/share/classes/java/lang/Long.java
--- a/src/java.base/share/classes/java/lang/Long.java    Wed Apr 18 
21:10:09 2018 -0700
+++ b/src/java.base/share/classes/java/lang/Long.java    Tue Apr 24 
17:25:24 2018 -0700
@@ -1164,10 +1164,8 @@
       * significantly better space and time performance by caching
       * frequently requested values.
       *
-     * Note that unlike the {@linkplain Integer#valueOf(int)
-     * corresponding method} in the {@code Integer} class, this method
-     * is <em>not</em> required to cache values within a particular
-     * range.
+     * This method will always cache values in the range -128 to 127,
+     * inclusive, and may cache other values outside of this range.
       *
       * @param  l a long value.
       * @return a {@code Long} instance representing {@code l}.



More information about the core-libs-dev mailing list