Hi Claes,

How much difference are you observing?

If it is small perhaps it’s worth waiting to see if there are much larger 
improvements we can make, as the non-obvious tight coupling also has it’s own 
cost in terms of maintenance.

Can we avoid shared secrets by doing the following?

@HotSpotIntrinsicCandidate
public static Byte valueOf(byte b) {
    if (b == 0) return ZERO;
    final int offset = 128;
    return ByteCache.cache[(int)b + offset];
}

Paul.

> On 8 Nov 2015, at 14:43, Claes Redestad <claes.redes...@oracle.com> wrote:
> 
> Hi,
> 
> indy eagerly creates and initializes all integral type caches 
> (Byte$ByteCache, Short$ShortCache) which has a small, measurable
> impact to jake startup and footprint. Exposing ZERO constants from Byte, 
> Character, etc which are guaranteed to be identical to what's
> returned from each respective valueOf(0) enables j.l.i. to initialize without 
> eagerly creating these caches:
> 
> webrev: http://cr.openjdk.java.net/~redestad/8141678/webrev.01
> bug: https://bugs.openjdk.java.net/browse/JDK-8141678
> 
> Making these constants public would allow us to not fetch them via reflection 
> for a tiny, incremental startup improvement, but I don't
> think the constants carry their own weight to motivate them becoming part of 
> public API.
> 
> Testing: verified startup/footprint improvement, various jtreg tests
> 
> /Claes

Reply via email to