On 08/07/2013 12:23 AM, Dan Smith wrote:
On Aug 6, 2013, at 2:43 PM, Remi Forax <fo...@univ-mlv.fr> wrote:

On 08/06/2013 11:11 PM, Dan Smith wrote:
Please review this warnings cleanup.

Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022442 (not yet 
visible)
Webrev: http://cr.openjdk.java.net/~dlsmith/8022442/webrev.00/

—Dan
Hi Dan,
I've seen that you have introduce a common super interface for entry and tree 
node,
I suppose that  you check that there is no performance regression.
I wonder if an abstract class is not better than an interface because as far as 
I know
CHA implemented in hotspot doesn't work on interface
(but I may be wrong, there is perhaps a special optimization for arrays).
To make sure I understand: your concern is that an aastore will be more 
expensive when assigning to a KeyValueData[] than to an Object[] (or even to 
SomeOtherClass[])?

For what it's worth, all assignments to table[i] are statically known to be 
safe.  E.g.:

Entry<K,V> next = (Entry<K,V>) e.next;
...
table[i] = next;

So surely a smart VM only does the check once?

I was thinking (dreaming) that the VM can do no check at all because most of the time, TreeNode is not loaded.


Here are some other things that might be concerns, but don't apply here:
- interface method invocations: there are no methods in the interface to invoke
- checkcast to an interface: all the casts are to concrete classes (Entry, 
TreeBin, TreeNode)

(There are some unchecked casts from KeyValueData to KeyValueData with 
different type parameters, but I assume these don't cause any checkcasts.)

—Dan

Rémi

Reply via email to