On 08/13/2013 09:54 PM, Doug Lea wrote:
On 08/12/13 16:30, Mike Duigou wrote:
Hi Doug;
Several minor recent cleanups and proposed cleanups in HashMap made
me wonder how things are progressing on this work. Do you feel it's
nearly ready to integrate into the jdk8 repos? What additional work
remains? Are you tracking changes going in to the jdk8 repos?
While I haven't touched it lately (I've been distracted with a
lot of other things), last I left it, it seemed integratable.
I haven't seen any list traffic that seems applicable,
except for Remi's, that I ought to reply to...
I've noticed that Doug's version doesn't have the patch from Igor
Gerasimov that
use Integer.highestOneBit to find the power of two.
It uses the same efficient tableSizeFor method CHM has used for a decade.
Why mess with success? :-)
I've checked, Integer.highestOneBit is not an intrinsic, and uses the
same trick, so I agree :)
And that the iterators on entrySet, keySet and values doesn't have
their method
forEachRemaining overriden
(unlike java.util.ArrayList).
Are you saying that all iterators should define forEachRemaining?
Seems excessive.
All iterators for ArrayList, HashMap and their views should have
forEachRemaining,
I don't care about the other collections :)
forEachRemaining internally use local variables instead of fields as the
traditional iterator does,
so it may be faster than a plain old iterator loop. Moreover, the call
to the Consumer inside
the default method defined in Iterable can be megamorphic,
if each iterator's view have they own implementation, you create a
several of different callsites
(I know, I know, it's a kind of poor's man optimization) that mitigates
the profile pollution problem.
-Doug
Rémi
Mike
On Jul 8 2013, at 08:24 , Doug Lea wrote:
On 07/05/13 04:55, Paul Sandoz wrote:
I played with these in the lambda repo.
I needed to make the following additional change for things to
compile:
--- a/src/share/classes/java/io/ExpiringCache.java Fri Jul 05
10:04:00 2013 +0200
+++ b/src/share/classes/java/io/ExpiringCache.java Fri Jul 05
10:45:10 2013 +0200
...
Thanks to those chasing this down, now recorded as a CR at:
http://bugs.sun.com/view_bug.do?bug_id=8017219
Some might think this is a fun javac corner case to read about,
but for present purposes, the moral is that the name of
the internal LinkedHashMap.Entry class, even though it is never
exported, cannot be changed without impacting re-compilability of
some external usages. Fine. We can cope.
For people still following along, see updates at...
http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/dl/java/util/HashMap.java?view=log
http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/dl/java/util/LinkedHashMap.java?view=log