On 11/08/2015 02:43 PM, Claes Redestad 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.

Do they have to be the same interned instances as returned from XXX.valueOf() methods? If not, then constructing new instances could be cheaper than using reflection which also triggers a bunch cache initialization (think cached Field object(s) on j.l.Class objects for wrapper classes).

Regards, Peter


Testing: verified startup/footprint improvement, various jtreg tests

/Claes

Reply via email to