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 15:18:51 UTC 2018
Hi David,
On 4/25/2018 5:08 AM, David Holmes wrote:
> Hi Joe,
>
> On 25/04/2018 10:30 AM, joe darcy wrote:
>> 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.
>
> Seems very explicit that there is no requirement for Long to do
> caching. So why should that change? Or put another way what has
> changed that invalidates that clearly stated position?
>
JLS 9 changed the requirements on autobox caching going from Java SE 8 to 9:
https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.7
vs
https://docs.oracle.com/javase/specs/jls/se9/html/jls-5.html#jls-5.1.7
The Long.valueOf method is used to implement autoboxing and its caching
spec wasn't updated accordingly at the time.
Cheers,
-Joe
More information about the core-libs-dev
mailing list