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