On 10/06/2013 08:09 PM, Philippe Marschall wrote:
On 05.10.2013 21:57, Brian Goetz wrote:
Is there something I missed? Is this something that has been
considered?
If memory efficiency were the only metric in the world, this would be
a no-brainer. But, by having different classes for different nodes,
many many paths where the VM could prove monomorphism and thereby
inline through now become polymorphic and at best could be inline
cached.
...
Doesn't the rb-tree collision handling in HashMap already introduce
different classes for different nodes (Node and TreeNode)? Or is the
assumption there that this doesn't happen in production and therefore
does not introduce polymorphism?
The actual code carefully introduces polymorphism only if there is an
abnormal number of collisions,
either because a method hashCode() is badly written or someone tries to
DDOS the HashMap.
Cheers
Philippe
cheers,
Rémi