Review request for 6927486: Deadlock in legacy Hashtable writeObject()
stuart.marks at oracle.com
Wed Jan 5 19:47:31 UTC 2011
On 1/5/11 5:36 AM, Alan Bateman wrote:
> I've taken the liberty to generate a webrev from the changeset, just to make it
> a bit easier for folks to browse and review.
> I don't see any issues with the changes to j.u.Hashtable. You might have seen
> Stuart Mark's changes go by recently where he changed some of the existing code
> (including java.util) to use diamond. You might want to use this in these
> changes to avoid needing to re-run the tools on this code. This would also fix
> a style issue where you've got a space between the type parameters in a few
A couple things here.
First, the changeset Alan refers to is 449dfb061fde, where I used a conversion
tool to apply the diamond operator in a bunch of places. The tool applied
diamond *everywhere* that the current JDK 7 compiler supports it. It's not
clear that we actually want to use diamond everywhere that it can be used,
however, we haven't completely decided this yet.
In Hashtable.java, diamond is used in a bunch of similar places. I'd suggest
following the style that's there and using diamond in this case, the creation
of an Entry object for entryStack, e.g.
entryStack = new Entry<>(0, entry.key, entry.value, entryStack);
Second, it's not clear to me that there is a preferred style for putting spaces
in the list of type arguments. If one looks around the code base, it's quite
inconsistent. There does seem to be a moderate preference for not using spaces
when the type arguments are themselves type parameters, which are typically
single letters, e.g. Entry<K,V>. But spaces are often used when the type
arguments are concrete types that are full words, e.g. Map<String, Boolean>.
But this is moot if diamond is used in this case.
More information about the core-libs-dev