RFR: 8238684: Override getOrDefault in immutable Map implementations

Remi Forax forax at univ-mlv.fr
Fri Feb 7 14:21:37 UTC 2020


Hi Claes,
looks good,
it can be written in a less Doug Lea-ish way like this

  V v = get(key);
  return (v != null)? v: default;

I believe it using the same number of bytecodes :)
with a ALOAD instead of a DUP

Rémi

----- Mail original -----
> De: "Claes Redestad" <claes.redestad at oracle.com>
> À: "core-libs-dev" <core-libs-dev at openjdk.java.net>
> Envoyé: Vendredi 7 Février 2020 13:17:40
> Objet: RFR: 8238684: Override getOrDefault in immutable Map implementations

> Hi,
> 
> in our immutable map implementations, it's unnecessary for getOrDefault
> to check containsKey(key) in case get(key) returns null. This follows
> since null values are disallowed.
> 
> Overriding the method with an implementation is a reasonable
> optimization, for example a 50% improvement on the added
> microbenchmark. I found this opportunity when looking at startup
> profiles, so yes, there's a tiny startup improvement, too. :-)
> 
> Webrev: http://cr.openjdk.java.net/~redestad/8238684/open.00/
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8238684
> 
> Testing: tier1+2 (ongoing)
> 
> Thanks!
> 
> /Claes


More information about the core-libs-dev mailing list