RFR: [6904367]: (coll) IdentityHashMap is resized before exceeding the expected maximum size (original) (raw)
Martin Buchholz martinrb at google.com
Wed Jul 9 00:46:23 UTC 2014
- Previous message: RFR: [6904367]: (coll) IdentityHashMap is resized before exceeding the expected maximum size
- Next message: RFR: [6904367]: (coll) IdentityHashMap is resized before exceeding the expected maximum size
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Let me understand - you're worried that when size is MAX_CAPACITY - 1, then a call to putAll that does not actually add any elements might throw? Well, I'm having a hard time considering that corner case a bug, given how unusable the map is at this point.
Your suggested fix of returning immediately in case of no resize would cause put to succeed and reach size == MAX_CAPACITY, which you were trying to prevent.
On Tue, Jul 8, 2014 at 5:25 PM, Ivan Gerasimov <ivan.gerasimov at oracle.com> wrote:
On 09.07.2014 3:20, Martin Buchholz wrote: I agree with Peter that we do not need to increment modCount on resize. My latest webrev is again "done". Ivan, feel free to take over.
Yes, thanks! The fix is much much better now. I think I see yet another very minor glitch, though. If the table is already of size 2 * MAXIMUMCAPACITY, and we're merging in another map, which has more elements with putAll(), resize() will be called and it will throw, even though all the elements could fit into the map due to the key duplicates. To avoid this the following check should be done first in resize(): 469 if (oldLength >= newLength) 470 return false; Sincerely yours, Ivan
- Previous message: RFR: [6904367]: (coll) IdentityHashMap is resized before exceeding the expected maximum size
- Next message: RFR: [6904367]: (coll) IdentityHashMap is resized before exceeding the expected maximum size
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]