On 04/27/2012 02:14 PM, Ulf Zibis wrote:
Am 23.04.2012 19:35, schrieb Rémi Forax:
Hi guys,
I've found a case where assert is harmful because it doesn't
play well with Hotspot inlining heuristic.
[...]
I think it's a good idea to comment this assert.


Hi Ulf,

While you are there:
IntegerCache.cache/high/low are static final, so should be named _upper case_.

Not done because the system property is also spelled in lower case.


Another optimization:
    public static Integer valueOf(int i) {
        if (i >= 0) {
            if (i <= IntegerCache.HIGH)
                return IntegerCache.POS[i];
        } else {
            if (i >= IntegerCache.LOW)
                return IntegerCache.NEG[~i];
        }
        return new Integer(i);
    }


Can you explain a little bit more why it's more efficient ?
Given that low and high are constant for the JIT, I'm not sure the current code
do bounds checking at all.


-Ulf


Rémi

Reply via email to