harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: [classlib[luni] Delete LinkedHashMap's un-documented method "clone()" ? (Re: [jira] Created: (HARMONY-4603) [classlib][util] LinkedHashMap.clone() has problem when override the removeEldestEntry method)
Date Wed, 08 Aug 2007 08:31:02 GMT
Jimmy,Jing Lv wrote:
>     According to Harmony-4603, there's a bug in LinkedHashMap.clone(),
> it seems RI omit something (in detail, checking removeEldestEntry() )
> while Harmony perform different. It can be fixed easily.
>     However I have another finding that, the Spec never asks
> LinkedHashMap(which extends HashMap) to override clone() but Harmony
> does, as HashMap.clone() copies entries in arrays while LinkedHashMap
> put them one by one : they appear different in behaviours.
>      Deeper look into the code, I find a way to avoid this redundant
> overriding and make Harmony exactly follow Spec. We can make a package
> method putImpl() (which already exsists in HashMap) which do some real
> work for put elements into maps, and override this putImpl in
> LinkedHashMap. In clone method we can invoke putImpl to do
> elements-copy(do different in HashMap and LinkedHashMap). In this way
> we can both fix Harmony-4603 and delete LinkedHashMap's redundant
> clone.
>      The refactor has passed testcases, I have a little concern about
> performance, it seems the older clone() in HashMap may have higher
> performance. I'll run benchmarks to determin and try to tuning if so.
>      If no objection and it still have high performance, I'll patch
> them together in Harmony-4603.

Sounds reasonable to me.  Go for the shared clone() implementation.


View raw message