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